From c27e4a5420976462e92dc579fb0664f2efad2cc9 Mon Sep 17 00:00:00 2001 From: A1300399510 <A1300399510> Date: Wed, 29 Nov 2023 12:28:01 +0800 Subject: [PATCH] no message --- css/index.css | 216 +- css/index.less | 306 +- img/hot-icon.png | Bin 0 -> 1934 bytes img/issue-bj.png | Bin 0 -> 2331 bytes img/logo.png | Bin 6157 -> 33855 bytes index.html | 175 +- js/axios.min.js | 9 + js/index.js | 452 +- js/vue.js | 12014 +++++++++++ js/vue@3.2.36.js | 15929 +++++++++++++++ node_modules/.bin/xss | 12 + node_modules/.bin/xss.cmd | 17 + node_modules/.bin/xss.ps1 | 28 + node_modules/.package-lock.json | 40 + node_modules/commander/CHANGELOG.md | 419 + node_modules/commander/LICENSE | 22 + node_modules/commander/Readme.md | 428 + node_modules/commander/index.js | 1224 ++ node_modules/commander/package.json | 38 + node_modules/commander/typings/index.d.ts | 310 + node_modules/cssfilter/LICENSE | 22 + node_modules/cssfilter/README.md | 86 + node_modules/cssfilter/lib/css.js | 110 + node_modules/cssfilter/lib/default.js | 398 + node_modules/cssfilter/lib/index.js | 32 + node_modules/cssfilter/lib/parser.js | 74 + node_modules/cssfilter/lib/util.js | 35 + node_modules/cssfilter/package.json | 49 + node_modules/mavon-editor/LICENSE | 21 + node_modules/mavon-editor/README.md | 339 + node_modules/mavon-editor/dist/css/index.css | 1 + .../mavon-editor/dist/font/fontello.eot | Bin 0 -> 15568 bytes .../mavon-editor/dist/font/fontello.svg | 72 + .../mavon-editor/dist/font/fontello.ttf | Bin 0 -> 15400 bytes .../mavon-editor/dist/font/fontello.woff | Bin 0 -> 9068 bytes .../mavon-editor/dist/font/fontello.woff2 | Bin 0 -> 7764 bytes .../dist/highlightjs/highlight.min.js | 1149 ++ .../dist/highlightjs/languages/1c.min.js | 24 + .../dist/highlightjs/languages/abnf.min.js | 11 + .../highlightjs/languages/accesslog.min.js | 13 + .../highlightjs/languages/actionscript.min.js | 17 + .../dist/highlightjs/languages/ada.min.js | 26 + .../highlightjs/languages/angelscript.min.js | 21 + .../dist/highlightjs/languages/apache.min.js | 14 + .../highlightjs/languages/applescript.min.js | 19 + .../dist/highlightjs/languages/arcade.min.js | 27 + .../dist/highlightjs/languages/arduino.min.js | 54 + .../dist/highlightjs/languages/armasm.min.js | 17 + .../highlightjs/languages/asciidoc.min.js | 35 + .../dist/highlightjs/languages/aspectj.min.js | 31 + .../highlightjs/languages/autohotkey.min.js | 14 + .../dist/highlightjs/languages/autoit.min.js | 21 + .../dist/highlightjs/languages/avrasm.min.js | 12 + .../dist/highlightjs/languages/awk.min.js | 11 + .../dist/highlightjs/languages/axapta.min.js | 10 + .../dist/highlightjs/languages/bash.min.js | 20 + .../dist/highlightjs/languages/basic.min.js | 10 + .../dist/highlightjs/languages/bnf.min.js | 6 + .../highlightjs/languages/brainfuck.min.js | 7 + .../dist/highlightjs/languages/c.min.js | 41 + .../dist/highlightjs/languages/cal.min.js | 14 + .../highlightjs/languages/capnproto.min.js | 13 + .../dist/highlightjs/languages/ceylon.min.js | 15 + .../dist/highlightjs/languages/clean.min.js | 8 + .../highlightjs/languages/clojure-repl.min.js | 4 + .../dist/highlightjs/languages/clojure.min.js | 19 + .../dist/highlightjs/languages/cmake.min.js | 7 + .../highlightjs/languages/coffeescript.min.js | 29 + .../dist/highlightjs/languages/coq.min.js | 7 + .../dist/highlightjs/languages/cos.min.js | 15 + .../dist/highlightjs/languages/cpp.min.js | 47 + .../dist/highlightjs/languages/crmsh.min.js | 19 + .../dist/highlightjs/languages/crystal.min.js | 48 + .../dist/highlightjs/languages/csharp.min.js | 47 + .../dist/highlightjs/languages/csp.min.js | 7 + .../dist/highlightjs/languages/css.min.js | 31 + .../dist/highlightjs/languages/d.min.js | 20 + .../dist/highlightjs/languages/dart.min.js | 22 + .../dist/highlightjs/languages/delphi.min.js | 17 + .../dist/highlightjs/languages/diff.min.js | 9 + .../dist/highlightjs/languages/django.min.js | 13 + .../dist/highlightjs/languages/dns.min.js | 11 + .../highlightjs/languages/dockerfile.min.js | 8 + .../dist/highlightjs/languages/dos.min.js | 12 + .../highlightjs/languages/dsconfig.min.js | 9 + .../dist/highlightjs/languages/dts.min.js | 22 + .../dist/highlightjs/languages/dust.min.js | 8 + .../dist/highlightjs/languages/ebnf.min.js | 7 + .../dist/highlightjs/languages/elixir.min.js | 33 + .../dist/highlightjs/languages/elm.min.js | 18 + .../dist/highlightjs/languages/erb.min.js | 5 + .../highlightjs/languages/erlang-repl.min.js | 13 + .../dist/highlightjs/languages/erlang.min.js | 27 + .../dist/highlightjs/languages/excel.min.js | 10 + .../dist/highlightjs/languages/fix.min.js | 7 + .../dist/highlightjs/languages/flix.min.js | 10 + .../dist/highlightjs/languages/fortran.min.js | 16 + .../dist/highlightjs/languages/fsharp.min.js | 35 + .../dist/highlightjs/languages/gams.min.js | 28 + .../dist/highlightjs/languages/gauss.min.js | 36 + .../dist/highlightjs/languages/gcode.min.js | 16 + .../dist/highlightjs/languages/gherkin.min.js | 8 + .../dist/highlightjs/languages/glsl.min.js | 8 + .../dist/highlightjs/languages/gml.min.js | 11 + .../dist/highlightjs/languages/go.min.js | 14 + .../dist/highlightjs/languages/golo.min.js | 6 + .../dist/highlightjs/languages/gradle.min.js | 5 + .../dist/highlightjs/languages/groovy.min.js | 20 + .../dist/highlightjs/languages/haml.min.js | 18 + .../highlightjs/languages/handlebars.min.js | 29 + .../dist/highlightjs/languages/haskell.min.js | 29 + .../dist/highlightjs/languages/haxe.min.js | 26 + .../dist/highlightjs/languages/hsp.min.js | 14 + .../dist/highlightjs/languages/http.min.js | 14 + .../dist/highlightjs/languages/hy.min.js | 16 + .../dist/highlightjs/languages/inform7.min.js | 11 + .../dist/highlightjs/languages/ini.min.js | 15 + .../dist/highlightjs/languages/irpf90.min.js | 15 + .../dist/highlightjs/languages/isbl.min.js | 25 + .../dist/highlightjs/languages/java.min.js | 37 + .../highlightjs/languages/javascript.min.js | 76 + .../highlightjs/languages/jboss-cli.min.js | 10 + .../dist/highlightjs/languages/json.min.js | 7 + .../highlightjs/languages/julia-repl.min.js | 5 + .../dist/highlightjs/languages/julia.min.js | 18 + .../dist/highlightjs/languages/kotlin.min.js | 45 + .../dist/highlightjs/languages/lasso.min.js | 29 + .../dist/highlightjs/languages/latex.min.js | 33 + .../dist/highlightjs/languages/ldif.min.js | 5 + .../dist/highlightjs/languages/leaf.min.js | 8 + .../dist/highlightjs/languages/less.min.js | 43 + .../dist/highlightjs/languages/lisp.min.js | 17 + .../languages/livecodeserver.min.js | 21 + .../highlightjs/languages/livescript.min.js | 35 + .../dist/highlightjs/languages/llvm.min.js | 14 + .../dist/highlightjs/languages/lsl.min.js | 19 + .../dist/highlightjs/languages/lua.min.js | 15 + .../highlightjs/languages/makefile.min.js | 14 + .../highlightjs/languages/markdown.min.js | 31 + .../highlightjs/languages/mathematica.min.js | 21 + .../dist/highlightjs/languages/matlab.min.js | 16 + .../dist/highlightjs/languages/maxima.min.js | 12 + .../dist/highlightjs/languages/mel.min.js | 8 + .../dist/highlightjs/languages/mercury.min.js | 16 + .../dist/highlightjs/languages/mipsasm.min.js | 15 + .../dist/highlightjs/languages/mizar.min.js | 4 + .../highlightjs/languages/mojolicious.min.js | 6 + .../dist/highlightjs/languages/monkey.min.js | 17 + .../highlightjs/languages/moonscript.min.js | 23 + .../dist/highlightjs/languages/n1ql.min.js | 13 + .../highlightjs/languages/nestedtext.min.js | 9 + .../dist/highlightjs/languages/nginx.min.js | 21 + .../dist/highlightjs/languages/nim.min.js | 15 + .../dist/highlightjs/languages/nix.min.js | 12 + .../highlightjs/languages/node-repl.min.js | 5 + .../dist/highlightjs/languages/nsis.min.js | 27 + .../highlightjs/languages/objectivec.min.js | 21 + .../dist/highlightjs/languages/ocaml.min.js | 14 + .../highlightjs/languages/openscad.min.js | 15 + .../dist/highlightjs/languages/oxygene.min.js | 15 + .../dist/highlightjs/languages/parser3.min.js | 10 + .../dist/highlightjs/languages/perl.min.js | 36 + .../dist/highlightjs/languages/pf.min.js | 9 + .../dist/highlightjs/languages/pgsql.min.js | 69 + .../highlightjs/languages/php-template.min.js | 8 + .../dist/highlightjs/languages/php.min.js | 37 + .../highlightjs/languages/plaintext.min.js | 4 + .../dist/highlightjs/languages/pony.min.js | 12 + .../highlightjs/languages/powershell.min.js | 39 + .../highlightjs/languages/processing.min.js | 18 + .../dist/highlightjs/languages/profile.min.js | 9 + .../dist/highlightjs/languages/prolog.min.js | 11 + .../highlightjs/languages/properties.min.js | 11 + .../highlightjs/languages/protobuf.min.js | 11 + .../dist/highlightjs/languages/puppet.min.js | 17 + .../highlightjs/languages/purebasic.min.js | 11 + .../highlightjs/languages/python-repl.min.js | 5 + .../dist/highlightjs/languages/python.min.js | 42 + .../dist/highlightjs/languages/q.min.js | 8 + .../dist/highlightjs/languages/qml.min.js | 29 + .../dist/highlightjs/languages/r.min.js | 26 + .../highlightjs/languages/reasonml.min.js | 43 + .../dist/highlightjs/languages/rib.min.js | 6 + .../highlightjs/languages/roboconf.min.js | 12 + .../highlightjs/languages/routeros.min.js | 22 + .../dist/highlightjs/languages/rsl.min.js | 10 + .../dist/highlightjs/languages/ruby.min.js | 48 + .../languages/ruleslanguage.min.js | 9 + .../dist/highlightjs/languages/rust.min.js | 29 + .../dist/highlightjs/languages/sas.min.js | 18 + .../dist/highlightjs/languages/scala.min.js | 25 + .../dist/highlightjs/languages/scheme.min.js | 19 + .../dist/highlightjs/languages/scilab.min.js | 13 + .../dist/highlightjs/languages/scss.min.js | 33 + .../dist/highlightjs/languages/shell.min.js | 5 + .../dist/highlightjs/languages/smali.min.js | 13 + .../highlightjs/languages/smalltalk.min.js | 11 + .../dist/highlightjs/languages/sml.min.js | 14 + .../dist/highlightjs/languages/sqf.min.js | 17 + .../dist/highlightjs/languages/sql.min.js | 17 + .../dist/highlightjs/languages/stan.min.js | 17 + .../dist/highlightjs/languages/stata.min.js | 11 + .../dist/highlightjs/languages/step21.min.js | 10 + .../dist/highlightjs/languages/stylus.min.js | 36 + .../dist/highlightjs/languages/subunit.min.js | 9 + .../dist/highlightjs/languages/swift.min.js | 60 + .../highlightjs/languages/taggerscript.min.js | 8 + .../dist/highlightjs/languages/tap.min.js | 7 + .../dist/highlightjs/languages/tcl.min.js | 15 + .../dist/highlightjs/languages/thrift.min.js | 12 + .../dist/highlightjs/languages/tp.min.js | 19 + .../dist/highlightjs/languages/twig.min.js | 15 + .../highlightjs/languages/typescript.min.js | 92 + .../dist/highlightjs/languages/vala.min.js | 9 + .../dist/highlightjs/languages/vbnet.min.js | 25 + .../languages/vbscript-html.min.js | 4 + .../highlightjs/languages/vbscript.min.js | 10 + .../dist/highlightjs/languages/verilog.min.js | 17 + .../dist/highlightjs/languages/vhdl.min.js | 14 + .../dist/highlightjs/languages/vim.min.js | 12 + .../dist/highlightjs/languages/wasm.min.js | 14 + .../dist/highlightjs/languages/wren.min.js | 30 + .../dist/highlightjs/languages/x86asm.min.js | 19 + .../dist/highlightjs/languages/xl.min.js | 15 + .../dist/highlightjs/languages/xml.min.js | 28 + .../dist/highlightjs/languages/xquery.min.js | 32 + .../dist/highlightjs/languages/yaml.min.js | 25 + .../dist/highlightjs/languages/zephir.min.js | 18 + .../dist/highlightjs/styles/a11y-dark.min.css | 7 + .../highlightjs/styles/a11y-light.min.css | 7 + .../dist/highlightjs/styles/agate.min.css | 20 + .../highlightjs/styles/an-old-hope.min.css | 9 + .../highlightjs/styles/androidstudio.min.css | 1 + .../highlightjs/styles/arduino-light.min.css | 1 + .../dist/highlightjs/styles/arta.min.css | 1 + .../dist/highlightjs/styles/ascetic.min.css | 1 + .../styles/atom-one-dark-reasonable.min.css | 1 + .../highlightjs/styles/atom-one-dark.min.css | 1 + .../highlightjs/styles/atom-one-light.min.css | 1 + .../highlightjs/styles/base16/3024.min.css | 7 + .../highlightjs/styles/base16/apathy.min.css | 7 + .../styles/base16/apprentice.min.css | 7 + .../highlightjs/styles/base16/ashes.min.css | 7 + .../styles/base16/atelier-cave-light.min.css | 7 + .../styles/base16/atelier-cave.min.css | 7 + .../styles/base16/atelier-dune-light.min.css | 7 + .../styles/base16/atelier-dune.min.css | 7 + .../base16/atelier-estuary-light.min.css | 7 + .../styles/base16/atelier-estuary.min.css | 7 + .../base16/atelier-forest-light.min.css | 7 + .../styles/base16/atelier-forest.min.css | 7 + .../styles/base16/atelier-heath-light.min.css | 7 + .../styles/base16/atelier-heath.min.css | 7 + .../base16/atelier-lakeside-light.min.css | 7 + .../styles/base16/atelier-lakeside.min.css | 7 + .../base16/atelier-plateau-light.min.css | 7 + .../styles/base16/atelier-plateau.min.css | 7 + .../base16/atelier-savanna-light.min.css | 7 + .../styles/base16/atelier-savanna.min.css | 7 + .../base16/atelier-seaside-light.min.css | 7 + .../styles/base16/atelier-seaside.min.css | 7 + .../base16/atelier-sulphurpool-light.min.css | 7 + .../styles/base16/atelier-sulphurpool.min.css | 7 + .../highlightjs/styles/base16/atlas.min.css | 7 + .../highlightjs/styles/base16/bespin.min.css | 7 + .../styles/base16/black-metal-bathory.min.css | 7 + .../styles/base16/black-metal-burzum.min.css | 7 + .../base16/black-metal-dark-funeral.min.css | 7 + .../base16/black-metal-gorgoroth.min.css | 7 + .../base16/black-metal-immortal.min.css | 7 + .../styles/base16/black-metal-khold.min.css | 7 + .../styles/base16/black-metal-marduk.min.css | 7 + .../styles/base16/black-metal-mayhem.min.css | 7 + .../styles/base16/black-metal-nile.min.css | 7 + .../styles/base16/black-metal-venom.min.css | 7 + .../styles/base16/black-metal.min.css | 7 + .../highlightjs/styles/base16/brewer.min.css | 7 + .../highlightjs/styles/base16/bright.min.css | 7 + .../styles/base16/brogrammer.min.css | 7 + .../styles/base16/brush-trees-dark.min.css | 7 + .../styles/base16/brush-trees.min.css | 7 + .../highlightjs/styles/base16/chalk.min.css | 7 + .../highlightjs/styles/base16/circus.min.css | 7 + .../styles/base16/classic-dark.min.css | 7 + .../styles/base16/classic-light.min.css | 7 + .../styles/base16/codeschool.min.css | 7 + .../highlightjs/styles/base16/colors.min.css | 7 + .../highlightjs/styles/base16/cupcake.min.css | 7 + .../styles/base16/cupertino.min.css | 7 + .../highlightjs/styles/base16/danqing.min.css | 7 + .../highlightjs/styles/base16/darcula.min.css | 7 + .../styles/base16/dark-violet.min.css | 7 + .../styles/base16/darkmoss.min.css | 7 + .../styles/base16/darktooth.min.css | 7 + .../highlightjs/styles/base16/decaf.min.css | 7 + .../styles/base16/default-dark.min.css | 7 + .../styles/base16/default-light.min.css | 7 + .../styles/base16/dirtysea.min.css | 7 + .../highlightjs/styles/base16/dracula.min.css | 7 + .../styles/base16/edge-dark.min.css | 7 + .../styles/base16/edge-light.min.css | 7 + .../styles/base16/eighties.min.css | 7 + .../highlightjs/styles/base16/embers.min.css | 7 + .../styles/base16/equilibrium-dark.min.css | 7 + .../base16/equilibrium-gray-dark.min.css | 7 + .../base16/equilibrium-gray-light.min.css | 7 + .../styles/base16/equilibrium-light.min.css | 7 + .../styles/base16/espresso.min.css | 7 + .../highlightjs/styles/base16/eva-dim.min.css | 7 + .../highlightjs/styles/base16/eva.min.css | 7 + .../highlightjs/styles/base16/flat.min.css | 7 + .../highlightjs/styles/base16/framer.min.css | 7 + .../styles/base16/fruit-soda.min.css | 7 + .../styles/base16/gigavolt.min.css | 7 + .../highlightjs/styles/base16/github.min.css | 7 + .../styles/base16/google-dark.min.css | 7 + .../styles/base16/google-light.min.css | 7 + .../styles/base16/grayscale-dark.min.css | 7 + .../styles/base16/grayscale-light.min.css | 7 + .../styles/base16/green-screen.min.css | 7 + .../styles/base16/gruvbox-dark-hard.min.css | 7 + .../styles/base16/gruvbox-dark-medium.min.css | 7 + .../styles/base16/gruvbox-dark-pale.min.css | 7 + .../styles/base16/gruvbox-dark-soft.min.css | 7 + .../styles/base16/gruvbox-light-hard.min.css | 7 + .../base16/gruvbox-light-medium.min.css | 7 + .../styles/base16/gruvbox-light-soft.min.css | 7 + .../styles/base16/hardcore.min.css | 7 + .../styles/base16/harmonic16-dark.min.css | 7 + .../styles/base16/harmonic16-light.min.css | 7 + .../styles/base16/heetch-dark.min.css | 7 + .../styles/base16/heetch-light.min.css | 7 + .../highlightjs/styles/base16/helios.min.css | 7 + .../styles/base16/hopscotch.min.css | 7 + .../styles/base16/horizon-dark.min.css | 7 + .../styles/base16/horizon-light.min.css | 7 + .../styles/base16/humanoid-dark.min.css | 7 + .../styles/base16/humanoid-light.min.css | 7 + .../highlightjs/styles/base16/ia-dark.min.css | 7 + .../styles/base16/ia-light.min.css | 7 + .../styles/base16/icy-dark.min.css | 7 + .../styles/base16/ir-black.min.css | 7 + .../highlightjs/styles/base16/isotope.min.css | 7 + .../highlightjs/styles/base16/kimber.min.css | 7 + .../styles/base16/london-tube.min.css | 7 + .../styles/base16/macintosh.min.css | 7 + .../styles/base16/marrakesh.min.css | 7 + .../highlightjs/styles/base16/materia.min.css | 7 + .../styles/base16/material-darker.min.css | 7 + .../styles/base16/material-lighter.min.css | 7 + .../styles/base16/material-palenight.min.css | 7 + .../styles/base16/material-vivid.min.css | 7 + .../styles/base16/material.min.css | 7 + .../styles/base16/mellow-purple.min.css | 7 + .../styles/base16/mexico-light.min.css | 7 + .../highlightjs/styles/base16/mocha.min.css | 7 + .../highlightjs/styles/base16/monokai.min.css | 7 + .../highlightjs/styles/base16/nebula.min.css | 7 + .../highlightjs/styles/base16/nord.min.css | 7 + .../highlightjs/styles/base16/nova.min.css | 7 + .../highlightjs/styles/base16/ocean.min.css | 7 + .../styles/base16/oceanicnext.min.css | 7 + .../styles/base16/one-light.min.css | 7 + .../highlightjs/styles/base16/onedark.min.css | 7 + .../styles/base16/outrun-dark.min.css | 7 + .../styles/base16/papercolor-dark.min.css | 7 + .../styles/base16/papercolor-light.min.css | 7 + .../highlightjs/styles/base16/paraiso.min.css | 7 + .../highlightjs/styles/base16/pasque.min.css | 7 + .../highlightjs/styles/base16/phd.min.css | 7 + .../highlightjs/styles/base16/pico.min.css | 7 + .../highlightjs/styles/base16/pop.min.css | 7 + .../highlightjs/styles/base16/porple.min.css | 7 + .../highlightjs/styles/base16/qualia.min.css | 7 + .../styles/base16/railscasts.min.css | 7 + .../highlightjs/styles/base16/rebecca.min.css | 7 + .../styles/base16/ros-pine-dawn.min.css | 7 + .../styles/base16/ros-pine-moon.min.css | 7 + .../styles/base16/ros-pine.min.css | 7 + .../styles/base16/sagelight.min.css | 7 + .../styles/base16/sandcastle.min.css | 7 + .../highlightjs/styles/base16/seti-ui.min.css | 7 + .../styles/base16/shapeshifter.min.css | 7 + .../styles/base16/silk-dark.min.css | 7 + .../styles/base16/silk-light.min.css | 7 + .../highlightjs/styles/base16/snazzy.min.css | 7 + .../styles/base16/solar-flare-light.min.css | 7 + .../styles/base16/solar-flare.min.css | 7 + .../styles/base16/solarized-dark.min.css | 7 + .../styles/base16/solarized-light.min.css | 7 + .../styles/base16/spacemacs.min.css | 7 + .../styles/base16/summercamp.min.css | 7 + .../styles/base16/summerfruit-dark.min.css | 7 + .../styles/base16/summerfruit-light.min.css | 7 + .../synth-midnight-terminal-dark.min.css | 7 + .../synth-midnight-terminal-light.min.css | 7 + .../highlightjs/styles/base16/tango.min.css | 7 + .../highlightjs/styles/base16/tender.min.css | 7 + .../styles/base16/tomorrow-night.min.css | 7 + .../styles/base16/tomorrow.min.css | 7 + .../styles/base16/twilight.min.css | 7 + .../styles/base16/unikitty-dark.min.css | 7 + .../styles/base16/unikitty-light.min.css | 7 + .../highlightjs/styles/base16/vulcan.min.css | 7 + .../styles/base16/windows-10-light.min.css | 7 + .../styles/base16/windows-10.min.css | 7 + .../styles/base16/windows-95-light.min.css | 7 + .../styles/base16/windows-95.min.css | 7 + .../windows-high-contrast-light.min.css | 7 + .../base16/windows-high-contrast.min.css | 7 + .../styles/base16/windows-nt-light.min.css | 7 + .../styles/base16/windows-nt.min.css | 7 + .../styles/base16/woodland.min.css | 7 + .../styles/base16/xcode-dusk.min.css | 7 + .../highlightjs/styles/base16/zenburn.min.css | 7 + .../highlightjs/styles/brown-paper.min.css | 1 + .../dist/highlightjs/styles/brown-papersq.png | Bin 0 -> 18198 bytes .../highlightjs/styles/codepen-embed.min.css | 1 + .../highlightjs/styles/color-brewer.min.css | 1 + .../dist/highlightjs/styles/dark.min.css | 1 + .../dist/highlightjs/styles/default.min.css | 9 + .../dist/highlightjs/styles/devibeans.min.css | 7 + .../dist/highlightjs/styles/docco.min.css | 1 + .../dist/highlightjs/styles/far.min.css | 1 + .../highlightjs/styles/foundation.min.css | 1 + .../styles/github-dark-dimmed.min.css | 9 + .../highlightjs/styles/github-dark.min.css | 10 + .../dist/highlightjs/styles/github.min.css | 10 + .../dist/highlightjs/styles/gml.min.css | 1 + .../highlightjs/styles/googlecode.min.css | 1 + .../highlightjs/styles/gradient-dark.min.css | 1 + .../highlightjs/styles/gradient-light.min.css | 1 + .../dist/highlightjs/styles/grayscale.min.css | 1 + .../dist/highlightjs/styles/hybrid.min.css | 1 + .../dist/highlightjs/styles/idea.min.css | 1 + .../dist/highlightjs/styles/ir-black.min.css | 1 + .../styles/isbl-editor-dark.min.css | 1 + .../styles/isbl-editor-light.min.css | 1 + .../highlightjs/styles/kimbie-dark.min.css | 1 + .../highlightjs/styles/kimbie-light.min.css | 1 + .../dist/highlightjs/styles/lightfair.min.css | 1 + .../dist/highlightjs/styles/lioshi.min.css | 1 + .../dist/highlightjs/styles/magula.min.css | 1 + .../dist/highlightjs/styles/mono-blue.min.css | 1 + .../styles/monokai-sublime.min.css | 1 + .../dist/highlightjs/styles/monokai.min.css | 1 + .../dist/highlightjs/styles/night-owl.min.css | 1 + .../dist/highlightjs/styles/nnfx-dark.min.css | 10 + .../highlightjs/styles/nnfx-light.min.css | 10 + .../dist/highlightjs/styles/nord.min.css | 1 + .../dist/highlightjs/styles/obsidian.min.css | 1 + .../highlightjs/styles/paraiso-dark.min.css | 1 + .../highlightjs/styles/paraiso-light.min.css | 1 + .../dist/highlightjs/styles/pojoaque.jpg | Bin 0 -> 1186 bytes .../dist/highlightjs/styles/pojoaque.min.css | 1 + .../dist/highlightjs/styles/purebasic.min.css | 1 + .../highlightjs/styles/qtcreator-dark.min.css | 1 + .../styles/qtcreator-light.min.css | 1 + .../dist/highlightjs/styles/rainbow.min.css | 1 + .../dist/highlightjs/styles/routeros.min.css | 1 + .../highlightjs/styles/school-book.min.css | 1 + .../styles/shades-of-purple.min.css | 1 + .../dist/highlightjs/styles/srcery.min.css | 1 + .../styles/stackoverflow-dark.min.css | 13 + .../styles/stackoverflow-light.min.css | 13 + .../dist/highlightjs/styles/sunburst.min.css | 1 + .../styles/tomorrow-night-blue.min.css | 1 + .../styles/tomorrow-night-bright.min.css | 1 + .../dist/highlightjs/styles/vs.min.css | 1 + .../dist/highlightjs/styles/vs2015.min.css | 1 + .../dist/highlightjs/styles/xcode.min.css | 1 + .../dist/highlightjs/styles/xt256.min.css | 1 + .../dist/katex/contrib/auto-render.min.js | 1 + .../dist/katex/contrib/auto-render.mjs | 215 + .../dist/katex/contrib/copy-tex.min.css | 1 + .../dist/katex/contrib/copy-tex.min.js | 1 + .../dist/katex/contrib/copy-tex.mjs | 85 + .../katex/contrib/mathtex-script-type.min.js | 1 + .../katex/contrib/mathtex-script-type.mjs | 24 + .../dist/katex/contrib/mhchem.min.js | 1 + .../dist/katex/contrib/mhchem.mjs | 3109 +++ .../katex/contrib/render-a11y-string.min.js | 1 + .../dist/katex/contrib/render-a11y-string.mjs | 741 + .../dist/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 70972 bytes .../dist/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 38868 bytes .../dist/katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 32944 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19316 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 11696 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10448 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18684 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11460 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10240 bytes .../dist/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35660 bytes .../dist/katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 22632 bytes .../dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20360 bytes .../katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34352 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22088 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19784 bytes .../dist/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60784 bytes .../dist/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35464 bytes .../dist/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 30244 bytes .../katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44496 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 25352 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 21944 bytes .../dist/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 47640 bytes .../dist/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 26228 bytes .../dist/katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 22748 bytes .../dist/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 69520 bytes .../dist/katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 38112 bytes .../dist/katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 32464 bytes .../katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39308 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 22324 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 19720 bytes .../dist/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 40992 bytes .../dist/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 22844 bytes .../dist/katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20096 bytes .../dist/katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33688 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 18516 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 15732 bytes .../katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 30960 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 17572 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15024 bytes .../katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29812 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16228 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13708 bytes .../dist/katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24620 bytes .../katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13428 bytes .../katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12064 bytes .../dist/katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12916 bytes .../dist/katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6696 bytes .../katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5592 bytes .../dist/katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12172 bytes .../dist/katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6436 bytes .../katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5392 bytes .../dist/katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8120 bytes .../dist/katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4568 bytes .../katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3728 bytes .../dist/katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11016 bytes .../dist/katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6184 bytes .../katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5028 bytes .../katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35924 bytes .../katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20260 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17272 bytes .../mavon-editor/dist/katex/katex.min.css | 1 + .../mavon-editor/dist/katex/katex.min.js | 1 + .../mavon-editor/dist/katex/katex.mjs | 17021 ++++++++++++++++ .../dist/markdown/github-markdown.min.css | 2 + .../mavon-editor/dist/mavon-editor.js | 22 + node_modules/mavon-editor/mavon-editor.d.ts | 10 + node_modules/mavon-editor/package.json | 128 + .../src/components/auto-textarea.vue | 119 + .../src/components/md-toolbar-left.vue | 750 + .../src/components/md-toolbar-right.vue | 71 + node_modules/mavon-editor/src/dev/app.vue | 354 + .../mavon-editor/src/dev/assets/config.js | 35 + .../mavon-editor/src/dev/assets/img/1.png | Bin 0 -> 2708 bytes .../mavon-editor/src/dev/assets/img/2.png | Bin 0 -> 2502 bytes .../src/dev/assets/lang/de/help_de.md | 204 + .../src/dev/assets/lang/de/words_de.json | 54 + .../src/dev/assets/lang/en/help_en.md | 204 + .../src/dev/assets/lang/en/words_en.json | 54 + .../src/dev/assets/lang/fr/help_fr.md | 204 + .../src/dev/assets/lang/fr/words_fr.json | 55 + .../src/dev/assets/lang/pt-BR/help_pt-BR.md | 204 + .../dev/assets/lang/pt-BR/words_pt-BR.json | 54 + .../src/dev/assets/lang/ru/help_ru.md | 202 + .../src/dev/assets/lang/ru/words_ru.json | 54 + .../src/dev/assets/lang/zh-CN/help_zh-CN.md | 198 + .../dev/assets/lang/zh-CN/words_zh-CN.json | 54 + .../src/dev/assets/lang/zh-TW/help_zh-TW.md | 198 + .../dev/assets/lang/zh-TW/words_zh-TW.json | 54 + node_modules/mavon-editor/src/dev/demo.vue | 34 + node_modules/mavon-editor/src/dev/editor.vue | 66 + node_modules/mavon-editor/src/dev/index.html | 12 + node_modules/mavon-editor/src/dev/index.js | 18 + node_modules/mavon-editor/src/index.js | 25 + node_modules/mavon-editor/src/lib/config.js | 79 + .../src/lib/core/extra-function.js | 538 + .../mavon-editor/src/lib/core/highlight.js | 95 + .../src/lib/core/hljs/lang.hljs.css.js | 70 + .../src/lib/core/hljs/lang.hljs.js | 322 + .../src/lib/core/keydown-listen.js | 359 + .../mavon-editor/src/lib/core/markdown.js | 90 + .../src/lib/core/onecolumn-event.js | 159 + .../mavon-editor/src/lib/core/sanitizer.js | 31 + .../mavon-editor/src/lib/core/to-markdown.js | 171 + .../mavon-editor/src/lib/css/markdown.css | 783 + .../src/lib/css/mavon-editor.styl | 297 + node_modules/mavon-editor/src/lib/css/md.css | 27 + .../mavon-editor/src/lib/css/scroll.styl | 15 + .../mavon-editor/src/lib/font/LICENSE.txt | 12 + .../mavon-editor/src/lib/font/README.txt | 75 + .../mavon-editor/src/lib/font/config.json | 196 + .../src/lib/font/css/animation.css | 85 + .../src/lib/font/css/fontello-codes.css | 32 + .../src/lib/font/css/fontello-embedded.css | 85 + .../src/lib/font/css/fontello-ie7-codes.css | 32 + .../src/lib/font/css/fontello-ie7.css | 43 + .../src/lib/font/css/fontello.css | 88 + .../mavon-editor/src/lib/font/demo.html | 353 + .../src/lib/font/font/fontello.eot | Bin 0 -> 15568 bytes .../src/lib/font/font/fontello.svg | 72 + .../src/lib/font/font/fontello.ttf | Bin 0 -> 15400 bytes .../src/lib/font/font/fontello.woff | Bin 0 -> 9068 bytes .../src/lib/font/font/fontello.woff2 | Bin 0 -> 7764 bytes .../mavon-editor/src/lib/lang/de/help_de.md | 204 + .../src/lib/lang/de/words_de.json | 54 + .../mavon-editor/src/lib/lang/en/help_en.md | 204 + .../src/lib/lang/en/words_en.json | 54 + .../mavon-editor/src/lib/lang/fr/help_fr.md | 204 + .../src/lib/lang/fr/words_fr.json | 55 + .../mavon-editor/src/lib/lang/ja/help_ja.md | 205 + .../src/lib/lang/ja/words_ja.json | 54 + .../src/lib/lang/pt-BR/help_pt-BR.md | 204 + .../src/lib/lang/pt-BR/words_pt-BR.json | 54 + .../mavon-editor/src/lib/lang/ru/help_ru.md | 202 + .../src/lib/lang/ru/words_ru.json | 54 + .../src/lib/lang/zh-CN/help_zh-CN.md | 203 + .../src/lib/lang/zh-CN/words_zh-CN.json | 54 + .../src/lib/lang/zh-TW/help_zh-TW.md | 198 + .../src/lib/lang/zh-TW/words_zh-TW.json | 54 + .../mavon-editor/src/lib/mixins/markdown.js | 154 + .../src/lib/toolbar_left_click.js | 197 + .../src/lib/toolbar_right_click.js | 92 + node_modules/mavon-editor/src/lib/util.js | 52 + .../mavon-editor/src/mavon-editor.vue | 932 + node_modules/xss/LICENSE | 23 + node_modules/xss/README.md | 508 + node_modules/xss/README.zh.md | 491 + node_modules/xss/bin/xss | 67 + node_modules/xss/dist/test.html | 15 + node_modules/xss/dist/xss.js | 1700 ++ node_modules/xss/dist/xss.min.js | 1 + node_modules/xss/lib/cli.js | 45 + node_modules/xss/lib/default.js | 459 + node_modules/xss/lib/index.js | 51 + node_modules/xss/lib/parser.js | 257 + node_modules/xss/lib/util.js | 34 + node_modules/xss/lib/xss.js | 229 + node_modules/xss/package.json | 65 + node_modules/xss/typings/xss.d.ts | 203 + package-lock.json | 45 + package.json | 5 + 643 files changed, 75279 insertions(+), 243 deletions(-) create mode 100644 img/hot-icon.png create mode 100644 img/issue-bj.png create mode 100644 js/axios.min.js create mode 100644 js/vue.js create mode 100644 js/vue@3.2.36.js create mode 100644 node_modules/.bin/xss create mode 100644 node_modules/.bin/xss.cmd create mode 100644 node_modules/.bin/xss.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/commander/CHANGELOG.md create mode 100644 node_modules/commander/LICENSE create mode 100644 node_modules/commander/Readme.md create mode 100644 node_modules/commander/index.js create mode 100644 node_modules/commander/package.json create mode 100644 node_modules/commander/typings/index.d.ts create mode 100644 node_modules/cssfilter/LICENSE create mode 100644 node_modules/cssfilter/README.md create mode 100644 node_modules/cssfilter/lib/css.js create mode 100644 node_modules/cssfilter/lib/default.js create mode 100644 node_modules/cssfilter/lib/index.js create mode 100644 node_modules/cssfilter/lib/parser.js create mode 100644 node_modules/cssfilter/lib/util.js create mode 100644 node_modules/cssfilter/package.json create mode 100644 node_modules/mavon-editor/LICENSE create mode 100644 node_modules/mavon-editor/README.md create mode 100644 node_modules/mavon-editor/dist/css/index.css create mode 100644 node_modules/mavon-editor/dist/font/fontello.eot create mode 100644 node_modules/mavon-editor/dist/font/fontello.svg create mode 100644 node_modules/mavon-editor/dist/font/fontello.ttf create mode 100644 node_modules/mavon-editor/dist/font/fontello.woff create mode 100644 node_modules/mavon-editor/dist/font/fontello.woff2 create mode 100644 node_modules/mavon-editor/dist/highlightjs/highlight.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/c.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/css.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/d.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/django.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/go.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/http.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/java.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/json.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/less.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/php.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/python.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/q.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/r.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/default.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/far.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css create mode 100644 node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js create mode 100644 node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs create mode 100644 node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js create mode 100644 node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 node_modules/mavon-editor/dist/katex/katex.min.css create mode 100644 node_modules/mavon-editor/dist/katex/katex.min.js create mode 100644 node_modules/mavon-editor/dist/katex/katex.mjs create mode 100644 node_modules/mavon-editor/dist/markdown/github-markdown.min.css create mode 100644 node_modules/mavon-editor/dist/mavon-editor.js create mode 100644 node_modules/mavon-editor/mavon-editor.d.ts create mode 100644 node_modules/mavon-editor/package.json create mode 100644 node_modules/mavon-editor/src/components/auto-textarea.vue create mode 100644 node_modules/mavon-editor/src/components/md-toolbar-left.vue create mode 100644 node_modules/mavon-editor/src/components/md-toolbar-right.vue create mode 100644 node_modules/mavon-editor/src/dev/app.vue create mode 100644 node_modules/mavon-editor/src/dev/assets/config.js create mode 100644 node_modules/mavon-editor/src/dev/assets/img/1.png create mode 100644 node_modules/mavon-editor/src/dev/assets/img/2.png create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json create mode 100644 node_modules/mavon-editor/src/dev/demo.vue create mode 100644 node_modules/mavon-editor/src/dev/editor.vue create mode 100644 node_modules/mavon-editor/src/dev/index.html create mode 100644 node_modules/mavon-editor/src/dev/index.js create mode 100644 node_modules/mavon-editor/src/index.js create mode 100644 node_modules/mavon-editor/src/lib/config.js create mode 100644 node_modules/mavon-editor/src/lib/core/extra-function.js create mode 100644 node_modules/mavon-editor/src/lib/core/highlight.js create mode 100644 node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js create mode 100644 node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js create mode 100644 node_modules/mavon-editor/src/lib/core/keydown-listen.js create mode 100644 node_modules/mavon-editor/src/lib/core/markdown.js create mode 100644 node_modules/mavon-editor/src/lib/core/onecolumn-event.js create mode 100644 node_modules/mavon-editor/src/lib/core/sanitizer.js create mode 100644 node_modules/mavon-editor/src/lib/core/to-markdown.js create mode 100644 node_modules/mavon-editor/src/lib/css/markdown.css create mode 100644 node_modules/mavon-editor/src/lib/css/mavon-editor.styl create mode 100644 node_modules/mavon-editor/src/lib/css/md.css create mode 100644 node_modules/mavon-editor/src/lib/css/scroll.styl create mode 100644 node_modules/mavon-editor/src/lib/font/LICENSE.txt create mode 100644 node_modules/mavon-editor/src/lib/font/README.txt create mode 100644 node_modules/mavon-editor/src/lib/font/config.json create mode 100644 node_modules/mavon-editor/src/lib/font/css/animation.css create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-codes.css create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello.css create mode 100644 node_modules/mavon-editor/src/lib/font/demo.html create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.eot create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.svg create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.ttf create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.woff create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.woff2 create mode 100644 node_modules/mavon-editor/src/lib/lang/de/help_de.md create mode 100644 node_modules/mavon-editor/src/lib/lang/de/words_de.json create mode 100644 node_modules/mavon-editor/src/lib/lang/en/help_en.md create mode 100644 node_modules/mavon-editor/src/lib/lang/en/words_en.json create mode 100644 node_modules/mavon-editor/src/lib/lang/fr/help_fr.md create mode 100644 node_modules/mavon-editor/src/lib/lang/fr/words_fr.json create mode 100644 node_modules/mavon-editor/src/lib/lang/ja/help_ja.md create mode 100644 node_modules/mavon-editor/src/lib/lang/ja/words_ja.json create mode 100644 node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md create mode 100644 node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json create mode 100644 node_modules/mavon-editor/src/lib/lang/ru/help_ru.md create mode 100644 node_modules/mavon-editor/src/lib/lang/ru/words_ru.json create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json create mode 100644 node_modules/mavon-editor/src/lib/mixins/markdown.js create mode 100644 node_modules/mavon-editor/src/lib/toolbar_left_click.js create mode 100644 node_modules/mavon-editor/src/lib/toolbar_right_click.js create mode 100644 node_modules/mavon-editor/src/lib/util.js create mode 100644 node_modules/mavon-editor/src/mavon-editor.vue create mode 100644 node_modules/xss/LICENSE create mode 100644 node_modules/xss/README.md create mode 100644 node_modules/xss/README.zh.md create mode 100644 node_modules/xss/bin/xss create mode 100644 node_modules/xss/dist/test.html create mode 100644 node_modules/xss/dist/xss.js create mode 100644 node_modules/xss/dist/xss.min.js create mode 100644 node_modules/xss/lib/cli.js create mode 100644 node_modules/xss/lib/default.js create mode 100644 node_modules/xss/lib/index.js create mode 100644 node_modules/xss/lib/parser.js create mode 100644 node_modules/xss/lib/util.js create mode 100644 node_modules/xss/lib/xss.js create mode 100644 node_modules/xss/package.json create mode 100644 node_modules/xss/typings/xss.d.ts create mode 100644 package-lock.json create mode 100644 package.json diff --git a/css/index.css b/css/index.css index c6b2d7f..697eab4 100644 --- a/css/index.css +++ b/css/index.css @@ -56,6 +56,10 @@ overflow: hidden; text-overflow: ellipsis; } +#answer-app { + min-width: 1200px; + overflow-x: hidden; +} #answer-app header { background: #f6f6f6; height: 150px; @@ -181,7 +185,8 @@ font-size: 14px; height: 24px; color: #333; - margin-right: 30px; + margin-right: 23px; + cursor: pointer; } #answer-app header .tab-box .tab-list .item.pitch { padding: 0 11px; @@ -190,13 +195,26 @@ font-weight: 650; color: #FFFFFF; } +#answer-app header .tab-box .tab-list .halving-line { + font-size: 14px; + color: #d7d7d7; + margin-right: 23px; +} #answer-app .main { margin: 0 auto; - height: calc(100vh - 150px); + height: calc(100vh - 167px); justify-content: center; background-color: #fbfbfb; min-width: 1200px; } +#answer-app .main .transmit-mask { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; +} #answer-app .main.mode-list { background: #fff; } @@ -206,7 +224,11 @@ #answer-app .main.mode-list .list-box .list .item { border-right: none; } +#answer-app .main.mode-list .list-box .list .item:nth-child(2) { + border-top: 1px solid #ebebeb; +} #answer-app .main .main-header { + min-width: 512px; margin: 0 auto; padding-left: calc((100vw - 1200px) / 2); display: inline-flex; @@ -221,6 +243,7 @@ font-size: 14px; height: 20px; cursor: pointer; + width: 400px; padding-right: 20px; margin-right: 20px; border-right: 1px solid #ebebeb; @@ -239,6 +262,8 @@ overflow-y: auto; overflow-x: hidden; padding-right: 15px; + scrollbar-width: none; + -ms-overflow-style: none; } #answer-app .main .list-box::-webkit-scrollbar { width: 0 !important; @@ -248,8 +273,10 @@ flex-wrap: wrap; justify-content: space-between; position: relative; + min-width: 512px; } #answer-app .main .list-box .list .item { + cursor: pointer; position: absolute; padding: 20px 0 0; transition-property: top, left, background; @@ -302,12 +329,19 @@ border-bottom: 1px dotted #ebebeb; padding-bottom: 20px; } -#answer-app .main .list-box .list .item .content .issue { +#answer-app .main .list-box .list .item .content .issue-title { + margin-bottom: 8px; +} +#answer-app .main .list-box .list .item .content .issue-title .hot-icon { + width: 16px; + height: 16px; + margin-right: 8px; +} +#answer-app .main .list-box .list .item .content .issue-title .issue { font-weight: 650; font-size: 14px; color: #000000; line-height: 22px; - margin-bottom: 8px; } #answer-app .main .list-box .list .item .content .answer { color: #555; @@ -361,6 +395,7 @@ } #answer-app .main .details-area-box { width: calc((100vw - 1200px) / 2 + 688px); + min-width: 688px; background-color: #fbfbfb; overflow-y: auto; overflow-x: hidden; @@ -372,6 +407,7 @@ padding-left: 60px; flex-direction: column; flex: 1; + position: relative; } #answer-app .main .details-area-box .details-box .close-box { height: 69px; @@ -382,6 +418,8 @@ #answer-app .main .details-area-box .details-box .close-box .close-circle { position: relative; cursor: pointer; + width: 20px; + height: 20px; } #answer-app .main .details-area-box .details-box .close-box .close-circle .close-icon { width: 20px; @@ -407,17 +445,19 @@ position: relative; } #answer-app .main .details-area-box .details-box .details-issue .icon { - position: absolute; background-color: #72db86; font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif; font-weight: 650; font-size: 13px; - width: 20px; - height: 20px; + width: 28px; + height: 28px; line-height: 20px; border-radius: 50%; color: #fff; - margin-right: 17px; + border: 4px solid #fbfbfb; + position: absolute; + top: -4px; + left: -4px; } #answer-app .main .details-area-box .details-box .details-issue .title { font-weight: 650; @@ -492,6 +532,22 @@ box-shadow: 0px 0px 11px rgba(0, 0, 0, 0.1); padding-top: 24px; margin-bottom: 21px; + position: relative; +} +#answer-app .main .details-area-box .details-box .answer-box-item .icon-box { + background-color: #62b1ff; + font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif; + font-weight: 650; + font-size: 13px; + width: 28px; + height: 28px; + line-height: 20px; + border-radius: 50%; + color: #fff; + border: 4px solid #fbfbfb; + position: absolute; + top: -4px; + left: -4px; } #answer-app .main .details-area-box .details-box .answer-box-item .answer-text { font-size: 14px; @@ -502,6 +558,7 @@ } #answer-app .main .details-area-box .details-box .answer-box-item .answer-text img { max-width: 100%; + cursor: pointer; } #answer-app .main .details-area-box .details-box .answer-box-item .operate-box { padding: 0 24px; @@ -752,6 +809,8 @@ cursor: pointer; height: 53px; position: relative; +} +#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum { z-index: 1; } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum::after { @@ -784,7 +843,6 @@ } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit { position: relative; - z-index: 1; } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box { width: 628px; @@ -799,6 +857,7 @@ background: #fff; justify-content: space-between; padding: 40px 35px 42px; + z-index: 1; } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-title { font-weight: 650; @@ -823,6 +882,7 @@ } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-url { color: #AAAAAA; + word-wrap: break-word; } #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-web-btn { width: 120px; @@ -848,14 +908,6 @@ height: 12px; margin-right: 8px; } -#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-mask { - position: fixed; - top: 0; - left: 0; - z-index: -1; - width: 100vw; - height: 100vh; -} #answer-app .main .details-area-box .details-box .copyright { font-size: 13px; color: #d7d7d7; @@ -1074,7 +1126,7 @@ #answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup { position: absolute; top: 28px; - right: 0; + right: 3px; width: 140px; height: 101px; background-color: #ffffff; @@ -1148,7 +1200,7 @@ background-color: rgba(0, 0, 0, 0.5); width: 100vw; height: 100vh; - z-index: 1; + z-index: 1000; } #answer-app .issue-box .choosing-theme { width: 530px; @@ -1180,25 +1232,23 @@ transform: translateY(-50%); } #answer-app .issue-box .choosing-theme .theme-list { - justify-content: space-between; flex-wrap: wrap; } -#answer-app .issue-box .choosing-theme .theme-list::after { - content: ""; - width: 140px; - height: 0; +#answer-app .issue-box .choosing-theme .theme-list .theme-stair-box { + flex-wrap: wrap; } #answer-app .issue-box .choosing-theme .theme-list .theme-item { - width: 140px; + width: 106px; height: 36px; background-color: #f6f6f6; border-radius: 5px; font-size: 14px; color: #333333; cursor: pointer; + margin-bottom: 10px; } -#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-last-child(-n+3)) { - margin-bottom: 20px; +#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-child(4n)) { + margin-right: 11px; } #answer-app .issue-box .choosing-theme .theme-list .theme-item:hover { color: #000000; @@ -1206,16 +1256,16 @@ } #answer-app .issue-box .issue-form { padding-top: 30px; - width: 721px; + width: 720px; height: 520px; - background-color: #fff; border-radius: 10px; position: relative; z-index: 1; + background-position: -4px -3px; } #answer-app .issue-box .issue-form .issue-bj { position: absolute; - left: -3px; + left: -4px; top: -3px; width: 727px; height: 526px; @@ -1231,8 +1281,8 @@ color: #FFFFFF; background-color: #72db86; position: absolute; - top: 0; - left: 0; + top: -1px; + left: -1px; } #answer-app .issue-box .issue-form .cross-icon { position: absolute; @@ -1253,19 +1303,22 @@ height: 80px; border-bottom: 1px dotted #ebebeb; } -#answer-app .issue-box .issue-form .issue-input input { +#answer-app .issue-box .issue-form .issue-input textarea { font-size: 18px; width: 100%; + height: 100%; + resize: none; } -#answer-app .issue-box .issue-form .issue-input input::placeholder { +#answer-app .issue-box .issue-form .issue-input textarea::placeholder { color: #AAAAAA; } #answer-app .issue-box .issue-form .issue-replenish { - width: 100%; + width: 720px; height: 330px; font-size: 14px; padding: 20px 30px; resize: none; + display: block; } #answer-app .issue-box .issue-form .issue-replenish::placeholder { color: #AAAAAA; @@ -1280,6 +1333,8 @@ -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.11764706); box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.11764706); position: relative; + display: flex; + flex-direction: column; } #answer-app .edit-answers .close-icon { width: 12px; @@ -1298,17 +1353,25 @@ padding-top: 20px; padding-left: 20px; } -#answer-app .edit-answers textarea { +#answer-app .edit-answers .question-textarea { display: block; border: none; outline: none; width: 100%; - height: 255px; font-size: 14px; color: #555555; line-height: 26px; resize: none; padding: 20px; + flex: 1; + overflow: auto; +} +#answer-app .edit-answers .question-textarea.placeholder::after { + content: "输入图文内容回答提问"; + color: #999; +} +#answer-app .edit-answers .question-textarea img { + max-width: 100%; } #answer-app .issue-bottom { justify-content: space-between; @@ -1401,7 +1464,6 @@ margin-right: 12px; } #answer-app .i-answer-box .question-middle .question-textarea { - height: 412px; width: 100%; border: none; outline: none; @@ -1416,6 +1478,80 @@ #answer-app .i-answer-box .question-middle .question-textarea img { max-width: 100%; } -a::after { - content: ""; +#answer-app .detail-image-mask { + width: 100%; + height: 100%; + max-width: none; + max-height: none; + border: none; + position: fixed; + top: 0; + left: 0; + background-color: rgba(255, 255, 255, 0.8); + z-index: 100; +} +#answer-app .detail-image-mask .detail-image { + width: 80vw; + height: 80vh; + border-radius: 8px; + background-color: #111; +} +#answer-app .detail-image-mask .detail-image .detail-img { + max-width: 100%; + max-height: 100%; +} +.box-item { + min-width: 380px; + border: 1px solid #EBEEF5; + border-radius: 4px; + position: fixed; + left: 50%; + transform: translateX(-50%); + background-color: #edf2fc; + transition: opacity 0.3s, transform 0.4s, top 0.4s; + padding: 15px 15px 15px 20px; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + z-index: 5000; +} +.box-item-success { + background-color: #f0f9eb; + border-color: #e1f3d8; + color: #67c23a; +} +.box-item-warning { + background-color: #fdf6ec; + border-color: #faecd8; + color: #e6a23c; +} +.box-item-error { + background-color: #fef0f0; + border-color: #fde2e2; + color: #f56c6c; +} +.msg-container { + display: flex; + align-items: center; + line-height: 16px; +} +.msg-container .iconfont { + margin-right: 5px; +} +.msg-enter-active { + animation: anim 0.5s; +} +.msg-leave-active { + animation: anim 0.5s reverse; +} +@keyframes anim { + 0% { + opacity: 0; + transform: translate(-50%, -200%); + } + 100% { + opacity: 1; + transform: translate(-50%, 0); + } } diff --git a/css/index.less b/css/index.less index 8deac2c..92d3407 100644 --- a/css/index.less +++ b/css/index.less @@ -70,6 +70,9 @@ } #answer-app { + min-width: 1200px; + overflow-x: hidden; + header { background: rgba(246, 246, 246, 1); height: 150px; @@ -219,7 +222,8 @@ font-size: 14px; height: 24px; color: #333; - margin-right: 30px; + margin-right: 23px; + cursor: pointer; &.pitch { padding: 0 11px; @@ -228,6 +232,13 @@ font-weight: 650; color: #FFFFFF; } + + } + + .halving-line { + font-size: 14px; + color: #d7d7d7; + margin-right: 23px; } } } @@ -236,11 +247,22 @@ .main { // width: 1200px; margin: 0 auto; - height: calc(100vh - 150px); + // height: calc(100vh - 150px); + height: calc(100vh - 167px); justify-content: center; background-color: #fbfbfb; min-width: 1200px; + .transmit-mask { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + // background-color: rgba(0, 0, 0, 0.5); + } + &.mode-list { background: #fff; @@ -251,10 +273,15 @@ .list-box .list .item { border-right: none; } + + .list-box .list .item:nth-child(2) { + border-top: 1px solid #ebebeb; + } } .main-header { // width: 1200px; + min-width: 512px; margin: 0 auto; // justify-content: space-between; padding-left: calc((100vw - 1200px) / 2); @@ -268,6 +295,7 @@ font-size: 14px; height: 20px; cursor: pointer; + width: 400px; .search-keyword-cross { width: 14px; @@ -304,14 +332,20 @@ width: 0 !important; } + scrollbar-width: none; + -ms-overflow-style: none; + + .list { display: flex; flex-wrap: wrap; justify-content: space-between; // margin: 0 auto; position: relative; + min-width: 512px; .item { + cursor: pointer; position: absolute; padding: 20px 0 0; // transition: all .5s; @@ -388,14 +422,25 @@ // width: 531px; border-bottom: 1px dotted #ebebeb; padding-bottom: 20px; + // transition: all 0.3s; - .issue { - font-weight: 650; - font-size: 14px; - color: #000000; - line-height: 22px; + + .issue-title { + .hot-icon { + width: 16px; + height: 16px; + margin-right: 8px; + } + margin-bottom: 8px; + + .issue { + font-weight: 650; + font-size: 14px; + color: #000000; + line-height: 22px; + } } .answer { @@ -465,6 +510,7 @@ .details-area-box { width: calc((100vw - 1200px) / 2 + 688px); + min-width: 688px; // min-height: 1000vh; // background-color: #72DB86; background-color: rgba(251, 251, 251, 1); @@ -480,6 +526,7 @@ padding-left: 60px; flex-direction: column; flex: 1; + position: relative; .close-box { height: 69px; @@ -490,6 +537,8 @@ .close-circle { position: relative; cursor: pointer; + width: 20px; + height: 20px; .close-icon { width: 20px; @@ -519,20 +568,36 @@ margin-bottom: 28px; position: relative; + // .icon-boxb { + // border: 4px solid #fbfbfb; + // position: absolute; + // top: -5px; + // left: -5px; + // width: 28px; + // height: 28px; + + .icon { - position: absolute; background-color: #72db86; font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif; font-weight: 650; font-size: 13px; - width: 20px; - height: 20px; + width: 28px; + height: 28px; + // width: 20px; + // height: 20px; line-height: 20px; border-radius: 50%; color: #fff; - margin-right: 17px; + border: 4px solid #fbfbfb; + position: absolute; + // margin-right: 17px; + top: -4px; + left: -4px; } + // } + .title { font-weight: 650; font-size: 18px; @@ -624,6 +689,24 @@ box-shadow: 0px 0px 11px rgb(0 0 0 / 10%); padding-top: 24px; margin-bottom: 21px; + position: relative; + + .icon-box { + background-color: #62b1ff; + font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif; + font-weight: 650; + font-size: 13px; + width: 28px; + height: 28px; + line-height: 20px; + border-radius: 50%; + color: #fff; + border: 4px solid #fbfbfb; + position: absolute; + top: -4px; + left: -4px; + } + .answer-text { font-size: 14px; @@ -634,6 +717,7 @@ img { max-width: 100%; + cursor: pointer; } } @@ -947,19 +1031,24 @@ // background-color: #333333; position: relative; - z-index: 1; + // z-index: 1; - &.commentnum::after { - content: ""; - width: 80px; - height: 100%; - background: inherit; - background-color: rgba(246, 246, 246, 1); - position: absolute; - top: 0; - left: 50%; - z-index: -1; - transform: translateX(-50%); + &.commentnum { + + z-index: 1; + + &::after { + content: ""; + width: 80px; + height: 100%; + background: inherit; + background-color: rgba(246, 246, 246, 1); + position: absolute; + top: 0; + left: 50%; + z-index: -1; + transform: translateX(-50%); + } } .operate-icon { @@ -984,7 +1073,7 @@ &.operate-transmit { position: relative; - z-index: 1; + // z-index: 1; .transmit-box { width: 628px; @@ -1001,6 +1090,7 @@ background: #fff; justify-content: space-between; padding: 40px 35px 42px; + z-index: 1; .transmit-title { font-weight: 650; @@ -1029,6 +1119,7 @@ .transmit-url { color: #AAAAAA; + word-wrap: break-word; } } @@ -1069,15 +1160,6 @@ } - .transmit-mask { - position: fixed; - top: 0; - left: 0; - // background-color:; - z-index: -1; - width: 100vw; - height: 100vh; - } } } @@ -1354,7 +1436,7 @@ .state-popup { position: absolute; top: 28px; - right: 0; + right: 3px; width: 140px; height: 101px; background-color: rgba(255, 255, 255, 1); @@ -1465,7 +1547,7 @@ background-color: rgba(0, 0, 0, 0.5); width: 100vw; height: 100vh; - z-index: 1; + z-index: 1000; } .issue-box { @@ -1503,17 +1585,19 @@ } .theme-list { - justify-content: space-between; + // justify-content: space-between; flex-wrap: wrap; - &::after { - content: ""; - width: 140px; - height: 0; + .theme-stair-box { + flex-wrap: wrap; + // border-bottom: 1px dotted #dedede; + // margin-bottom: 20px; + } + .theme-item { - width: 140px; + width: 106px; height: 36px; background-color: rgba(246, 246, 246, 1); border-radius: 5px; @@ -1521,8 +1605,10 @@ color: #333333; cursor: pointer; - &:not(:nth-last-child(-n+3)) { - margin-bottom: 20px; + margin-bottom: 10px; + + &:not(:nth-child(4n)) { + margin-right: 11px; } &:hover { @@ -1532,23 +1618,26 @@ } + } } .issue-form { padding-top: 30px; - width: 721px; + // width: 721px; // height: 520px; - width: 721px; + width: 720px; height: 520px; - background-color: #fff; + // background-color: #fff; border-radius: 10px; position: relative; z-index: 1; + // background-image: url(../img/issue-bj.svg); + background-position: -4px -3px; .issue-bj { position: absolute; - left: -3px; + left: -4px; top: -3px; width: 727px; height: 526px; @@ -1565,8 +1654,8 @@ color: #FFFFFF; background-color: #72db86; position: absolute; - top: 0; - left: 0; + top: -1px; + left: -1px; } .cross-icon { @@ -1590,9 +1679,11 @@ height: 80px; border-bottom: 1px dotted #ebebeb; - input { + textarea { font-size: 18px; width: 100%; + height: 100%; + resize: none; &::placeholder { color: #AAAAAA; @@ -1601,11 +1692,12 @@ } .issue-replenish { - width: 100%; + width: 720px; height: 330px; font-size: 14px; padding: 20px 30px; resize: none; + display: block; &::placeholder { color: #AAAAAA; @@ -1626,6 +1718,8 @@ -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.117647058823529); box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.117647058823529); position: relative; + display: flex; + flex-direction: column; .close-icon { width: 12px; @@ -1646,17 +1740,29 @@ padding-left: 20px; } - textarea { + .question-textarea { display: block; border: none; outline: none; width: 100%; - height: 255px; + // height: 255px; font-size: 14px; color: #555555; line-height: 26px; resize: none; padding: 20px; + flex: 1; + overflow: auto; + + + &.placeholder::after { + content: "输入图文内容回答提问"; + color: #999; + } + + img { + max-width: 100%; + } } } @@ -1764,7 +1870,7 @@ } .question-textarea { - height: 412px; + // height: 412px; width: 100%; border: none; outline: none; @@ -1784,9 +1890,97 @@ } } + .detail-image-mask { + width: 100%; + height: 100%; + max-width: none; + max-height: none; + border: none; + position: fixed; + top: 0; + left: 0; + background-color: rgba(255, 255, 255, 0.8); + z-index: 100; + + .detail-image { + width: 80vw; + height: 80vh; + border-radius: 8px; + background-color: #111; + + .detail-img { + max-width: 100%; + max-height: 100%; + } + } + + } + } +.box-item { + // height: 16px; + position: fixed; + min-width: 380px; + border: 1px solid #EBEEF5; + border-radius: 4px; + position: fixed; + left: 50%; + transform: translateX(-50%); + background-color: #edf2fc; + transition: opacity .3s, transform .4s, top .4s; + padding: 15px 15px 15px 20px; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + z-index: 5000; -a::after { - content: ""; + &-success { + background-color: #f0f9eb; + border-color: #e1f3d8; + color: #67c23a; + } + + &-warning { + background-color: #fdf6ec; + border-color: #faecd8; + color: #e6a23c; + } + + &-error { + background-color: #fef0f0; + border-color: #fde2e2; + color: #f56c6c; + } +} + +.msg-container { + display: flex; + align-items: center; + line-height: 16px; + + .iconfont { + margin-right: 5px; + } +} + +.msg-enter-active { + animation: anim 0.5s; +} + +.msg-leave-active { + animation: anim 0.5s reverse; +} + +@keyframes anim { + 0% { + opacity: 0; + transform: translate(-50%, -200%); + } + + 100% { + opacity: 1; + transform: translate(-50%, 0); + } } \ No newline at end of file diff --git a/img/hot-icon.png b/img/hot-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b97527c0f444352b61a555ff5818a3be395edde GIT binary patch literal 1934 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 Uz}%q2<^TWy07*qoM6N<$g4ca%6#xJL literal 0 HcmV?d00001 diff --git a/img/issue-bj.png b/img/issue-bj.png new file mode 100644 index 0000000000000000000000000000000000000000..d33b46e99b2112f70919b54eff5316ff8a35b49c GIT binary patch literal 2331 zcmV+$3FP*PP)<h;3K|Lk000e1NJLTq004FX0043b1^@s6hBhS!0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU)y-7qtRCwC#olQ&>XBfwKb{ARsa5qv# zF@b7Kj3h3kUd!4Zns}&*;VLvu(^I8A^x#45san$yvgx5;G-+&F553W7VvTZON$M^M z5=kTyK`i*O?067S5LlKz57{BZI5Y1%`}w}Z^H1Ka!_JPg^PA^$X5Ud(S64lHDT?AD z38kEXc<H#gQv{a4l4O#f4uNnnR4GK9C9v)QPp+6^EQw+)i7i!CTjAxn{%_brfU&`~ zW-=MYxQ=0&%M~lspeQNaVR&gJSL`yatgO5XFAoT;%d~6Pu4n0Vx*h)cjKI1~yLa!t z4VL>6fpuX`3YPmfBuSqWSQo0kzW#eiTz@ax8AMre$t_lYfR$7#H3Y}Jg)G)(N+c5R z@g`F~pU+cKQNcCHV#{o?$ZLFjJQ55Bud_akz+gSHSXs1x|NhwW^71*>da#aXadDAi ztSlC*EkL{-WW`%_$DvS&$%!nsv|6=$^Xb#4AG0<9HLz!4VS!w+pm0q`b93`;aJ4_M zHh^G_o|eE0uHN3>^8jtu_RIjNEUTp$Tb?*;8e_HOcVc3qW81cEzu0aBIMvnF5m=eP zW)rDVV9{i^q1xJ7Pi18#xne<;F&i&mzC6zpYsq58wOGZ>VzX9zmu0nB`uP2RvRIkK zW3{hdy&{X1&0<liswUwj=roBUixsGjH5*GyOMkFRA6SRL$_9R9WaLNI2h6~dD=xoV zHXd+eCRCA3Cja&Md|@Z<m@HNT&CkzYV!30y@<U+dinp1uv9Zgn4H?0bD;6tDMwxY@ zl$n{Cn_jQi(j6Nw!jr{HBCyB-Cl*U!CDDr)F9w{rV*)El9FE0e{j3$!=`_Vyfn%)K zr2JW12jXnPF3tu50Z&a$4Oy&g%49OP?cT@RX2=ywC;&G_G1i5eo12R<19CRB5?Jw? z6qZV*QvdNLP?S80C!baFgi=-2_AWMTQed-!ELJ|v@>nc^by;Std0?6~M$DLNx6CE7 zSeJ^x5?B&}B@tK>fh7@G64kNd$!y|jg)G+XF4pUf*q#;HUO$0#n+wkV@{Yhtq~YP= zFvVDTW2&VBfk22X)`hCAt&K3x5{j|%$>;Mm+P#k#*eNTPGb3is+D0)}vO2b>rzdE4 zPq7g!S*#qOl}IFVgg0>_uo9`JrlyUx4#ijr1<=}fp;C;Mq^`Ys^=cC<z7kjg<0k{G z_rQSz$DFufa>bIUs;cS)t0_TXB@?*eM!OkfP-YWlk}DQG#)iY;Pgoz=vSkZ_6$~6R z#saiXmK!z$ORiX8O-@cC)Sy#0Okf39b#?U_);c&n0fCjwT3K@yV++x2u40O@<*!@K zrjGYzt@SKxV_UawwS12(RzTgmcdrAiwUL!HS;bcZE1;s$Xb^NdA8RGB0;;{e{UndI zvcOV|Ep1FS8k3@5#=8)!s;aoGl{Hrgfh}Ki;<djuG&KCm+5p}q!Ln9z#R6%1dio6O z(i{pbnrmhs0xN*-+_@781Om)v1YW_h%Y?}lm(JBHCdQ+$Ta^nJF4XPVvEwhEjYDnA zzaun(S5d)w84U^VlP6EE`ThR4c@ickV96DiQ2_O49;nzh#MtUYj=`#`dK|`^ge5;s zO-*$Huuh(JaSmdqo|G4?q8qJPawU_=R^8vcx}oGSWUEW<hVfW<4Z}AvG4TPo)^B;^ zs#T*uU$7evd^RSBpq@gwA6k4dw}5mC+G_)OZH$eLb+R7%s|hcl^VF;bkFfyvx0#ul zC^=R>O-@dBY~Q~9C$4e@tP~&oo2&9po}j4yER{<2#pCf1p|jS*hY!y}tnA@(0}xMh ziK_+AieU$i?Ay1m@BaP!tvSY6QC)Q*z6+K#J(ZP}XL$cpaMd}*RTfy=9fcUHSio%o z*KuQfeEgkkt)?Gdlfg<riVeRY&`iFoUmM-s-ETl166ei+QRse+_Xy{rLU*1*!C>(E z<HwKBH8eDQxtU!rwh6JL1SfpZ2~^&eVObg!aK@d5r0V+M;9%2cg!<^wqi=TZ-1$$r zpypb~@+MW0y?gf#LelVQjxjc$_Y3iV@Vesl<<Zg62%OMyC{wzeKqxd+Cw1)l$Ye53 z;#&xI_&bO*Hxh}&Tl)B8GFWlhwmx*&II#N6hDL&2{M7BUKN^kJO;1mEgX_J<bLp+v zP>T^`t?J!2$eM3L?EQ0OWaO)(M~^;mQEhs%y1M$b6Su3CH2B1ge6!z@##o!!+j02t z;Zcl1{r&w-k^}98`h67Y&99w8MVQ5eT5_<uR#{hbbMsxS?_>ge@#4iGHW~ovU2Hb6 zZs@jZ6BZk)$76my*6hOYdRzr}`UPgah1`jBIz2EqH+QMGxA)4aQ>XB`GG<SW$}l#= zdfJ7;@xJK~rf%K3)mC3$e*&PK$me@vLqFHvuascd$*iu<E-x=%dH($Q<-WeYSXWoq zY`MV3<MHsGJ$pI<=KGKkHRhGbfOTSvu-H~AELfvfR#pa<mX-!)XJ=!F4jt+*CfK2& zp_Wi6)B+aO1^|vZjhj}&3*=5Ok_!nI&q|CV^Yils-&rWNM({~d__$5&$&3dN9*j8w zi}&v0WRu_)!;q~v!TyG`GoA$txv$t3#8L*fU6y=+$2V+nQN|O&ERDxA6o1|a2miH) z!snIgL5+w5PadtQuBxgYe9U5>nsP~WaxCrEVyW4WkwpWWD}=S|55c1K780;sx2s$S z5`p3gU5sXfkPQlSNu>t7nSqwH^P~q1?s5(A;^HFHt&1%DK3KYx+vS!WtlmXq>W^^< zGG5QZ!ovD9Pi3%9?LMS(B}Kx5)hAi#zHp!wqXi>q(Ok6#6Zf-}b*QvpjaH0SfCJq# z!qrBptr<b$(0(T)x@8It)@aFSAzJK0&<GbHqh&)4yS7}2_>2~a;Iv6Pv}HF)c;BMU z6KHlHkRC7#w*K>lxTlD~7IWuyF>f=#a-#nQ7yy3`0*cR*-C_U$002ovPDHLkV1k+r BZs7m` literal 0 HcmV?d00001 diff --git a/img/logo.png b/img/logo.png index a31c8e2ab118866db3228d11415f7cf46476139b..dc6308b13ce5182e66b943bc19ab36890c623027 100644 GIT binary patch literal 33855 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 bE|CnmSZ7C9#?r-e0Q^x?0;!RAG0*=G9d85A literal 6157 zcmV+o81m<dP)<h;3K|Lk000e1NJLTq003hE001!v1^@s6&V3hY00004XF*Lt006O% z3;baP000U}X+uL$b5ch_AW20-HZeIiHZ3wPF#rHaiJen-Sd;e_KHv9c4^~3h@UfR{ zfdC>StO&>uS)ve<0AYj>5<ta;hzeE|6%m|BRm6hT3P_!Z;-DzFXF-aHT8mX&IPM?Z zr?q{0@9pjT*ZaKZoag+`dCw1k5fUbm=Avo<IZ}l@I@lkNPe{bcy?_E0NZ<q@5a!Fm zX9dLo0Pq8Ocz$%SKl}l&ZvX-SaMdm(635~HgSt>AR{$W90N^4L=L-RlQUJ&<RLB$n z$QS^yQ?q0W0F(d#Y<YY_A^@rl0POThJ_P{Ssgv9n0NA1&sR#g#0RWjOM<fD3y8vKS zfl@32z`_8atUw|z1i-EVfLXROM*@Jo1ps!ASdb4uU;u!bLM+SxAUFa5Lmm^&10YNT zpfJ+E;Hh75g}6uo0Km(Y&6i8kGZeU$&>DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<<l*LK=WOrv#iIUe@NXhMA@Se-yo>?_01!^k@7iDG<<<jm z#{sZ)ziX*m0NPdnXy5r=GusKES_;s5`HOit{6HR_p-{*?9UKY^3+*Lhp}jEUi$4D| z;cwuJe)jx89{$^U@Bnd|K$)$;ql5i%VQzM=QjX`#1VS-x_va)2$Ay3Wjw#XNG_hPP z6^ij#iMUWAO~-k;QjtU<$(7;~>3=fuAC~<IlXndOtcFj(PPPZN%WS}Y?g0Xe4p`E5 z06>28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*<oCahecqCSQ;kB7GvdDHCB%`V;xvG zb`=}Io?-6@Bm#?o6YL0Hgb>1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{C<kTOXNNoz>kNG+sOq(0IRX`D<Z z>yT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-<hp7`Zb($s3n-)XMq%EV>(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=<EaVM7OT~%9aX!jHm=T6 zcT$f~&rx5azF+-<`eO~UhJ{9;hDf7SW4Fc`jUg7sGG*~tLe_Ft1M4hnm`!3^via;x zb_M$zb}xHOQ$usAW~^qBW}W77%>fR^vEcAI*_=wwA<hlXdo2SkKP|D=YOQ9ieyum! zdfL9)V(oJ67VYcW?{#pUK%Fd|^*U`j_jL)nHo8%|g}U2y&+0zYW9xb83H8eL4(Z*| zNA+#=qxBc+@7C|pA2%>G2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@<VyraYW!!5#VPa`A+oZ&##pJ#z&6I1JX1dX|({#+t$SmBf*sRIy zjyctwYo1}g*}U8QjfJH}oW)9uHjBrW+LnCF1(r>g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc<r?m~(zVm|qno>%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRp<RkfW^V=0{g-p?-v{J564i-!=s4I9|7+ZL_NWDl})HB~^ z{_6Q73xXDWy^yd_xUjR>xOiFd;3B_8yA~shQx|tGF<nx+WO!-t(tXQl%d(dJP~uop zRq|?i-13f6gVLp?Lo0$;G?l58$;)o8^jf)N6=9WRRqtw-)mv77Di@VstZ=NTuK2J< zxaQ(lPG8l0^?7aD+TKdH%I)h&>!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTg<ks+w!3{qxO28e_hK~{jICFzS$<)*1z3%d-D#19Thv?@09Gk zwJUg6YrRE%^={Jcg58fAVjH@@=6>C{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-<f~6^$6=oc`MR7zjdrF zqivu)p}p_ujH8_$UL8lixBq_cG2>%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet<Kwh@3`-}-^aZlnJD}~{!sJL`eVnZ&`<Y1=Y0PBFZYD=`z=Q}&j0`b zAY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF*m;eA5aGbhPJOBUy32;bRa{vGf z6951U69E94oEQKA4K7JUK~#90-JE%J)YaL?KhMPMYypxeAs`eCmS|Z7C2C2Pz6y#g z1@#r$U|m3KOKsV#T8_#h0xBR{6|D9xS}mxx7Q|L7tuK+5kU+2mDj<?T_K<xUW}g0W zCo=iXWHu5=`aS2KL+<*!_qq4k2Y@-i&wxIv%6~&~?ME$TLp!heYcFd)5ab+$0b7C7 zz;<8;5Ocl{^ehf#5Kw11lp<g>a8V$0JT~XTKLJreta%mSw5<6rAQgxUcpleeF~A<T ziE4mXfpLKCd>?QSha$iyUT*09z+fQE-yEaA8GdK!U$0Q$aX<oCGYrVKtmgo30|o^1 z{TBeJYMqFT2X+Ddfmk5JRSHDpO`w?biw{*b+fSeSfw7jlt-xP_LREG68Z07l?>#$s zeXkzj01pDc1rGUH^Il+>rEW8@4=D6Awk0f7P65jByjdNg%)<xk00scnmNDhP)j(1p zH*?<1_&;m*7}e}C&EsFk$7=%OfeOo-WxyB$WQp#@CL+^Bq`QkS2Z2dIeNYrVH|PpP zdutF80bT~WSeljrB?NFo(?>*2nm4Q8I7{`dzyu$|mIFO3b*nK135k;|!aU<}H;PZg z2=w#)8r;icv?2_F*&)t(t80ApAD$Up)%+^lUWNk4fZkr#^d_|Zl?EWir_2D-ftP?g z0aSIfh|B~=xe=|&H5ou3z}5<J+X`0$m-_1@BFVtY5a!<j<cdhQc{AfTOdQ+0Yb*Ww z0V_o09#wU^)(ivIV-$v9@Uj^$5vtl`ZM?wk-?K#Ib5&ghpsK$Ukv{<uZhaJU8vw#X z_?Td@f&hpCyoh08!JrQF(rU&IkG%ZB?<Y?e-#f_wwqTS2FhYAokZT?RHUOpG2mvjL z0kBL&@>KPG09CCHa=|u(i1?LTA~FjYAHwu&fD=IJ+!=lM^ht>H*FOwcBO*Ih^%RDM z2LlBbV-$?C);d{<5e~d2B7;@6JjeylDMX|X@U*469+(Uq4`7Othwn;wcJg%zy{!!e z#f_f<mtj==W()$J5Rso?Zup%TtqF|9|3Lt27OG3&c!QM~06l>LB2wXNU<bgjfH+It zvlxMUL{;s+22V(fO`S8n?>$!b)MVF&7v9RBhp`==vkaR9Y*E!uMC2|Y2iT1vM1iVS zg|rhFS`)%yw68okE4Y-4iI(adj9pLyd`Co_BBGWu-ZftCnsU+BzKM|@dpvZk_Q|Ci zi*teJf&aHOUjRHOB3)GV0I(Eesn-Gzcv-JnL@o|=U+t|CwK+s25ySJ{(F8n#apN>$ zUXAsj-vhoBkuHziov>`m^$E$=xhpE|`$pWJ`--Yoxwt|GXEexW3<Vw)5mD90fh?dq z@Tiy1T?<5tNO&N7>vY7xu#TRVy61tz7@@orV~x9`9C#9_oSGin`|hbp3v8C1I~;m? z)7GK|cE=e5QB@CP1g{lyF^<RPxnBUHEPb+Zy;OfJvl*R@7`I>yQg`G58-Y^b3g7`R z<CeJEi@rax&-VToMS1M|XhFmJA3t^cA6^b_HO7hRj!0m=h(rND!q`OaXu`ad+F%qR zzr+xcQ(kysdzCwUd`cXi#+?KB1%_wWV2EPf(?=KqTlB<z7yWc%dap~Y6IazZj^6x0 z?sKYIVQq6c7c&4WkwyZ~U|cR%xWCkZ(a~N;l8AI`rR|3p$DBJh0tbMTn437n(q08T z0aVYrxqIXt;}e&M*;<McrxV@wY3YK4#~rPz!>YO;!{)4*gQq_%4|oM1#$9XZXvFY^ zSj*o>FgLIaLxlNW#;n8;s_>Td-X9E1j`k3w1;ve<Zhz>=4pnXRv;Gnc;eElu8AYO1 z<E}M$vorjm*-hORhzao<oSfNosj8N^Uev{SYEi{c|EzDuE$Q(d?u*)bN6GBR^HyNw ziBG6%lZa#hnHbgI9S;NVG<O9~hGL_IauAb&0@{Wk>wy0WVcaH+U2&p$)2iBlVG%8` zAS0p6r1akF!@@kxrkM|Y9=|QKE*C(2JEsaU-qwGL$XZO`$sG$Z#^Ava_VP7CAqE6s z;RXT`@p~h^ARl9Cm#eB@|JBvQdb~d{IoiYdwE4qg-rZ3f=$aP-t3+fD<`ql=2D-I( z1J;Si1XT^zZ}l}glgt3~8h?oq%q9Lh|LPb0rcSt~*H~+P*(p1-mmCRp?F?YF>jL}` zPtNdN;O<~2bw_6-#@oPW7@q9()$x_Z10t`#ve$3I!#&y0qBZ}fygFzu8-ej^N2ux! zOl-o6r6STl*om7FDw{eVC<dMaPN}M2{?aEtV)Nks(N+zNeTQm}Z+N$I`&oR)5KOYc zJm4lE$*rv?#?}5kf5{Kt(3yzw7$*2%<gerF%LZOI?YoILTkD(b+Vu8EB|pIAG=&Ti z2~*W-5xIvm0jFk60{$11SrQaF3o)A0ZTzw)a?-*^UfOj_gctU7B)@LeV=oo%^=4^@ z0#)56BCi8h&%r7Y`HQLsm8#PjWJU$X`B$Z?HU2vPIkWt=lmW3lJSM5M=Z(H2cSBnd z!VN#hGZQ2cct%8mI^WLlGL~YDGQYQM`}&m8>7(L2{96vEI=1|!cz$(*s)#IXhi}}A z(WcyS8}Jrqj6uKX=*0LC!=n6V1Co<w8`wAI{m2NL2Y)(N(D3p-OTPLHqXA8Bj}P?% z!3guescJy3kv1j9{>_)qACw%kJSx&=br%3oTG8}w@3@E=4BJ`fs`8~3RbnjLnn1#t zpX{z!mwrW@)saYLjicb!`Jb-=zRkHKL^F~(ljh@Bmu^#;kveVP$}f)BjmR%*^qNiA zJ1$~!*(v+sy3DImT~(jr>6&iFN{kEoq`!4{Z%Q3HdT96ito5qs$GgfFWF53uV4`mA z4Q~fN3%DVW!EMf_Qm5_Pm%n{v{{u&A-xx9=cCyvw)2m1Lg^f+ly@&ree7>qaEh5J- zuJCWT_fyq!mkQ~RJxRCN@NF^Cp6n^VsPXqx=N<kS6RmT%2NZY%lRtGf=m|`9`@0Ym z$GFC=E(};JBBNBb(${3|A~X8lkktT8Irz@EW+Wv>ZR`>g*1|Uw8DX=1BRP6?-aFr# ztl493l;N49FoBvDH!BdsY1h80<yT(b%_E*&TkoityW-$7Op48HOY`d(#h`*SNqM2* zQd$xNjPGhIEnWVDF=;+?eX*-{Rc%wI?A>(Q;T&|LxY27IV90>jYx9d5Pwss6n<<z) zq~8TIf5C?%2V6F|i?=uiS^uhf_?=H`^D*&h_kAA5gi<S1wNO=yLoJy2w-qNa(MK!h z0N483PrKV0J+A#{exHQM)UQr9JmYYB-ip47k==$5>ALfS=Pp^Ps`;3BNkFJ?aDEUI zZA~qJ!qTRX$KIXy9wvi4)zZ8eqa66P<j(@@FmVregk$37F|7>>g%}?JO+m%BhiC5X zKOuW#`6>H#r>gB9haDAZlN+w?_4A#-9(rKSyuQ}V53kt!=H(9!>KE-1&u(aR)-T&| z^byQqTSKB?6oQa~KY_wWnolam>+BWh$^uUXb|+k)by=9r*8fCt<EP#_r48>sWa8NP zg4GWuP4_if!>+562K9@6+*@1T(b^~0y;*+1Ph277m_wjY)qi6W+^m=@BBQ+2pHp{8 z6tK42HUId(q#O23E-Gu9Z?}62=mCABBJaN~`K=cp?*Fzc_1*&~iW|4ZMu&MQAH`)& z*`sFcf5VlW+!62;CL-yMDBuMV@d$XG58u>HK<<U(vi8_d>xfg;_IzuH=qMYrrzcI> zy6%#bH;##J@w0$K?+*Xbz~t!5tYhqUwZHn_$%Ut#!KKHvCtTX#5Ab}6Bk__z;a9a) z)gB^}LfaG09-Fr7gl3OPsjP9l*u6{GOlybn*Yt`XlpM4F-l;twed+D;W#ptK^ht=Y zW}X9ZIKOV~!nG%|gH4ZVZ>Vanh^)Y<yzW>eB7acT+~x|w{ETe5rQ?;rZols8HiTo( znCT7&uSJB5$M5#)8=S2E%~x5s-<Zgte$gYX?d6sBBSUV<y0N56zi=1KB61%lo#$NP zB=Buj{ldLcL?SQ&sT529zXR7d=M!`o7kb!;%-=_Z%cXVo&Kzr7bd-%p?!9=VH$pg^ zs(;*3`ty=1&F`o`VQ{_H3`|~?JFdko9ks&{1At*WkHtjWM%nGULN%~dps!9ezBX&| zmzjZNikwfV>MqRh0IgUoB9}l%BL={*ou|V`WiAq7oZar*^;}isD87B+{#68!Dbhi( z2>8-c*B#@#x<FJF5$OdaSUMd%momdEa?;|P?7Ar;T&#f`0NwicvO913$)PR2B7h<i zhsk?7SFl@UhUI$%lXDeeX{weE%4W|XCrzAA9t57W+4wqFwz#ZmbK<zHd)pz5dfw3S z*pwB+cB*Z}&ZliQ#+*K_M*-^Uou?jJ^Tm??CPIMge~sxh$Vuz!bn<-O(b~Taowje2 fs-A5;qC??7P%{u>cVahm00000NkvXXu0mjf+S1c= diff --git a/index.html b/index.html index 3516369..dcd0977 100644 --- a/index.html +++ b/index.html @@ -7,13 +7,14 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="./css/index.css"> - <script src="../js文件/vue@3.2.36.js"></script> - <!-- <script src="./js/masonry.pkgd.min.js"></script> --> + <script src="./js/vue@3.2.36.js"></script> + <script src="https://app.gter.net/bottom?tpl=header&menukey=ask"></script> + <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> + </head> <body> <div class="" id="answer-app"> - <!-- <video poster="https://oss.gter.net/avatar/97KwEWQHYuMQGDnFqkimXF9SHKuGwVV5zW-tYWFjYQ~~/middle?istype=1&t=20231123103322" src="null" autoplay></video> --> <header class="flexacenter" id="pageHeader"> <div class="flexacenter top"> <img class="logo" src="./img/logo.png"> @@ -24,7 +25,7 @@ <div class="history-box" v-if="historicalSearchState" @click.stop=""> <div class="history-title">历史搜索</div> <div class="history-list"> - <div class="history-item" v-for="(item,index) in historicalSearchList" :key="index" @click.stop="handleClickHistoricalItem(item)">{{ item }}</div> + <div class="history-item ellipsis" v-for="(item,index) in historicalSearchList" :key="index" @click.stop="handleClickHistoricalItem(item)">{{ item }}</div> </div> </div> </div> @@ -41,32 +42,37 @@ </div> <div class="tab-box flexcenter" :class="{'tab-list-fixed': tabListFixeState}"> <div class="tab-list flexacenter"> - <div class="item flexcenter" :class="{'pitch': typePitch === item['id'] }" v-for="(item,index) in typeList" :key="index">{{ item['name'] }}</div> + <div class="item flexcenter" :class="{'pitch': typePitch === null }" @click="cutType(null)">All</div> + <template v-for="(item,index) in typeList" :key="index"> + <div class="halving-line">|</div> + <div class="item flexcenter" :class="{'pitch': typePitch === it['id'] }" v-for="(it,i) in item" :key="it" @click="cutType(it.id)">{{ it['name'] }}</div> + </template> </div> </div> - </header> - <!-- <div class="" v-if="keyword && list.length == 0">搜索为空</div> --> - <div class="main flexflex" :class="{'mode-list': type == 'list'}"> - <div class="list-box" :style="listBoxStyle()" @scroll="handleListScroll"> + <div class="list-box" @scroll="handleListScroll"> <div class="main-header " :style="{paddingLeft: type == 'list' ? 0 : 'calc((100vw - 1200px) / 2)'}"> <div class="search-keyword flexacenter" v-if="isSearchMode" @click="handleClickClear()"> - {{ keyword }}<img class="search-keyword-cross" src="./img/cross-circle-icon.png"> + <div class="flex1 ellipsis">{{ keywordText }}</div> + <img class="search-keyword-cross" src="./img/cross-circle-icon.png"> </div> - <div class="total grid-item" @click="cut">共 {{ total }} 条回答</div> + <div class="total grid-item" @click="cut">共 {{ total }} 条问答</div> </div> <div class="list" id="list" :style="listStyle()"> - <div class="item grid-item flexflex" v-for="(item, index) in list" :key="index" :style="itemStyle(index,item['content'])" :class="{'pitch': index === pitchIndex,'upLevel': index === pitchIndex - 1}"> + <div class="item grid-item flexflex" v-for="(item, index) in list" :key="index" :style="itemStyle(index,item['content'])" :class="{'pitch': index === pitchIndex,'upLevel': index === pitchIndex - 1}" @click.stop="getDetails(item['uniqid'],index)"> <img class="dot" src="./img/dot.svg"> <div class="content" :style="{width: type == 'list' ? '531px' : '430px'}"> - <div class="issue ellipsis" v-html="item['title']"></div> - <div class="answer ellipsis">{{ item['content'] || '' }}</div> + <div class="issue-title flexcenter"> + <img class="hot-icon" src="./img/hot-icon.png"> + <div class="issue ellipsis flex1" v-html="item['title']"></div> + </div> + <div class="answer ellipsis" v-html="item['content']"></div> <div class="bottom flexacenter"> <div class="quantity">{{ item['answers'] == 0 ? '暂无回答' : `共${ item['answers'] }个回答` }}</div> <div class="longString"></div> - <div class="answer-btn" @click.stop="getDetails(item['uniqid'],index)">我来回答</div> + <div class="answer-btn" @click.stop="getDetails(item['uniqid'],index,true)">我来回答</div> </div> </div> </div> @@ -78,9 +84,10 @@ </div> </div> - <!-- <div class="details-area-box flexflex" v-if="type == 'details'" :style="{height: 'calc(100vh - ' + pageHeaderHeight + 'px)'}"> --> - <div class="details-area-box flexflex" v-if="type == 'details'" :style="{height: pageListHeight + 'px'}"> + <div class="details-area-box flexflex" v-if="type == 'details'" @scroll="handleDetailsScroll"> <div class="details-box flexflex"> + <div class="transmit-mask" v-if="questionsTransmitMaskState" @click="closeAllTransmitState()"></div> + <div class="close-box"> <div class="close-circle flexcenter" @click="closeDetailMode()"> <img class="close-icon" src="./img/close-icon.svg" /> @@ -92,7 +99,7 @@ <div class="icon q flexcenter">Q</div> <div class="title">{{ detailsInfo['title'] }}</div> - <div class="hint" v-html="detailsInfo['content']"></div> + <div class="hint" @click="handleAnswerText" v-html="detailsInfo['content']"></div> <div class="info-box flexacenter"> <div class="user-info flexacenter"> <img class="avatar" :src="detailsInfo['avatar']"> @@ -111,18 +118,17 @@ <img class="operate-icon operate-collect-icon" :src="detailsIscollection == 0 ? './img/collect-icon.png' : './img/collect-icon-colours.svg'"> 收藏 </div> - <div class="operate-item flexacenter operate-transmit" style="z-index: 2;" @click="closeTransmitState()"> + <div class="operate-item flexacenter operate-transmit" @click="closeTransmitState()"> <img class="operate-icon operate-transmit-icon" src="./img/transmit-icon.png"> 转发 - <div class="transmit-box flexflex" v-if="questionsTransmitState" @click.stop=""> - <!-- <div class="transmit-mask" @click="closeTransmitState()"></div> --> + <div class="transmit-box flexflex" v-if="questionsTransmitState" @click.stop="" style="z-index: 1;"> <div class="transmit-left transmit-web"> <div class="transmit-title">转发网页版</div> <div class="transmit-content"> - <div class="transmit-headline">25fall!求定位,大佬帮忙解答一下~ (港,新,美)</div> - <div class="transmit-url">https://ask.gter.net/jb179020.html</div> + <div class="transmit-headline">{{ detailsInfo['title'] }}</div> + <div class="transmit-url">{{ getCurrentUrl() }}</div> </div> - <div class="transmit-web-btn flexcenter">复制链接</div> + <div class="transmit-web-btn flexcenter" @click="copyText(detailsInfo['title'] + getCurrentUrl())">复制链接</div> </div> <div class="transmit-right transmit-mini"> <div class="transmit-title">转发小程序版</div> @@ -143,7 +149,7 @@ <div class="answer-total-amount">共 {{ detailsInfo['answers'] }} 个回答</div> <!-- 回答-没有数据 --> - <div class="answer-empty-box flexcenter" v-if="answerList.length == 0"> + <div class="answer-empty-box flexcenter" v-if="answerList.length == 0 && answerPage == 0"> <div class="empty-box flexcenter"> <div class="dot-list flexacenter"> <img class="dot-item" src="./img/dot-yellow.svg" v-for="item in 3"> @@ -155,9 +161,13 @@ </div> <!-- 回答-数据 --> - <div class="answer-box-item" v-for="(item,index) in answerList" :style="{zIndex: item['transmitState'] ? 1 : 0}"> - <div class="answer-text" v-html="item['content']"></div> + <!-- <div class="answer-box-item" v-for="(item,index) in answerList" :style="{zIndex: item['transmitState'] ? 1 : 0}"> --> + <div class="answer-box-item" v-for="(item,index) in answerList"> + <div class="icon-circle-box"> + <div class="icon-box flexcenter">A</div> + </div> + <div class="answer-text" v-html="item['content']" @click="handleAnswerText"></div> <div class="info-box flexacenter"> <div class="user-info flexacenter"> <img class="avatar" :src="item['avatar']"> @@ -194,10 +204,10 @@ <div class="transmit-left transmit-web"> <div class="transmit-title">转发网页版</div> <div class="transmit-content"> - <div class="transmit-headline">25fall!求定位,大佬帮忙解答一下~ (港,新,美)</div> - <div class="transmit-url">https://ask.gter.net/jb179020.html</div> + <div class="transmit-headline">{{ detailsInfo['title'] }}</div> + <div class="transmit-url">{{ getCurrentUrl() }}</div> </div> - <div class="transmit-web-btn flexcenter">复制链接</div> + <div class="transmit-web-btn flexcenter" @click="copyText(detailsInfo['title'] + getCurrentUrl())">复制链接</div> </div> <div class="transmit-right transmit-mini"> <div class="transmit-title">转发小程序版</div> @@ -289,7 +299,7 @@ </div> </div> <div class="comments-also flexacenter" v-if="it['childnum'] >= 3 && it['childnum'] != it['child'].length" @click="alsoCommentsData(index,ind)"> - <div class="">还有{{ it['childnum'] - 3 }}条回复</div> + <div class="">还有{{ it['childnum'] - 1 }}条回复</div> <img class="also-icon" src="./img/arrow-circular-gray.png" /> </div> </div> @@ -313,9 +323,6 @@ </div> <div class="empty-hint">和我说说你的想法或疑问吧</div> </div> - - - </template> </div> @@ -346,13 +353,13 @@ <div class="popover-box flexflex"> <img class="cross-icon" src="./img/cross-icon.png" @click="myType = ''"> <div class="tab-list flexcenter"> - <div class="tab-item flexacenter" :class="{'pitch': myType == 'collect'}" @click="handleMy('collect')">我的收藏 <div class="quantity">{{ myCollectionCount || 0}}</div> + <div class="tab-item flexacenter" :class="{'pitch': myType == 'collect'}" @click="handleMy('collect')">我的收藏 <div class="quantity">{{ myCollectionCount || myCount['collect'] || 0 }}</div> </div> <div class="long-string"></div> - <div class="tab-item flexacenter" :class="{'pitch': myType == 'answers'}" @click="handleMy('answers')">我的回答 <div class="quantity">{{ myAnswerCount }}</div> + <div class="tab-item flexacenter" :class="{'pitch': myType == 'answers'}" @click="handleMy('answers')">我的回答 <div class="quantity">{{ myAnswerCount || myCount['answer'] || 0 }}</div> </div> <div class="long-string"></div> - <div class="tab-item flexacenter" :class="{'pitch': myType == 'questions'}" @click="handleMy('questions')">我的提问 <div class="quantity">{{ myQuestionsCount }}</div> + <div class="tab-item flexacenter" :class="{'pitch': myType == 'questions'}" @click="handleMy('questions')">我的提问 <div class="quantity">{{ myQuestionsCount || myCount['questions'] || 0 }}</div> </div> </div> <div class="empty-box flexcenter" v-if="(myType == 'collect' && myCollectionList.length == 0) || (myType == 'answers' && myAnswerList.length == 0) || (myType == 'questions' && myQuestionsList.length == 0)"> @@ -367,8 +374,8 @@ <img class="empty-icon" src="./img/empty-icon.svg"> <div class="empty-hint">暂无内容</div> </div> - <div class="content-box collect-list" v-if="myType == 'collect'" @scroll="handleCollectionScroll"> - <div class="item flexflex" v-for="(item,index) in myCollectionList" :key="item"> + <div class="content-box collect-list" v-if="myType == 'collect' && myCollectionList.length != 0" @scroll="handleCollectionScroll"> + <div class="item flexflex" v-for="(item,index) in myCollectionList" :key="item" @click.stop="myOpenDetails(item)"> <template v-if="item.type == 'askanswercollection'"> <div class="icon a flexcenter">A</div> <div class="centre flexflex flex1"> @@ -376,7 +383,7 @@ <div class="text ellipsis">提问:{{ item['data']['title'] }}</div> </div> <div class="delete-box flexacenter"> - <img class="delete-icon" @click="cancelCollection(item['token'],index)" src="./img/delete-icon.svg"> + <img class="delete-icon" @click.stop="cancelCollection(item['token'],index)" src="./img/delete-icon.svg"> </div> </template> <template v-else> @@ -386,14 +393,14 @@ <div class="text ellipsis">{{ item['data']['answers'] > 0 ? `共${ item['data']['answers'] }个回答` : '暂无回答'}}</div> </div> <div class="delete-box flexacenter"> - <img class="delete-icon" @click="cancelCollection(item['token'],index)" src="./img/delete-icon.svg"> + <img class="delete-icon" @click.stop="cancelCollection(item['token'],index)" src="./img/delete-icon.svg"> </div> </template> </div> </div> - <div class="content-box answers-list" v-if="myType == 'answers'" @scroll="handleAnswersScroll"> - <div class="item flexflex" v-for="(item,index) in myAnswerList" :key="item"> + <div class="content-box answers-list" v-if="myType == 'answers' && myAnswerList.length != 0" @scroll="handleAnswersScroll"> + <div class="item flexflex" v-for="(item,index) in myAnswerList" :key="item" @click.stop="myOpenDetails(item)"> <div class="icon a flexcenter">A</div> <!-- <div class="icon a flexcenter">A</div> --> <div class="centre flexflex flex1"> @@ -405,7 +412,7 @@ <div class="text ellipsis">提问:{{ item['title'] }}</div> </div> <div class="operate-box flexacenter"> - <div class="state-box flexacenter" @click="cutAnswerPopupState(index)"> + <div class="state-box flexacenter" @click.stop="cutAnswerPopupState(index)"> <div class="text">{{ item['anonymous'] == 0 ? '公开' : '匿名' }}</div> <img class="arrows" src="./img/arrows-icon.svg"> <div class="state-popup flexflex" v-if="item['popupState']"> @@ -420,37 +427,37 @@ </div> </div> </div> - <img class="edit-icon" @click="openIAnswer(index,'my')" src="./img/edit-icon.png"> + <img class="edit-icon" @click.stop="openIAnswer(index,'my')" src="./img/edit-icon.png"> </div> </div> </div> - <div class="content-box questions-list" v-if="myType == 'questions' && myQuestionsList.length != 0"> - <div class="item flexflex" v-for="item in myQuestionsList" :key="item"> + <div class="content-box questions-list" v-if="myType == 'questions' && myQuestionsList.length != 0" @scroll="handleQuestionsScroll"> + <div class="item flexflex" v-for="(item,index) in myQuestionsList" :key="item" @click.stop="myOpenDetails(item)"> <div class="icon q flexcenter">Q</div> - <!-- <div class="icon a flexcenter">A</div> --> <div class="centre flexflex flex1"> <div class="info flexacenter"> - <div class="name">Ada.Wu</div> - <div class="time">1小时前</div> + <div class="name">{{ item['nickname'] }}</div> + <div class="time">{{ handleDate(item['publicationdate']) }}</div> </div> - <div class="title ellipsis">关于港大RP和HKFPS的RP部分能否有相同的部分内容?</div> + <div class="title ellipsis">{{ item['title'] }}</div> <div class="text flexacenter"> - <div class="new-answer flexacenter">有1个新回答 <div class="long-string"></div> + <div class="new-answer flexacenter" v-if="item['authornewnum'] > 0">有{{ item['authornewnum'] }}个新回答 <div class="long-string"></div> </div> - 暂无回答 + + {{ item['answers'] == 0 ? '暂无回答' : `共${item['answers']}个回答`}} </div> </div> <div class="operate-box flexacenter"> - <div class="state-box flexacenter"> - <div class="text">公开</div> + <div class="state-box flexacenter" @click.stop="cutQuestionsPopupState(index)"> + <div class="text">{{ item['anonymous'] == 0 ? '公开' : '匿名' }}</div> <img class="arrows" src="./img/arrows-icon.svg"> - <div class="state-popup flexflex" v-if="false"> - <div class="state-popup-item flexacenter flex1 pitch"> + <div class="state-popup flexflex" v-if="item['popupState']"> + <div class="state-popup-item flexacenter flex1" :class="{'pitch': item['anonymous'] == 0 }" @click.stop="changeAnonymousQuestions(item['token'], 0,index)"> <div class="">公开发表</div> <img class="state-popup-icon" src="./img/tick-orange.svg"> </div> - <div class="state-popup-item flexacenter flex1"> - <div class="">公开发表</div> + <div class="state-popup-item flexacenter flex1" :class="{'pitch': item['anonymous'] == 1 }" @click.stop="changeAnonymousQuestions(item['token'], 1,index)"> + <div class="">匿名发表</div> <img class="state-popup-icon" src="./img/tick-orange.svg"> </div> </div> @@ -464,20 +471,32 @@ <!-- 我要提问 --> <div class="popover-mask flexcenter issue-box" v-if="questionsSetp"> <!-- 第一步 --> - <div class="choosing-theme" v-if="questionsSetp == 1"> + <!-- <div class="choosing-theme" v-if="questionsSetp == 1"> <div class="title">选择提问所属主题</div> <div class="theme-list flexflex"> <div class="theme-item flexcenter" v-for="item in questionsTypeList" :key="item.id" @click="choosingTheme(item.id)">{{ item.name }}</div> </div> + </div> --> + + <div class="choosing-theme" v-if="questionsSetp == 1"> + <div class="title">选择提问所属主题</div> + <div class="theme-list flexflex"> + <div class="theme-stair-box flexflex" v-for="(item,index) in questionsTypeList"> + <div class="theme-item flexcenter" v-for="item in item" :key="item.id" @click="choosingTheme(item.id)">{{ item.name }}</div> + <!-- <div class="halving-line"></div> --> + </div> + </div> </div> <!-- 第二步 --> <div class="issue-form" v-else> - <!-- <img class="issue-bj" src="./img/issue-bj.svg"> --> - <!-- <div class="flexcenter q">Q</div> --> + <!-- <img class="issue-bj" src="./img/issue-bj.png"> --> + <img class="issue-bj" src="./img/issue-bj.svg"> + <div class="flexcenter q">Q</div> <img class="cross-icon" @click="cutQuestionsSetp(0)" src="./img/cross-icon.png"> <div class="issue-input"> - <input class="" v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾" /> + <textarea v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾"></textarea> + <!-- <input class="" v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾" /> --> </div> <textarea class="issue-replenish" v-model="questionsObj.content" placeholder="欢迎对问题补充说明,清晰表达问题的关键点,可获得更有效的解答(非必填)"></textarea> <div class="issue-bottom flexacenter"> @@ -497,9 +516,10 @@ <div class="edit-answers"> <img class="close-icon" src="./img/cross-icon.png" @click="closeIAnswer"> <div class="title">编辑回答</div> - <textarea placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea> + <!-- <textarea placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea> --> + <div class="question-textarea" :class="{'placeholder': questionPlaceholderState}" contenteditable="true" @paste="handlePaste" v-html="IAnswerInfo['text']" @input="handleInput"></div> <div class="issue-bottom flexacenter"> - <div class="option-box flexacenter"> + <div class="option-box flexacenter" @click="amendIAnswer"> <img class="option-icon" v-if="IAnswerInfo['anonymous'] == 0" src="./img/tick-no.svg"> <img class="option-icon" v-else src="./img/tick-option.svg"> 匿名发表 @@ -522,7 +542,6 @@ </div> <div class="question-middle flexflex"> <div class="question-icon flexcenter">A</div> - <!-- <textarea class="question-textarea flex1" placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea> --> <div class="question-textarea" :class="{'placeholder': questionPlaceholderState}" contenteditable="true" @paste="handlePaste" v-html="IAnswerInfo['text']" @input="handleInput"></div> </div> @@ -539,9 +558,31 @@ </div> + <!-- 提示框 --> + <transition name="msg" appear v-show="msg['state']"> + <!-- <div :class="['box-item', boxClass]" v-if="" :style="{top: info.top + 'px'}"> --> + <div class="box-item" :class="boxClass()" :style="{top: 20 + 'px'}"> + <div class="msg-container"> + <!-- <i :class="['iconfont', iconClass]"></i> --> + {{ msg['text'] }} + </div> + </div> + </transition> + + <!-- 大图 --> + <div class="detail-image-mask flexcenter" v-if="dialogSrc" @click="dialogSrc = ''"> + <div class="detail-image flexcenter"> + <img class="detail-img" :src="dialogSrc"> + </div> + </div> + + + </div> - <script src="../js文件/axios.min.js"></script> + <script src="./js/axios.min.js"></script> <script src="./js/index.js"></script> + <script src="https://app.gter.net/bottom?tpl=footer"></script> + </body> </html> \ No newline at end of file diff --git a/js/axios.min.js b/js/axios.min.js new file mode 100644 index 0000000..0f36816 --- /dev/null +++ b/js/axios.min.js @@ -0,0 +1,9 @@ +/* axios v0.19.0 | (c) 2019 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(5),a=n(22),u=n(11),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(10),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"[object ArrayBuffer]"===j.call(e)}function s(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function p(e){return"[object Date]"===j.call(e)}function d(e){return"[object File]"===j.call(e)}function l(e){return"[object Blob]"===j.call(e)}function h(e){return"[object Function]"===j.call(e)}function m(e){return f(e)&&h(e.pipe)}function y(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function g(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function x(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}function w(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=w(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)v(arguments[n],e);return t}function b(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=b(t[n],e):"object"==typeof e?t[n]=b({},e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)v(arguments[n],e);return t}function E(e,t,n){return v(t,function(t,r){n&&"function"==typeof t?e[r]=S(t,n):e[r]=t}),e}var S=n(3),R=n(4),j=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:o,isBuffer:R,isFormData:s,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:c,isDate:p,isFile:d,isBlob:l,isFunction:h,isStream:m,isURLSearchParams:y,isStandardBrowserEnv:x,forEach:v,merge:w,deepMerge:b,extend:E,trim:g}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t){/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(6),i=n(7),a=n(8),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(9),i=n(10),a=n(11),u=n(20),c=n(21);e.exports=function(e){r(e),e.baseURL&&!u(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?e=n(13):"undefined"!=typeof XMLHttpRequest&&(e=n(13)),e}var s=n(2),i=n(12),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(14),s=n(6),i=n(17),a=n(18),u=n(15);e.exports=function(e){return new Promise(function(t,c){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",h=e.auth.password||"";p.Authorization="Basic "+btoa(l+":"+h)}if(d.open(e.method.toUpperCase(),s(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?i(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,s={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,s),d=null}},d.onabort=function(){d&&(c(u("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(u("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(u("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(19),y=(e.withCredentials||a(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),c(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(16);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/js/index.js b/js/index.js index b38ca74..5902d64 100644 --- a/js/index.js +++ b/js/index.js @@ -1,3 +1,8 @@ +// 提交问题 +// 切换头部分类 +// 转发的链接和title +// 图片上传有一些错误 + Object.assign(window, Vue) const forumApp = Vue.createApp({ setup() { @@ -6,31 +11,53 @@ const forumApp = Vue.createApp({ let type = ref('list') // list details onMounted(() => { + getUrlParams() getUserData() getList() getListClass() window.addEventListener('scroll', handleScroll); getHistoricalSearchList() + + }) onUnmounted(() => { window.removeEventListener('scroll', handleScroll); }); + let initParams = {} + // 获取url的参数 + const getUrlParams = () => { + const params = {}; + const regex = /[?&]([^=#]+)=([^&#]*)/g; + let match; + + while ((match = regex.exec(window.location.href))) { + params[match[1]] = decodeURIComponent(match[2]); + } + + initParams = params + + if (params['uniqid']) getDetails(params['uniqid']) + + } + + // 获取当前url + const getCurrentUrl = () => { + return window.location.href; + } + + // 我的 数据 数量 let myCount = ref({}) // // 获取用户数据 const getUserData = () => { $ajax("/api/user").then(res => { - console.log("res", res); if (res.code != 200) return - let data = res.data - console.log(data, "data"); myCount.value = data.count - }) } @@ -62,7 +89,8 @@ const forumApp = Vue.createApp({ list.value = [] type.value = 'list' pitchIndex.value = null - + replaceState({ keyword: keyword.value }) + searchBlur() getList() } @@ -75,7 +103,7 @@ const forumApp = Vue.createApp({ // 搜索失去焦点 const searchBlur = () => { - setTimeout(() => historicalSearchState.value = false, 100) + setTimeout(() => historicalSearchState.value = false, 300) } // 点击历史记录 item @@ -93,6 +121,8 @@ const forumApp = Vue.createApp({ pitchIndex.value = null getList() + + replaceState() } let historicalSearchState = ref(false) // 历史记录弹窗状态 @@ -114,6 +144,7 @@ const forumApp = Vue.createApp({ } let keyword = ref('') // 搜索的值 + let keywordText = ref('') // 搜索的文本 let list = ref([]) // 列表数据 let page = 1 @@ -125,13 +156,12 @@ const forumApp = Vue.createApp({ if (page == 0 || loading) return loading = true - $ajax("/api/lists", - { - page, - limit: 20, - keyword: keyword.value, - // type: 'all', - } + $ajax("/api/lists", { + page, + limit: 20, + keyword: keyword.value, + type: typePitch.value, + } ).then(res => { if (res.code != 200) return @@ -140,8 +170,9 @@ const forumApp = Vue.createApp({ list.value = list.value.concat(data.data || []) total.value = data.count || 0 - if (list.value.length != data['count']) page++ - else page = 0 + keywordText.value = keyword.value || '' + + page++ if (keyword.value) isSearchMode.value = true else isSearchMode.value = false @@ -151,35 +182,16 @@ const forumApp = Vue.createApp({ } let typeList = ref([]) - let typePitch = ref('') + let typePitch = ref(null) // 获取分类数据 列表分类 const getListClass = () => { $ajax("/api/common/typeList").then(res => { if (res.code != 200) return let data = res.data - console.log(data, "data"); - data = [{ - id: "all", - name: "All", - }, { - id: "all2", - name: "All", - }, { - id: "all3", - name: "All", - }, { - id: "all4", - name: "All", - }, { - id: "all5", - name: "All", - }, { - id: "all6", - name: "All", - }] typeList.value = data - typePitch.value = data[0].id + + console.log("data", data); getPageHeight() }) @@ -203,14 +215,12 @@ const forumApp = Vue.createApp({ let detailShare = ref({}) // 详情信息 // 获取详情 - const getDetails = (uniqid, index) => { - uniqid = "fubm5CnD05qj" // 标记一下 + const getDetails = (uniqid, index, isOpenAnswer) => { + // uniqid = "fubm5CnD05qj" // 标记一下 $ajax("/api/details", { uniqid }).then(res => { if (res.code != 200) return let data = res.data - console.log("data", data); - detailsInfo.value = data['info'] || {} detailsIsanswered.value = data['isanswered'] || 0 detailsIscollection.value = data['iscollection'] || 0 @@ -220,25 +230,68 @@ const forumApp = Vue.createApp({ type.value = 'details' - cut(index) + if (index !== null && index !== undefined) cut(index) + else { + let targetList = [...list.value] + let valve = false + targetList.forEach((element, index) => { + + if (element['uniqid'] == uniqid) { + cut(index) + valve = true + } + }) + + if (!valve) { + list.value.unshift({ + answers: data.info['answers'], + content: data.info['content'], + publicationdate: data.info['publicationdate'], + title: data.info['title'], + uniqid, + }) + cut(0) + } + + } + + answerList.value = [] + answerPage.value = 1 getAnswerList() + + closeAllTransmitState() + + if (isOpenAnswer) openIAnswer() + + replaceState({ uniqid }) }) } let answerList = ref([]) // 回答列表数据 + let answerPage = ref(1) // 回答列表页数 + let answerLoading = false // 回答列表加载 // 获取详情的回答数据 const getAnswerList = () => { - $ajax("/api/details/answerList", { token: detailsToken }).then(res => { + if (answerLoading || answerPage.value == 0) return + answerLoading = true + + $ajax("/api/details/answerList", { token: detailsToken, limit: 20, page: answerPage.value }).then(res => { if (res.code != 200) return let data = res.data data.data.forEach(element => { element['commentList'] = [] }) - // commentList - answerList.value = data.data - }) + + answerList.value = answerList.value.concat(data.data) + + if (answerList.value.length == data['count']) answerPage.value = 0 + else answerPage.value++ + + + + }).finally(() => answerLoading = false) } // 操作 - 点赞 @@ -248,6 +301,7 @@ const forumApp = Vue.createApp({ let data = res.data answerList.value[index]['islike'] = data['status'] answerList.value[index]['likenum'] = data['count'] + handleMsg('success', res['message'] || '操作成功') }) } @@ -266,6 +320,12 @@ const forumApp = Vue.createApp({ answerList.value[index]['iscollection'] = data['status'] answerList.value[index]['collectionnum'] = data['count'] } + + handleMsg('success', res['message'] || '操作成功') + + if (data['status']) myCount.value['collect']++ + else myCount.value['collect']-- + }) } @@ -314,6 +374,10 @@ const forumApp = Vue.createApp({ } IAnswerEditState.value = true + + nextTick(() => { + handleInput() + }) } } @@ -341,12 +405,13 @@ const forumApp = Vue.createApp({ anonymous: IAnswerInfo.value['anonymous'] || 0, content: IAnswerInfo.value['text'], }).then(res => { - console.log(res); if (res.code == 200) { getAnswerList() closeIAnswer() - isNeedNewAnswersData = true + handleMsg('success', res['message'] || '操作成功') + + if (!IAnswerInfo.value['token']) myCount.value['answer']++ } else { } @@ -385,6 +450,7 @@ const forumApp = Vue.createApp({ if (res.code != 200) return let data = res.data answerList.value[index]['commentList'] = answerList.value[index]['commentList'].concat(data.data.slice(3)) + handleMsg('success', res['message'] || '操作成功') }) } @@ -394,6 +460,7 @@ const forumApp = Vue.createApp({ $ajax("/api/comment/lists", { token: answerList.value[index]['token'], limit: answerCommentLimit, + childlimit: 1, }).then(res => { if (res.code != 200) return resolve(res) @@ -424,7 +491,6 @@ const forumApp = Vue.createApp({ token, parentid, }).then(res => { - console.log("res", res); if (res.code != 200) return let data = res.data @@ -469,6 +535,7 @@ const forumApp = Vue.createApp({ closeAnswerCommentsChild() console.log("targetAnswerList", targetAnswerList); + handleMsg('success', res['message'] || '操作成功') }) } @@ -477,23 +544,22 @@ const forumApp = Vue.createApp({ $ajax("/api/comment/like", { token, }).then(res => { - console.log("res", res); if (res.code != 200) return let data = res.data - console.log("data", data); const targetAnswerList = [...answerList.value] if (i == null) { - targetAnswerList[index]['commentList'][ind]['islike'] = data['status'] targetAnswerList[index]['commentList'][ind]['likenum'] = data['likenum'] - } else { targetAnswerList[index]['commentList'][ind]['child'][i]['islike'] = data['status'] targetAnswerList[index]['commentList'][ind]['child'][i]['likenum'] = data['likenum'] } answerList.value = targetAnswerList + + handleMsg('success', res['message'] || '操作成功') + }) } @@ -542,6 +608,7 @@ const forumApp = Vue.createApp({ parentid, limit: 20, page: 1, + childlimit: 1, }).then(res => { console.log("res", res); if (res.code != 200) return @@ -568,10 +635,12 @@ const forumApp = Vue.createApp({ getMyAnswer() return } else if (key == 'questions') { + myQuestionsList.value = [] + myQuestionsPage = 1 getMyQuestions() return } - myType.value = key + // myType.value = key } let myCollectionList = ref([]) // 我的收藏列表 @@ -591,9 +660,9 @@ const forumApp = Vue.createApp({ myCollectionList.value = myCollectionList.value.concat(data.data) myCollectionCount.value = data.count + if (myCollectionList.value.length != data['count']) myCollectionPage++ else myCollectionPage = 0 - }) } @@ -603,6 +672,8 @@ const forumApp = Vue.createApp({ if (res.code == 200) { myCollectionList.value.splice(index, 1) myCollectionCount.value-- + myCount.value['collect']-- + handleMsg('success', res['message'] || '操作成功') } }) } @@ -639,13 +710,13 @@ const forumApp = Vue.createApp({ if (myAnswerList.value.length != data['count']) myAnswerPage++ else myAnswerPage = 0 - console.log("myAnswerList", myAnswerList.value); myType.value = 'answers' isNeedNewAnswersData = false }) } + // 我的回答 的滚动到底部事件 const handleAnswersScroll = e => { const el = e.target; // 判断滚动到底部 @@ -675,22 +746,67 @@ const forumApp = Vue.createApp({ let data = res.data myAnswerList.value[index]['anonymous'] = anonymous cutAnswerPopupState(index) + handleMsg('success', res['message'] || '操作成功') }) } let myQuestionsList = ref([]) // 我的提问数据 let myQuestionsCount = ref(0) // 我的提问数量 + let myQuestionsPage = 0 // 我的提问页数 // 获取我的提问 const getMyQuestions = () => { - $ajax("/api/user/questions").then(res => { + if (myQuestionsPage == 0) return + $ajax("/api/user/questions", { + limit: 20, + page: myQuestionsPage, + }).then(res => { if (res.code != 200) return let data = res.data myQuestionsList.value = myQuestionsList.value.concat(data.data) myQuestionsCount.value = data.count myType.value = 'questions' + + if (myQuestionsList.value.length != data['count']) myQuestionsPage++ + else myQuestionsPage = 0 + }) } + // 我的提问 的滚动到底部 事件 + const handleQuestionsScroll = e => { + const el = e.target; + // 判断滚动到底部 + if (el.scrollHeight - el.scrollTop !== el.clientHeight) return + getMyQuestions() + } + + let questionsIndexOld = null + // 切换 我的提问的公开匿名 弹窗状态 + const cutQuestionsPopupState = index => { + myQuestionsList.value[index]['popupState'] = true + + if (questionsIndexOld == index) { + myQuestionsList.value[index]['popupState'] = false + questionsIndexOld = null + } else { + myQuestionsList.value[index]['popupState'] = true + if (questionsIndexOld != null) myQuestionsList.value[questionsIndexOld]['popupState'] = false + questionsIndexOld = index + } + } + + // 更改匿名状态 + const changeAnonymousQuestions = (token, anonymous, index) => { + $ajax("/api/publish/changeAnonymous", { token, anonymous }).then(res => { + if (res.code != 200) return + let data = res.data + myQuestionsList.value[index]['anonymous'] = anonymous + cutQuestionsPopupState(index) + handleMsg('success', res['message'] || '操作成功') + }) + } + + let questionsSetp = ref(0) // 提问的步骤 // 切换提问步骤 @@ -716,6 +832,7 @@ const forumApp = Vue.createApp({ questionsObj.value['token'] = data['token'] questionsTypeList.value = data['typeList'] || [] + console.log("data['typeList']", data['typeList']); cutQuestionsSetp(1) }) } @@ -733,15 +850,23 @@ const forumApp = Vue.createApp({ // 发布问题 const postingIssue = () => { + // 还没有分类 console.log("发布问题", questionsObj.value); $ajax("/api/publish/questionsSubmit", questionsObj.value).then(res => { console.log("res", res); + + myCount.value['questions']++ + if (res.code == 200) { + handleMsg('success', res['message'] || '操作成功') + } + handleMsg('error', res['message'] || '刷新重试!!!') }) } let pitchIndex = ref(null) // 选中的下标 + // 切换 滚动列表 const cut = index => { // if (pitchIndex.value == null) type.value = type.value == 'list' ? 'details' : 'list' @@ -754,12 +879,10 @@ const forumApp = Vue.createApp({ // 滚动左边在中间 const scrollLeftInMiddle = () => { - // console.log(pitchIndex.value, "pitchIndex"); let list = document.querySelector(".list-box") - // console.log("list", list); - console.log(107 * pitchIndex.value, pageListHeight.value / 2); list.scrollTo({ - top: 128 * pitchIndex.value + 64 - 385, + // top: 128 * pitchIndex.value - pageListHeight.value / 2 - 385, + top: 128 * pitchIndex.value + 68 - pageListHeight.value / 2, behavior: 'smooth' }) } @@ -783,7 +906,6 @@ const forumApp = Vue.createApp({ const itemStyle = (index, content) => { const newtype = type.value - // pitchIndex // let itemHeight = content == "" ? 106 : 128 let obj = {} if (newtype == 'list') { @@ -816,6 +938,7 @@ const forumApp = Vue.createApp({ return obj } + const $ajax = (url, data) => { url = url.indexOf('//') > -1 ? url : baseURL + url; return new Promise(function (resolve, reject) { @@ -824,15 +947,20 @@ const forumApp = Vue.createApp({ withCredentials: true, headers: { // authorization: "9l3vfdx6h5xhu2hbw4fv5ygbog1dhtly" - authorization: "194cdc367ed40c938f2eaaf1c6dfa5ff" + // authorization: "194cdc367ed40c938f2eaaf1c6dfa5ff" + authorization: "63c9bef150557f9c90e93f98d2e2497e" } }).then(function (res) { var data = null try { data = typeof res.data == 'string' ? JSON.parse(res.data) : res.data; + + if (data['code'] != 200) handleMsg('error', data['message'] || '报错了,请重试!!!') } catch (error) { } resolve(data) - }); + }).catch(err => { + if (err.response.status == 401) window.location.href = 'https://passport.gter.net'; + }) }); } @@ -868,34 +996,50 @@ const forumApp = Vue.createApp({ return result; } - // 问题的转发 弹窗状态 - let questionsTransmitState = ref(false) + let questionsTransmitState = ref(false) // 问题的转发 弹窗状态 + let questionsTransmitMaskState = ref(false) // 问题的转发 弹窗蒙版状态状态 // 关闭转发状态 const closeTransmitState = () => { + questionsTransmitState.value = true + questionsTransmitMaskState.value = true + countForwardingTimes(detailsToken) + } + + // 关闭全部转发状态 + const closeAllTransmitState = () => { answerList.value.forEach(element => { element['transmitState'] = false }) - questionsTransmitState.value = !questionsTransmitState.value + questionsTransmitState.value = false + questionsTransmitMaskState.value = false } // 开启和关闭回答的转发状态 type open close const handleAnswerTransmitList = (Iindex, type) => { - // handleAnswerTransmitList - questionsTransmitState.value = false + answerList.value[Iindex]['transmitState'] = true + questionsTransmitMaskState.value = true + countForwardingTimes(answerList.value[Iindex]['token']) + } - answerList.value.forEach((element, index) => { - if (index != Iindex) element['transmitState'] = false + // 统计转发次数 + const countForwardingTimes = (token) => { + console.log("token", token); + + // return + $ajax("/api/operate/share", { token }).then(res => { + console.log("res", res); }) - answerList.value[Iindex]['transmitState'] = !answerList.value[Iindex]['transmitState'] } // 关闭详情模式 const closeDetailMode = () => { type.value = 'list' pitchIndex.value = null + replaceState() } + // 全部的启动到底部 const handleListScroll = (e) => { const el = e.target; // 判断滚动到底部 @@ -908,37 +1052,173 @@ const forumApp = Vue.createApp({ const handlePaste = (event) => { const items = (event.clipboardData || event.originalEvent.clipboardData).items; for (const item of items) { + console.log(item); if (item.type.indexOf('image') === 0) { const file = item.getAsFile(); const reader = new FileReader(); reader.onload = (e) => { - const img = new Image(); - img.src = e.target.result; - - const questionTextarea = document.querySelector(".question-textarea") - questionTextarea.appendChild(img); - handleInput() - // IAnswerInfo.value['text'] = questionTextarea.innerHTML + const base64 = e.target.result + // console.log("base64", base64); + uploadImg(base64).then(res => { + const questionTextarea = document.querySelector(".question-textarea") + const imgElements = questionTextarea.querySelectorAll("img"); + // console.log("imgElements1111", imgElements); + if (imgElements.length == 0) { + questionTextarea.innerHTML += `<img 1 src="${res.url}" data-aid="${res.aid}" />` + handleInput() + } else { + imgElements.forEach(img => { + // console.log("src", img.getAttribute("src")); + // if (img.getAttribute("src") == base64) { + if (img.getAttribute("data-aid") == null && img.getAttribute('data-custom') == null) { + img.setAttribute("src", res.url); + img.setAttribute("data-aid", res.aid); + } + }); + } + }) }; reader.readAsDataURL(file); } } } + // 上传图片 获取图片url + const uploadImg = (base64) => { + return new Promise((resolve, reject) => { + $ajax("/api/common/upload", { data: base64 }).then(res => { + if (res.code != 200) return + let data = res.data + resolve(data) + }) + }) + } + + // 回答 的 placeholder 状态 let questionPlaceholderState = ref(false) + // 回答的输入事件 判断是否显示 placeholder 用 const handleInput = (event) => { // IAnswerInfo.value['text'] = event.target.innerHTML; const questionTextarea = document.querySelector(".question-textarea") const html = questionTextarea.innerHTML if (html) questionPlaceholderState.value = false else questionPlaceholderState.value = true - console.log("questionPlaceholderState", questionPlaceholderState); } + let msg = ref({}) // 提示文本的对象 state 类型 type success warning error 显示状态 text 内容 + + // 调用 提示框方法 + const handleMsg = (type, text) => { + msg.value['state'] = true + msg.value['type'] = type + msg.value['text'] = text + } + + // 修改提示框类型 + const boxClass = () => { + msgShowTimer() + return type ? `box-item-${msg.value['type']}` : '' + } + + let msgTimer = null + const msgShowTimer = () => { + clearTimeout(msgTimer) + msgTimer = setTimeout(() => { + msg.value['state'] = false + }, 1000) + } + + // 复制 + let copyText = text => { + if (navigator.clipboard) { + copyText = () => { + navigator.clipboard.writeText(text) + handleMsg('success', '复制成功') + } + } else { + copyText = () => { + var tempInput = document.createElement("input") + tempInput.value = text + document.body.appendChild(tempInput) + tempInput.select() + document.execCommand("copy") + document.body.removeChild(tempInput) + handleMsg('success', '复制成功') + + } + } + copyText() + } + + // 修改 url + const replaceState = (obj = {}) => { + // 获取当前URL参数 + let params = new URLSearchParams(window.location.search); + + // 循环删除所有参数 + for (let key of params.keys()) { + params.delete(key); + } + // 修改URL参数 + // params.set('paramName', 'paramValue'); + for (const key in obj) { + params.set(key, obj[key]); + } + + // 替换当前URL,但不刷新页面 + window.history.replaceState({}, '', `${window.location.pathname}?${params}`); + } + + // 我的打开 详情 + const myOpenDetails = (value) => { + getDetails(value['uniqid']) + myType.value = "" + } + + + // 详情页滚动事件 + const handleDetailsScroll = e => { + // console.log("e", e); + const el = e.target; + // 判断滚动到底部 + if (el.scrollHeight - el.scrollTop !== el.clientHeight) return + // console.log("底部"); + getAnswerList() + } + + let dialogSrc = ref("") // 大图的src + + // 处理点击答案图片 展开大图 + const handleAnswerText = e => { + if (e.target.tagName === 'IMG') { + var src = e.target.getAttribute('src'); + dialogSrc.value = src + } + } + + + // 切换顶部的 type + const cutType = (id) => { + typePitch.value = id + page = 1 + list.value = [] + type.value = 'list' + getList() + } + + + return { + cutType, + dialogSrc, + answerPage, + handleDetailsScroll, + replaceState, + copyText, + boxClass, questionPlaceholderState, handleInput, handlePaste, @@ -951,6 +1231,7 @@ const forumApp = Vue.createApp({ cut, list, keyword, + keywordText, getList, total, typeList, @@ -989,20 +1270,25 @@ const forumApp = Vue.createApp({ handleDate, handleCollectionScroll, handleAnswersScroll, + handleQuestionsScroll, cancelCollection, getMyCollection, questionsSetp, questionsObj, cutAnonymous, cutQuestionsSetp, + cutQuestionsPopupState, questionsTypeList, postingIssue, choosingTheme, handleMy, changeAnonymous, + changeAnonymousQuestions, pageHeaderHeight, pageListHeight, questionsTransmitState, + questionsTransmitMaskState, + closeAllTransmitState, closeTransmitState, handleAnswerTransmitList, closeDetailMode, @@ -1017,9 +1303,15 @@ const forumApp = Vue.createApp({ handleClickClear, isSearchMode, questionsInit, + myCount, + msg, + myOpenDetails, + handleAnswerText, + getCurrentUrl }; } }) + forumApp.mount("#answer-app"); //初始化 \ No newline at end of file diff --git a/js/vue.js b/js/vue.js new file mode 100644 index 0000000..d800532 --- /dev/null +++ b/js/vue.js @@ -0,0 +1,12014 @@ +/*! + * Vue.js v2.6.14 + * (c) 2014-2021 Evan You + * Released under the MIT License. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Vue = factory()); +}(this, function () { 'use strict'; + + /* */ + + var emptyObject = Object.freeze({}); + + // These helpers produce better VM code in JS engines due to their + // explicitness and function inlining. + function isUndef (v) { + return v === undefined || v === null + } + + function isDef (v) { + return v !== undefined && v !== null + } + + function isTrue (v) { + return v === true + } + + function isFalse (v) { + return v === false + } + + /** + * Check if value is primitive. + */ + function isPrimitive (value) { + return ( + typeof value === 'string' || + typeof value === 'number' || + // $flow-disable-line + typeof value === 'symbol' || + typeof value === 'boolean' + ) + } + + /** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ + function isObject (obj) { + return obj !== null && typeof obj === 'object' + } + + /** + * Get the raw type string of a value, e.g., [object Object]. + */ + var _toString = Object.prototype.toString; + + function toRawType (value) { + return _toString.call(value).slice(8, -1) + } + + /** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ + function isPlainObject (obj) { + return _toString.call(obj) === '[object Object]' + } + + function isRegExp (v) { + return _toString.call(v) === '[object RegExp]' + } + + /** + * Check if val is a valid array index. + */ + function isValidArrayIndex (val) { + var n = parseFloat(String(val)); + return n >= 0 && Math.floor(n) === n && isFinite(val) + } + + function isPromise (val) { + return ( + isDef(val) && + typeof val.then === 'function' && + typeof val.catch === 'function' + ) + } + + /** + * Convert a value to a string that is actually rendered. + */ + function toString (val) { + return val == null + ? '' + : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) + ? JSON.stringify(val, null, 2) + : String(val) + } + + /** + * Convert an input value to a number for persistence. + * If the conversion fails, return original string. + */ + function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n + } + + /** + * Make a map and return a function for checking if a key + * is in that map. + */ + function makeMap ( + str, + expectsLowerCase + ) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } + } + + /** + * Check if a tag is a built-in tag. + */ + var isBuiltInTag = makeMap('slot,component', true); + + /** + * Check if an attribute is a reserved attribute. + */ + var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); + + /** + * Remove an item from an array. + */ + function remove (arr, item) { + if (arr.length) { + var index = arr.indexOf(item); + if (index > -1) { + return arr.splice(index, 1) + } + } + } + + /** + * Check whether an object has the property. + */ + var hasOwnProperty = Object.prototype.hasOwnProperty; + function hasOwn (obj, key) { + return hasOwnProperty.call(obj, key) + } + + /** + * Create a cached version of a pure function. + */ + function cached (fn) { + var cache = Object.create(null); + return (function cachedFn (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)) + }) + } + + /** + * Camelize a hyphen-delimited string. + */ + var camelizeRE = /-(\w)/g; + var camelize = cached(function (str) { + return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) + }); + + /** + * Capitalize a string. + */ + var capitalize = cached(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1) + }); + + /** + * Hyphenate a camelCase string. + */ + var hyphenateRE = /\B([A-Z])/g; + var hyphenate = cached(function (str) { + return str.replace(hyphenateRE, '-$1').toLowerCase() + }); + + /** + * Simple bind polyfill for environments that do not support it, + * e.g., PhantomJS 1.x. Technically, we don't need this anymore + * since native bind is now performant enough in most browsers. + * But removing it would mean breaking code that was able to run in + * PhantomJS 1.x, so this must be kept for backward compatibility. + */ + + /* istanbul ignore next */ + function polyfillBind (fn, ctx) { + function boundFn (a) { + var l = arguments.length; + return l + ? l > 1 + ? fn.apply(ctx, arguments) + : fn.call(ctx, a) + : fn.call(ctx) + } + + boundFn._length = fn.length; + return boundFn + } + + function nativeBind (fn, ctx) { + return fn.bind(ctx) + } + + var bind = Function.prototype.bind + ? nativeBind + : polyfillBind; + + /** + * Convert an Array-like object to a real Array. + */ + function toArray (list, start) { + start = start || 0; + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret + } + + /** + * Mix properties into target object. + */ + function extend (to, _from) { + for (var key in _from) { + to[key] = _from[key]; + } + return to + } + + /** + * Merge an Array of Objects into a single Object. + */ + function toObject (arr) { + var res = {}; + for (var i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res + } + + /* eslint-disable no-unused-vars */ + + /** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). + */ + function noop (a, b, c) {} + + /** + * Always return false. + */ + var no = function (a, b, c) { return false; }; + + /* eslint-enable no-unused-vars */ + + /** + * Return the same value. + */ + var identity = function (_) { return _; }; + + /** + * Generate a string containing static keys from compiler modules. + */ + function genStaticKeys (modules) { + return modules.reduce(function (keys, m) { + return keys.concat(m.staticKeys || []) + }, []).join(',') + } + + /** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ + function looseEqual (a, b) { + if (a === b) { return true } + var isObjectA = isObject(a); + var isObjectB = isObject(b); + if (isObjectA && isObjectB) { + try { + var isArrayA = Array.isArray(a); + var isArrayB = Array.isArray(b); + if (isArrayA && isArrayB) { + return a.length === b.length && a.every(function (e, i) { + return looseEqual(e, b[i]) + }) + } else if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime() + } else if (!isArrayA && !isArrayB) { + var keysA = Object.keys(a); + var keysB = Object.keys(b); + return keysA.length === keysB.length && keysA.every(function (key) { + return looseEqual(a[key], b[key]) + }) + } else { + /* istanbul ignore next */ + return false + } + } catch (e) { + /* istanbul ignore next */ + return false + } + } else if (!isObjectA && !isObjectB) { + return String(a) === String(b) + } else { + return false + } + } + + /** + * Return the first index at which a loosely equal value can be + * found in the array (if value is a plain object, the array must + * contain an object of the same shape), or -1 if it is not present. + */ + function looseIndexOf (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { return i } + } + return -1 + } + + /** + * Ensure a function is called only once. + */ + function once (fn) { + var called = false; + return function () { + if (!called) { + called = true; + fn.apply(this, arguments); + } + } + } + + var SSR_ATTR = 'data-server-rendered'; + + var ASSET_TYPES = [ + 'component', + 'directive', + 'filter' + ]; + + var LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated', + 'errorCaptured', + 'serverPrefetch' + ]; + + /* */ + + + + var config = ({ + /** + * Option merge strategies (used in core/util/options) + */ + // $flow-disable-line + optionMergeStrategies: Object.create(null), + + /** + * Whether to suppress warnings. + */ + silent: false, + + /** + * Show production mode tip message on boot? + */ + productionTip: "development" !== 'production', + + /** + * Whether to enable devtools + */ + devtools: "development" !== 'production', + + /** + * Whether to record perf + */ + performance: false, + + /** + * Error handler for watcher errors + */ + errorHandler: null, + + /** + * Warn handler for watcher warns + */ + warnHandler: null, + + /** + * Ignore certain custom elements + */ + ignoredElements: [], + + /** + * Custom user key aliases for v-on + */ + // $flow-disable-line + keyCodes: Object.create(null), + + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, + + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, + + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, + + /** + * Get the namespace of an element + */ + getTagNamespace: noop, + + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity, + + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + + /** + * Perform updates asynchronously. Intended to be used by Vue Test Utils + * This will significantly reduce performance if set to false. + */ + async: true, + + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS + }); + + /* */ + + /** + * unicode letters used for parsing html tags, component names and property paths. + * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname + * skipping \u10000-\uEFFFF due to it freezing up PhantomJS + */ + var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/; + + /** + * Check if a string starts with $ or _ + */ + function isReserved (str) { + var c = (str + '').charCodeAt(0); + return c === 0x24 || c === 0x5F + } + + /** + * Define a property. + */ + function def (obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); + } + + /** + * Parse simple path. + */ + var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]")); + function parsePath (path) { + if (bailRE.test(path)) { + return + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) { return } + obj = obj[segments[i]]; + } + return obj + } + } + + /* */ + + // can we use __proto__? + var hasProto = '__proto__' in {}; + + // Browser environment sniffing + var inBrowser = typeof window !== 'undefined'; + var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform; + var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(); + var UA = inBrowser && window.navigator.userAgent.toLowerCase(); + var isIE = UA && /msie|trident/.test(UA); + var isIE9 = UA && UA.indexOf('msie 9.0') > 0; + var isEdge = UA && UA.indexOf('edge/') > 0; + var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android'); + var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios'); + var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; + var isPhantomJS = UA && /phantomjs/.test(UA); + var isFF = UA && UA.match(/firefox\/(\d+)/); + + // Firefox has a "watch" function on Object.prototype... + var nativeWatch = ({}).watch; + + var supportsPassive = false; + if (inBrowser) { + try { + var opts = {}; + Object.defineProperty(opts, 'passive', ({ + get: function get () { + /* istanbul ignore next */ + supportsPassive = true; + } + })); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } catch (e) {} + } + + // this needs to be lazy-evaled because vue may be required before + // vue-server-renderer can set VUE_ENV + var _isServer; + var isServerRendering = function () { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && !inWeex && typeof global !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = global['process'] && global['process'].env.VUE_ENV === 'server'; + } else { + _isServer = false; + } + } + return _isServer + }; + + // detect devtools + var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + + /* istanbul ignore next */ + function isNative (Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) + } + + var hasSymbol = + typeof Symbol !== 'undefined' && isNative(Symbol) && + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); + + var _Set; + /* istanbul ignore if */ // $flow-disable-line + if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; + } else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = /*@__PURE__*/(function () { + function Set () { + this.set = Object.create(null); + } + Set.prototype.has = function has (key) { + return this.set[key] === true + }; + Set.prototype.add = function add (key) { + this.set[key] = true; + }; + Set.prototype.clear = function clear () { + this.set = Object.create(null); + }; + + return Set; + }()); + } + + /* */ + + var warn = noop; + var tip = noop; + var generateComponentTrace = (noop); // work around flow check + var formatComponentName = (noop); + + { + var hasConsole = typeof console !== 'undefined'; + var classifyRE = /(?:^|[-_])(\w)/g; + var classify = function (str) { return str + .replace(classifyRE, function (c) { return c.toUpperCase(); }) + .replace(/[-_]/g, ''); }; + + warn = function (msg, vm) { + var trace = vm ? generateComponentTrace(vm) : ''; + + if (config.warnHandler) { + config.warnHandler.call(null, msg, vm, trace); + } else if (hasConsole && (!config.silent)) { + console.error(("[Vue warn]: " + msg + trace)); + } + }; + + tip = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.warn("[Vue tip]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; + + formatComponentName = function (vm, includeFile) { + if (vm.$root === vm) { + return '<Root>' + } + var options = typeof vm === 'function' && vm.cid != null + ? vm.options + : vm._isVue + ? vm.$options || vm.constructor.options + : vm; + var name = options.name || options._componentTag; + var file = options.__file; + if (!name && file) { + var match = file.match(/([^/\\]+)\.vue$/); + name = match && match[1]; + } + + return ( + (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") + + (file && includeFile !== false ? (" at " + file) : '') + ) + }; + + var repeat = function (str, n) { + var res = ''; + while (n) { + if (n % 2 === 1) { res += str; } + if (n > 1) { str += str; } + n >>= 1; + } + return res + }; + + generateComponentTrace = function (vm) { + if (vm._isVue && vm.$parent) { + var tree = []; + var currentRecursiveSequence = 0; + while (vm) { + if (tree.length > 0) { + var last = tree[tree.length - 1]; + if (last.constructor === vm.constructor) { + currentRecursiveSequence++; + vm = vm.$parent; + continue + } else if (currentRecursiveSequence > 0) { + tree[tree.length - 1] = [last, currentRecursiveSequence]; + currentRecursiveSequence = 0; + } + } + tree.push(vm); + vm = vm.$parent; + } + return '\n\nfound in\n\n' + tree + .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) + ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") + : formatComponentName(vm))); }) + .join('\n') + } else { + return ("\n\n(found in " + (formatComponentName(vm)) + ")") + } + }; + } + + /* */ + + var uid = 0; + + /** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ + var Dep = function Dep () { + this.id = uid++; + this.subs = []; + }; + + Dep.prototype.addSub = function addSub (sub) { + this.subs.push(sub); + }; + + Dep.prototype.removeSub = function removeSub (sub) { + remove(this.subs, sub); + }; + + Dep.prototype.depend = function depend () { + if (Dep.target) { + Dep.target.addDep(this); + } + }; + + Dep.prototype.notify = function notify () { + // stabilize the subscriber list first + var subs = this.subs.slice(); + if (!config.async) { + // subs aren't sorted in scheduler if not running async + // we need to sort them now to make sure they fire in correct + // order + subs.sort(function (a, b) { return a.id - b.id; }); + } + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } + }; + + // The current target watcher being evaluated. + // This is globally unique because only one watcher + // can be evaluated at a time. + Dep.target = null; + var targetStack = []; + + function pushTarget (target) { + targetStack.push(target); + Dep.target = target; + } + + function popTarget () { + targetStack.pop(); + Dep.target = targetStack[targetStack.length - 1]; + } + + /* */ + + var VNode = function VNode ( + tag, + data, + children, + text, + elm, + context, + componentOptions, + asyncFactory + ) { + this.tag = tag; + this.data = data; + this.children = children; + this.text = text; + this.elm = elm; + this.ns = undefined; + this.context = context; + this.fnContext = undefined; + this.fnOptions = undefined; + this.fnScopeId = undefined; + this.key = data && data.key; + this.componentOptions = componentOptions; + this.componentInstance = undefined; + this.parent = undefined; + this.raw = false; + this.isStatic = false; + this.isRootInsert = true; + this.isComment = false; + this.isCloned = false; + this.isOnce = false; + this.asyncFactory = asyncFactory; + this.asyncMeta = undefined; + this.isAsyncPlaceholder = false; + }; + + var prototypeAccessors = { child: { configurable: true } }; + + // DEPRECATED: alias for componentInstance for backwards compat. + /* istanbul ignore next */ + prototypeAccessors.child.get = function () { + return this.componentInstance + }; + + Object.defineProperties( VNode.prototype, prototypeAccessors ); + + var createEmptyVNode = function (text) { + if ( text === void 0 ) text = ''; + + var node = new VNode(); + node.text = text; + node.isComment = true; + return node + }; + + function createTextVNode (val) { + return new VNode(undefined, undefined, undefined, String(val)) + } + + // optimized shallow clone + // used for static nodes and slot nodes because they may be reused across + // multiple renders, cloning them avoids errors when DOM manipulations rely + // on their elm reference. + function cloneVNode (vnode) { + var cloned = new VNode( + vnode.tag, + vnode.data, + // #7975 + // clone children array to avoid mutating original in case of cloning + // a child. + vnode.children && vnode.children.slice(), + vnode.text, + vnode.elm, + vnode.context, + vnode.componentOptions, + vnode.asyncFactory + ); + cloned.ns = vnode.ns; + cloned.isStatic = vnode.isStatic; + cloned.key = vnode.key; + cloned.isComment = vnode.isComment; + cloned.fnContext = vnode.fnContext; + cloned.fnOptions = vnode.fnOptions; + cloned.fnScopeId = vnode.fnScopeId; + cloned.asyncMeta = vnode.asyncMeta; + cloned.isCloned = true; + return cloned + } + + /* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ + + var arrayProto = Array.prototype; + var arrayMethods = Object.create(arrayProto); + + var methodsToPatch = [ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' + ]; + + /** + * Intercept mutating methods and emit events + */ + methodsToPatch.forEach(function (method) { + // cache original method + var original = arrayProto[method]; + def(arrayMethods, method, function mutator () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var result = original.apply(this, args); + var ob = this.__ob__; + var inserted; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break + case 'splice': + inserted = args.slice(2); + break + } + if (inserted) { ob.observeArray(inserted); } + // notify change + ob.dep.notify(); + return result + }); + }); + + /* */ + + var arrayKeys = Object.getOwnPropertyNames(arrayMethods); + + /** + * In some cases we may want to disable observation inside a component's + * update computation. + */ + var shouldObserve = true; + + function toggleObserving (value) { + shouldObserve = value; + } + + /** + * Observer class that is attached to each observed + * object. Once attached, the observer converts the target + * object's property keys into getter/setters that + * collect dependencies and dispatch updates. + */ + var Observer = function Observer (value) { + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (Array.isArray(value)) { + if (hasProto) { + protoAugment(value, arrayMethods); + } else { + copyAugment(value, arrayMethods, arrayKeys); + } + this.observeArray(value); + } else { + this.walk(value); + } + }; + + /** + * Walk through all properties and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ + Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive$$1(obj, keys[i]); + } + }; + + /** + * Observe a list of Array items. + */ + Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); + } + }; + + // helpers + + /** + * Augment a target Object or Array by intercepting + * the prototype chain using __proto__ + */ + function protoAugment (target, src) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ + } + + /** + * Augment a target Object or Array by defining + * hidden properties. + */ + /* istanbul ignore next */ + function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); + } + } + + /** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ + function observe (value, asRootData) { + if (!isObject(value) || value instanceof VNode) { + return + } + var ob; + if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if ( + shouldObserve && + !isServerRendering() && + (Array.isArray(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value._isVue + ) { + ob = new Observer(value); + } + if (asRootData && ob) { + ob.vmCount++; + } + return ob + } + + /** + * Define a reactive property on an Object. + */ + function defineReactive$$1 ( + obj, + key, + val, + customSetter, + shallow + ) { + var dep = new Dep(); + + var property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return + } + + // cater for pre-defined getter/setters + var getter = property && property.get; + var setter = property && property.set; + if ((!getter || setter) && arguments.length === 2) { + val = obj[key]; + } + + var childOb = !shallow && observe(val); + Object.defineProperty(obj, key, { + enumerable: true, + configurable: true, + get: function reactiveGetter () { + var value = getter ? getter.call(obj) : val; + if (Dep.target) { + dep.depend(); + if (childOb) { + childOb.dep.depend(); + if (Array.isArray(value)) { + dependArray(value); + } + } + } + return value + }, + set: function reactiveSetter (newVal) { + var value = getter ? getter.call(obj) : val; + /* eslint-disable no-self-compare */ + if (newVal === value || (newVal !== newVal && value !== value)) { + return + } + /* eslint-enable no-self-compare */ + if (customSetter) { + customSetter(); + } + // #7981: for accessor properties without setter + if (getter && !setter) { return } + if (setter) { + setter.call(obj, newVal); + } else { + val = newVal; + } + childOb = !shallow && observe(newVal); + dep.notify(); + } + }); + } + + /** + * Set a property on an object. Adds the new property and + * triggers change notification if the property doesn't + * already exist. + */ + function set (target, key, val) { + if (isUndef(target) || isPrimitive(target) + ) { + warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target)))); + } + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val + } + if (key in target && !(key in Object.prototype)) { + target[key] = val; + return val + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + warn( + 'Avoid adding reactive properties to a Vue instance or its root $data ' + + 'at runtime - declare it upfront in the data option.' + ); + return val + } + if (!ob) { + target[key] = val; + return val + } + defineReactive$$1(ob.value, key, val); + ob.dep.notify(); + return val + } + + /** + * Delete a property and trigger change if necessary. + */ + function del (target, key) { + if (isUndef(target) || isPrimitive(target) + ) { + warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target)))); + } + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.splice(key, 1); + return + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + warn( + 'Avoid deleting properties on a Vue instance or its root $data ' + + '- just set it to null.' + ); + return + } + if (!hasOwn(target, key)) { + return + } + delete target[key]; + if (!ob) { + return + } + ob.dep.notify(); + } + + /** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ + function dependArray (value) { + for (var e = (void 0), i = 0, l = value.length; i < l; i++) { + e = value[i]; + e && e.__ob__ && e.__ob__.dep.depend(); + if (Array.isArray(e)) { + dependArray(e); + } + } + } + + /* */ + + /** + * Option overwriting strategies are functions that handle + * how to merge a parent option value and a child option + * value into the final value. + */ + var strats = config.optionMergeStrategies; + + /** + * Options with restrictions + */ + { + strats.el = strats.propsData = function (parent, child, vm, key) { + if (!vm) { + warn( + "option \"" + key + "\" can only be used during instance " + + 'creation with the `new` keyword.' + ); + } + return defaultStrat(parent, child) + }; + } + + /** + * Helper that recursively merges two data objects together. + */ + function mergeData (to, from) { + if (!from) { return to } + var key, toVal, fromVal; + + var keys = hasSymbol + ? Reflect.ownKeys(from) + : Object.keys(from); + + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + // in case the object is already observed... + if (key === '__ob__') { continue } + toVal = to[key]; + fromVal = from[key]; + if (!hasOwn(to, key)) { + set(to, key, fromVal); + } else if ( + toVal !== fromVal && + isPlainObject(toVal) && + isPlainObject(fromVal) + ) { + mergeData(toVal, fromVal); + } + } + return to + } + + /** + * Data + */ + function mergeDataOrFn ( + parentVal, + childVal, + vm + ) { + if (!vm) { + // in a Vue.extend merge, both should be functions + if (!childVal) { + return parentVal + } + if (!parentVal) { + return childVal + } + // when parentVal & childVal are both present, + // we need to return a function that returns the + // merged result of both functions... no need to + // check if parentVal is a function here because + // it has to be a function to pass previous merges. + return function mergedDataFn () { + return mergeData( + typeof childVal === 'function' ? childVal.call(this, this) : childVal, + typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal + ) + } + } else { + return function mergedInstanceDataFn () { + // instance merge + var instanceData = typeof childVal === 'function' + ? childVal.call(vm, vm) + : childVal; + var defaultData = typeof parentVal === 'function' + ? parentVal.call(vm, vm) + : parentVal; + if (instanceData) { + return mergeData(instanceData, defaultData) + } else { + return defaultData + } + } + } + } + + strats.data = function ( + parentVal, + childVal, + vm + ) { + if (!vm) { + if (childVal && typeof childVal !== 'function') { + warn( + 'The "data" option should be a function ' + + 'that returns a per-instance value in component ' + + 'definitions.', + vm + ); + + return parentVal + } + return mergeDataOrFn(parentVal, childVal) + } + + return mergeDataOrFn(parentVal, childVal, vm) + }; + + /** + * Hooks and props are merged as arrays. + */ + function mergeHook ( + parentVal, + childVal + ) { + var res = childVal + ? parentVal + ? parentVal.concat(childVal) + : Array.isArray(childVal) + ? childVal + : [childVal] + : parentVal; + return res + ? dedupeHooks(res) + : res + } + + function dedupeHooks (hooks) { + var res = []; + for (var i = 0; i < hooks.length; i++) { + if (res.indexOf(hooks[i]) === -1) { + res.push(hooks[i]); + } + } + return res + } + + LIFECYCLE_HOOKS.forEach(function (hook) { + strats[hook] = mergeHook; + }); + + /** + * Assets + * + * When a vm is present (instance creation), we need to do + * a three-way merge between constructor options, instance + * options and parent options. + */ + function mergeAssets ( + parentVal, + childVal, + vm, + key + ) { + var res = Object.create(parentVal || null); + if (childVal) { + assertObjectType(key, childVal, vm); + return extend(res, childVal) + } else { + return res + } + } + + ASSET_TYPES.forEach(function (type) { + strats[type + 's'] = mergeAssets; + }); + + /** + * Watchers. + * + * Watchers hashes should not overwrite one + * another, so we merge them as arrays. + */ + strats.watch = function ( + parentVal, + childVal, + vm, + key + ) { + // work around Firefox's Object.prototype.watch... + if (parentVal === nativeWatch) { parentVal = undefined; } + if (childVal === nativeWatch) { childVal = undefined; } + /* istanbul ignore if */ + if (!childVal) { return Object.create(parentVal || null) } + { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = {}; + extend(ret, parentVal); + for (var key$1 in childVal) { + var parent = ret[key$1]; + var child = childVal[key$1]; + if (parent && !Array.isArray(parent)) { + parent = [parent]; + } + ret[key$1] = parent + ? parent.concat(child) + : Array.isArray(child) ? child : [child]; + } + return ret + }; + + /** + * Other object hashes. + */ + strats.props = + strats.methods = + strats.inject = + strats.computed = function ( + parentVal, + childVal, + vm, + key + ) { + if (childVal && "development" !== 'production') { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = Object.create(null); + extend(ret, parentVal); + if (childVal) { extend(ret, childVal); } + return ret + }; + strats.provide = mergeDataOrFn; + + /** + * Default strategy. + */ + var defaultStrat = function (parentVal, childVal) { + return childVal === undefined + ? parentVal + : childVal + }; + + /** + * Validate component names + */ + function checkComponents (options) { + for (var key in options.components) { + validateComponentName(key); + } + } + + function validateComponentName (name) { + if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) { + warn( + 'Invalid component name: "' + name + '". Component names ' + + 'should conform to valid custom element name in html5 specification.' + ); + } + if (isBuiltInTag(name) || config.isReservedTag(name)) { + warn( + 'Do not use built-in or reserved HTML elements as component ' + + 'id: ' + name + ); + } + } + + /** + * Ensure all props option syntax are normalized into the + * Object-based format. + */ + function normalizeProps (options, vm) { + var props = options.props; + if (!props) { return } + var res = {}; + var i, val, name; + if (Array.isArray(props)) { + i = props.length; + while (i--) { + val = props[i]; + if (typeof val === 'string') { + name = camelize(val); + res[name] = { type: null }; + } else { + warn('props must be strings when using array syntax.'); + } + } + } else if (isPlainObject(props)) { + for (var key in props) { + val = props[key]; + name = camelize(key); + res[name] = isPlainObject(val) + ? val + : { type: val }; + } + } else { + warn( + "Invalid value for option \"props\": expected an Array or an Object, " + + "but got " + (toRawType(props)) + ".", + vm + ); + } + options.props = res; + } + + /** + * Normalize all injections into Object-based format + */ + function normalizeInject (options, vm) { + var inject = options.inject; + if (!inject) { return } + var normalized = options.inject = {}; + if (Array.isArray(inject)) { + for (var i = 0; i < inject.length; i++) { + normalized[inject[i]] = { from: inject[i] }; + } + } else if (isPlainObject(inject)) { + for (var key in inject) { + var val = inject[key]; + normalized[key] = isPlainObject(val) + ? extend({ from: key }, val) + : { from: val }; + } + } else { + warn( + "Invalid value for option \"inject\": expected an Array or an Object, " + + "but got " + (toRawType(inject)) + ".", + vm + ); + } + } + + /** + * Normalize raw function directives into object format. + */ + function normalizeDirectives (options) { + var dirs = options.directives; + if (dirs) { + for (var key in dirs) { + var def$$1 = dirs[key]; + if (typeof def$$1 === 'function') { + dirs[key] = { bind: def$$1, update: def$$1 }; + } + } + } + } + + function assertObjectType (name, value, vm) { + if (!isPlainObject(value)) { + warn( + "Invalid value for option \"" + name + "\": expected an Object, " + + "but got " + (toRawType(value)) + ".", + vm + ); + } + } + + /** + * Merge two option objects into a new one. + * Core utility used in both instantiation and inheritance. + */ + function mergeOptions ( + parent, + child, + vm + ) { + { + checkComponents(child); + } + + if (typeof child === 'function') { + child = child.options; + } + + normalizeProps(child, vm); + normalizeInject(child, vm); + normalizeDirectives(child); + + // Apply extends and mixins on the child options, + // but only if it is a raw options object that isn't + // the result of another mergeOptions call. + // Only merged options has the _base property. + if (!child._base) { + if (child.extends) { + parent = mergeOptions(parent, child.extends, vm); + } + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } + } + } + + var options = {}; + var key; + for (key in parent) { + mergeField(key); + } + for (key in child) { + if (!hasOwn(parent, key)) { + mergeField(key); + } + } + function mergeField (key) { + var strat = strats[key] || defaultStrat; + options[key] = strat(parent[key], child[key], vm, key); + } + return options + } + + /** + * Resolve an asset. + * This function is used because child instances need access + * to assets defined in its ancestor chain. + */ + function resolveAsset ( + options, + type, + id, + warnMissing + ) { + /* istanbul ignore if */ + if (typeof id !== 'string') { + return + } + var assets = options[type]; + // check local registration variations first + if (hasOwn(assets, id)) { return assets[id] } + var camelizedId = camelize(id); + if (hasOwn(assets, camelizedId)) { return assets[camelizedId] } + var PascalCaseId = capitalize(camelizedId); + if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] } + // fallback to prototype chain + var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; + if (warnMissing && !res) { + warn( + 'Failed to resolve ' + type.slice(0, -1) + ': ' + id, + options + ); + } + return res + } + + /* */ + + + + function validateProp ( + key, + propOptions, + propsData, + vm + ) { + var prop = propOptions[key]; + var absent = !hasOwn(propsData, key); + var value = propsData[key]; + // boolean casting + var booleanIndex = getTypeIndex(Boolean, prop.type); + if (booleanIndex > -1) { + if (absent && !hasOwn(prop, 'default')) { + value = false; + } else if (value === '' || value === hyphenate(key)) { + // only cast empty string / same name to boolean if + // boolean has higher priority + var stringIndex = getTypeIndex(String, prop.type); + if (stringIndex < 0 || booleanIndex < stringIndex) { + value = true; + } + } + } + // check default value + if (value === undefined) { + value = getPropDefaultValue(vm, prop, key); + // since the default value is a fresh copy, + // make sure to observe it. + var prevShouldObserve = shouldObserve; + toggleObserving(true); + observe(value); + toggleObserving(prevShouldObserve); + } + { + assertProp(prop, key, value, vm, absent); + } + return value + } + + /** + * Get the default value of a prop. + */ + function getPropDefaultValue (vm, prop, key) { + // no default, return undefined + if (!hasOwn(prop, 'default')) { + return undefined + } + var def = prop.default; + // warn against non-factory defaults for Object & Array + if (isObject(def)) { + warn( + 'Invalid default value for prop "' + key + '": ' + + 'Props with type Object/Array must use a factory function ' + + 'to return the default value.', + vm + ); + } + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined + ) { + return vm._props[key] + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return typeof def === 'function' && getType(prop.type) !== 'Function' + ? def.call(vm) + : def + } + + /** + * Assert whether a prop is valid. + */ + function assertProp ( + prop, + name, + value, + vm, + absent + ) { + if (prop.required && absent) { + warn( + 'Missing required prop: "' + name + '"', + vm + ); + return + } + if (value == null && !prop.required) { + return + } + var type = prop.type; + var valid = !type || type === true; + var expectedTypes = []; + if (type) { + if (!Array.isArray(type)) { + type = [type]; + } + for (var i = 0; i < type.length && !valid; i++) { + var assertedType = assertType(value, type[i], vm); + expectedTypes.push(assertedType.expectedType || ''); + valid = assertedType.valid; + } + } + + var haveExpectedTypes = expectedTypes.some(function (t) { return t; }); + if (!valid && haveExpectedTypes) { + warn( + getInvalidTypeMessage(name, value, expectedTypes), + vm + ); + return + } + var validator = prop.validator; + if (validator) { + if (!validator(value)) { + warn( + 'Invalid prop: custom validator check failed for prop "' + name + '".', + vm + ); + } + } + } + + var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/; + + function assertType (value, type, vm) { + var valid; + var expectedType = getType(type); + if (simpleCheckRE.test(expectedType)) { + var t = typeof value; + valid = t === expectedType.toLowerCase(); + // for primitive wrapper objects + if (!valid && t === 'object') { + valid = value instanceof type; + } + } else if (expectedType === 'Object') { + valid = isPlainObject(value); + } else if (expectedType === 'Array') { + valid = Array.isArray(value); + } else { + try { + valid = value instanceof type; + } catch (e) { + warn('Invalid prop type: "' + String(type) + '" is not a constructor', vm); + valid = false; + } + } + return { + valid: valid, + expectedType: expectedType + } + } + + var functionTypeCheckRE = /^\s*function (\w+)/; + + /** + * Use function string name to check built-in types, + * because a simple equality check will fail when running + * across different vms / iframes. + */ + function getType (fn) { + var match = fn && fn.toString().match(functionTypeCheckRE); + return match ? match[1] : '' + } + + function isSameType (a, b) { + return getType(a) === getType(b) + } + + function getTypeIndex (type, expectedTypes) { + if (!Array.isArray(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1 + } + for (var i = 0, len = expectedTypes.length; i < len; i++) { + if (isSameType(expectedTypes[i], type)) { + return i + } + } + return -1 + } + + function getInvalidTypeMessage (name, value, expectedTypes) { + var message = "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')); + var expectedType = expectedTypes[0]; + var receivedType = toRawType(value); + // check if we need to specify expected value + if ( + expectedTypes.length === 1 && + isExplicable(expectedType) && + isExplicable(typeof value) && + !isBoolean(expectedType, receivedType) + ) { + message += " with value " + (styleValue(value, expectedType)); + } + message += ", got " + receivedType + " "; + // check if we need to specify received value + if (isExplicable(receivedType)) { + message += "with value " + (styleValue(value, receivedType)) + "."; + } + return message + } + + function styleValue (value, type) { + if (type === 'String') { + return ("\"" + value + "\"") + } else if (type === 'Number') { + return ("" + (Number(value))) + } else { + return ("" + value) + } + } + + var EXPLICABLE_TYPES = ['string', 'number', 'boolean']; + function isExplicable (value) { + return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; }) + } + + function isBoolean () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }) + } + + /* */ + + function handleError (err, vm, info) { + // Deactivate deps tracking while processing error handler to avoid possible infinite rendering. + // See: https://github.com/vuejs/vuex/issues/1505 + pushTarget(); + try { + if (vm) { + var cur = vm; + while ((cur = cur.$parent)) { + var hooks = cur.$options.errorCaptured; + if (hooks) { + for (var i = 0; i < hooks.length; i++) { + try { + var capture = hooks[i].call(cur, err, vm, info) === false; + if (capture) { return } + } catch (e) { + globalHandleError(e, cur, 'errorCaptured hook'); + } + } + } + } + } + globalHandleError(err, vm, info); + } finally { + popTarget(); + } + } + + function invokeWithErrorHandling ( + handler, + context, + args, + vm, + info + ) { + var res; + try { + res = args ? handler.apply(context, args) : handler.call(context); + if (res && !res._isVue && isPromise(res) && !res._handled) { + res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); }); + // issue #9511 + // avoid catch triggering multiple times when nested calls + res._handled = true; + } + } catch (e) { + handleError(e, vm, info); + } + return res + } + + function globalHandleError (err, vm, info) { + if (config.errorHandler) { + try { + return config.errorHandler.call(null, err, vm, info) + } catch (e) { + // if the user intentionally throws the original error in the handler, + // do not log it twice + if (e !== err) { + logError(e, null, 'config.errorHandler'); + } + } + } + logError(err, vm, info); + } + + function logError (err, vm, info) { + { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if ((inBrowser || inWeex) && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } + } + + /* */ + + var isUsingMicroTask = false; + + var callbacks = []; + var pending = false; + + function flushCallbacks () { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } + + // Here we have async deferring wrappers using microtasks. + // In 2.5 we used (macro) tasks (in combination with microtasks). + // However, it has subtle problems when state is changed right before repaint + // (e.g. #6813, out-in transitions). + // Also, using (macro) tasks in event handler would cause some weird behaviors + // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109). + // So we now use microtasks everywhere, again. + // A major drawback of this tradeoff is that there are some scenarios + // where microtasks have too high a priority and fire in between supposedly + // sequential events (e.g. #4521, #6690, which have workarounds) + // or even between bubbling of the same event (#6566). + var timerFunc; + + // The nextTick behavior leverages the microtask queue, which can be accessed + // via either native Promise.then or MutationObserver. + // MutationObserver has wider support, however it is seriously bugged in + // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It + // completely stops working after triggering a few times... so, if native + // Promise is available, we will use it: + /* istanbul ignore next, $flow-disable-line */ + if (typeof Promise !== 'undefined' && isNative(Promise)) { + var p = Promise.resolve(); + timerFunc = function () { + p.then(flushCallbacks); + // In problematic UIWebViews, Promise.then doesn't completely break, but + // it can get stuck in a weird state where callbacks are pushed into the + // microtask queue but the queue isn't being flushed, until the browser + // needs to do some other work, e.g. handle a timer. Therefore we can + // "force" the microtask queue to be flushed by adding an empty timer. + if (isIOS) { setTimeout(noop); } + }; + isUsingMicroTask = true; + } else if (!isIE && typeof MutationObserver !== 'undefined' && ( + isNative(MutationObserver) || + // PhantomJS and iOS 7.x + MutationObserver.toString() === '[object MutationObserverConstructor]' + )) { + // Use MutationObserver where native Promise is not available, + // e.g. PhantomJS, iOS7, Android 4.4 + // (#6466 MutationObserver is unreliable in IE11) + var counter = 1; + var observer = new MutationObserver(flushCallbacks); + var textNode = document.createTextNode(String(counter)); + observer.observe(textNode, { + characterData: true + }); + timerFunc = function () { + counter = (counter + 1) % 2; + textNode.data = String(counter); + }; + isUsingMicroTask = true; + } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { + // Fallback to setImmediate. + // Technically it leverages the (macro) task queue, + // but it is still a better choice than setTimeout. + timerFunc = function () { + setImmediate(flushCallbacks); + }; + } else { + // Fallback to setTimeout. + timerFunc = function () { + setTimeout(flushCallbacks, 0); + }; + } + + function nextTick (cb, ctx) { + var _resolve; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + handleError(e, ctx, 'nextTick'); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + timerFunc(); + } + // $flow-disable-line + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve) { + _resolve = resolve; + }) + } + } + + /* */ + + var mark; + var measure; + + { + var perf = inBrowser && window.performance; + /* istanbul ignore if */ + if ( + perf && + perf.mark && + perf.measure && + perf.clearMarks && + perf.clearMeasures + ) { + mark = function (tag) { return perf.mark(tag); }; + measure = function (name, startTag, endTag) { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + // perf.clearMeasures(name) + }; + } + } + + /* not type checking this file because flow doesn't play well with Proxy */ + + var initProxy; + + { + var allowedGlobals = makeMap( + 'Infinity,undefined,NaN,isFinite,isNaN,' + + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + + 'require' // for Webpack/Browserify + ); + + var warnNonPresent = function (target, key) { + warn( + "Property or method \"" + key + "\" is not defined on the instance but " + + 'referenced during render. Make sure that this property is reactive, ' + + 'either in the data option, or for class-based components, by ' + + 'initializing the property. ' + + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', + target + ); + }; + + var warnReservedPrefix = function (target, key) { + warn( + "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " + + 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + + 'prevent conflicts with Vue internals. ' + + 'See: https://vuejs.org/v2/api/#data', + target + ); + }; + + var hasProxy = + typeof Proxy !== 'undefined' && isNative(Proxy); + + if (hasProxy) { + var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); + config.keyCodes = new Proxy(config.keyCodes, { + set: function set (target, key, value) { + if (isBuiltInModifier(key)) { + warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key)); + return false + } else { + target[key] = value; + return true + } + } + }); + } + + var hasHandler = { + has: function has (target, key) { + var has = key in target; + var isAllowed = allowedGlobals(key) || + (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data)); + if (!has && !isAllowed) { + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } + } + return has || !isAllowed + } + }; + + var getHandler = { + get: function get (target, key) { + if (typeof key === 'string' && !(key in target)) { + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } + } + return target[key] + } + }; + + initProxy = function initProxy (vm) { + if (hasProxy) { + // determine which proxy handler to use + var options = vm.$options; + var handlers = options.render && options.render._withStripped + ? getHandler + : hasHandler; + vm._renderProxy = new Proxy(vm, handlers); + } else { + vm._renderProxy = vm; + } + }; + } + + /* */ + + var seenObjects = new _Set(); + + /** + * Recursively traverse an object to evoke all converted + * getters, so that every nested property inside the object + * is collected as a "deep" dependency. + */ + function traverse (val) { + _traverse(val, seenObjects); + seenObjects.clear(); + } + + function _traverse (val, seen) { + var i, keys; + var isA = Array.isArray(val); + if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) { + return + } + if (val.__ob__) { + var depId = val.__ob__.dep.id; + if (seen.has(depId)) { + return + } + seen.add(depId); + } + if (isA) { + i = val.length; + while (i--) { _traverse(val[i], seen); } + } else { + keys = Object.keys(val); + i = keys.length; + while (i--) { _traverse(val[keys[i]], seen); } + } + } + + /* */ + + var normalizeEvent = cached(function (name) { + var passive = name.charAt(0) === '&'; + name = passive ? name.slice(1) : name; + var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first + name = once$$1 ? name.slice(1) : name; + var capture = name.charAt(0) === '!'; + name = capture ? name.slice(1) : name; + return { + name: name, + once: once$$1, + capture: capture, + passive: passive + } + }); + + function createFnInvoker (fns, vm) { + function invoker () { + var arguments$1 = arguments; + + var fns = invoker.fns; + if (Array.isArray(fns)) { + var cloned = fns.slice(); + for (var i = 0; i < cloned.length; i++) { + invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler"); + } + } else { + // return handler return value for single handlers + return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler") + } + } + invoker.fns = fns; + return invoker + } + + function updateListeners ( + on, + oldOn, + add, + remove$$1, + createOnceHandler, + vm + ) { + var name, def$$1, cur, old, event; + for (name in on) { + def$$1 = cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + if (isUndef(cur)) { + warn( + "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), + vm + ); + } else if (isUndef(old)) { + if (isUndef(cur.fns)) { + cur = on[name] = createFnInvoker(cur, vm); + } + if (isTrue(event.once)) { + cur = on[name] = createOnceHandler(event.name, cur, event.capture); + } + add(event.name, cur, event.capture, event.passive, event.params); + } else if (cur !== old) { + old.fns = cur; + on[name] = old; + } + } + for (name in oldOn) { + if (isUndef(on[name])) { + event = normalizeEvent(name); + remove$$1(event.name, oldOn[name], event.capture); + } + } + } + + /* */ + + function mergeVNodeHook (def, hookKey, hook) { + if (def instanceof VNode) { + def = def.data.hook || (def.data.hook = {}); + } + var invoker; + var oldHook = def[hookKey]; + + function wrappedHook () { + hook.apply(this, arguments); + // important: remove merged hook to ensure it's called only once + // and prevent memory leak + remove(invoker.fns, wrappedHook); + } + + if (isUndef(oldHook)) { + // no existing hook + invoker = createFnInvoker([wrappedHook]); + } else { + /* istanbul ignore if */ + if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { + // already a merged invoker + invoker = oldHook; + invoker.fns.push(wrappedHook); + } else { + // existing plain hook + invoker = createFnInvoker([oldHook, wrappedHook]); + } + } + + invoker.merged = true; + def[hookKey] = invoker; + } + + /* */ + + function extractPropsFromVNodeData ( + data, + Ctor, + tag + ) { + // we are only extracting raw values here. + // validation and default values are handled in the child + // component itself. + var propOptions = Ctor.options.props; + if (isUndef(propOptions)) { + return + } + var res = {}; + var attrs = data.attrs; + var props = data.props; + if (isDef(attrs) || isDef(props)) { + for (var key in propOptions) { + var altKey = hyphenate(key); + { + var keyInLowerCase = key.toLowerCase(); + if ( + key !== keyInLowerCase && + attrs && hasOwn(attrs, keyInLowerCase) + ) { + tip( + "Prop \"" + keyInLowerCase + "\" is passed to component " + + (formatComponentName(tag || Ctor)) + ", but the declared prop name is" + + " \"" + key + "\". " + + "Note that HTML attributes are case-insensitive and camelCased " + + "props need to use their kebab-case equivalents when using in-DOM " + + "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"." + ); + } + } + checkProp(res, props, key, altKey, true) || + checkProp(res, attrs, key, altKey, false); + } + } + return res + } + + function checkProp ( + res, + hash, + key, + altKey, + preserve + ) { + if (isDef(hash)) { + if (hasOwn(hash, key)) { + res[key] = hash[key]; + if (!preserve) { + delete hash[key]; + } + return true + } else if (hasOwn(hash, altKey)) { + res[key] = hash[altKey]; + if (!preserve) { + delete hash[altKey]; + } + return true + } + } + return false + } + + /* */ + + // The template compiler attempts to minimize the need for normalization by + // statically analyzing the template at compile time. + // + // For plain HTML markup, normalization can be completely skipped because the + // generated render function is guaranteed to return Array<VNode>. There are + // two cases where extra normalization is needed: + + // 1. When the children contains components - because a functional component + // may return an Array instead of a single root. In this case, just a simple + // normalization is needed - if any child is an Array, we flatten the whole + // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep + // because functional components already normalize their own children. + function simpleNormalizeChildren (children) { + for (var i = 0; i < children.length; i++) { + if (Array.isArray(children[i])) { + return Array.prototype.concat.apply([], children) + } + } + return children + } + + // 2. When the children contains constructs that always generated nested Arrays, + // e.g. <template>, <slot>, v-for, or when the children is provided by user + // with hand-written render functions / JSX. In such cases a full normalization + // is needed to cater to all possible types of children values. + function normalizeChildren (children) { + return isPrimitive(children) + ? [createTextVNode(children)] + : Array.isArray(children) + ? normalizeArrayChildren(children) + : undefined + } + + function isTextNode (node) { + return isDef(node) && isDef(node.text) && isFalse(node.isComment) + } + + function normalizeArrayChildren (children, nestedIndex) { + var res = []; + var i, c, lastIndex, last; + for (i = 0; i < children.length; i++) { + c = children[i]; + if (isUndef(c) || typeof c === 'boolean') { continue } + lastIndex = res.length - 1; + last = res[lastIndex]; + // nested + if (Array.isArray(c)) { + if (c.length > 0) { + c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i)); + // merge adjacent text nodes + if (isTextNode(c[0]) && isTextNode(last)) { + res[lastIndex] = createTextVNode(last.text + (c[0]).text); + c.shift(); + } + res.push.apply(res, c); + } + } else if (isPrimitive(c)) { + if (isTextNode(last)) { + // merge adjacent text nodes + // this is necessary for SSR hydration because text nodes are + // essentially merged when rendered to HTML strings + res[lastIndex] = createTextVNode(last.text + c); + } else if (c !== '') { + // convert primitive to vnode + res.push(createTextVNode(c)); + } + } else { + if (isTextNode(c) && isTextNode(last)) { + // merge adjacent text nodes + res[lastIndex] = createTextVNode(last.text + c.text); + } else { + // default key for nested array children (likely generated by v-for) + if (isTrue(children._isVList) && + isDef(c.tag) && + isUndef(c.key) && + isDef(nestedIndex)) { + c.key = "__vlist" + nestedIndex + "_" + i + "__"; + } + res.push(c); + } + } + } + return res + } + + /* */ + + function initProvide (vm) { + var provide = vm.$options.provide; + if (provide) { + vm._provided = typeof provide === 'function' + ? provide.call(vm) + : provide; + } + } + + function initInjections (vm) { + var result = resolveInject(vm.$options.inject, vm); + if (result) { + toggleObserving(false); + Object.keys(result).forEach(function (key) { + /* istanbul ignore else */ + { + defineReactive$$1(vm, key, result[key], function () { + warn( + "Avoid mutating an injected value directly since the changes will be " + + "overwritten whenever the provided component re-renders. " + + "injection being mutated: \"" + key + "\"", + vm + ); + }); + } + }); + toggleObserving(true); + } + } + + function resolveInject (inject, vm) { + if (inject) { + // inject is :any because flow is not smart enough to figure out cached + var result = Object.create(null); + var keys = hasSymbol + ? Reflect.ownKeys(inject) + : Object.keys(inject); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + // #6574 in case the inject object is observed... + if (key === '__ob__') { continue } + var provideKey = inject[key].from; + var source = vm; + while (source) { + if (source._provided && hasOwn(source._provided, provideKey)) { + result[key] = source._provided[provideKey]; + break + } + source = source.$parent; + } + if (!source) { + if ('default' in inject[key]) { + var provideDefault = inject[key].default; + result[key] = typeof provideDefault === 'function' + ? provideDefault.call(vm) + : provideDefault; + } else { + warn(("Injection \"" + key + "\" not found"), vm); + } + } + } + return result + } + } + + /* */ + + + + /** + * Runtime helper for resolving raw children VNodes into a slot object. + */ + function resolveSlots ( + children, + context + ) { + if (!children || !children.length) { + return {} + } + var slots = {}; + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i]; + var data = child.data; + // remove slot attribute if the node is resolved as a Vue slot node + if (data && data.attrs && data.attrs.slot) { + delete data.attrs.slot; + } + // named slots should only be respected if the vnode was rendered in the + // same context. + if ((child.context === context || child.fnContext === context) && + data && data.slot != null + ) { + var name = data.slot; + var slot = (slots[name] || (slots[name] = [])); + if (child.tag === 'template') { + slot.push.apply(slot, child.children || []); + } else { + slot.push(child); + } + } else { + (slots.default || (slots.default = [])).push(child); + } + } + // ignore slots that contains only whitespace + for (var name$1 in slots) { + if (slots[name$1].every(isWhitespace)) { + delete slots[name$1]; + } + } + return slots + } + + function isWhitespace (node) { + return (node.isComment && !node.asyncFactory) || node.text === ' ' + } + + /* */ + + function isAsyncPlaceholder (node) { + return node.isComment && node.asyncFactory + } + + /* */ + + function normalizeScopedSlots ( + slots, + normalSlots, + prevSlots + ) { + var res; + var hasNormalSlots = Object.keys(normalSlots).length > 0; + var isStable = slots ? !!slots.$stable : !hasNormalSlots; + var key = slots && slots.$key; + if (!slots) { + res = {}; + } else if (slots._normalized) { + // fast path 1: child component re-render only, parent did not change + return slots._normalized + } else if ( + isStable && + prevSlots && + prevSlots !== emptyObject && + key === prevSlots.$key && + !hasNormalSlots && + !prevSlots.$hasNormal + ) { + // fast path 2: stable scoped slots w/ no normal slots to proxy, + // only need to normalize once + return prevSlots + } else { + res = {}; + for (var key$1 in slots) { + if (slots[key$1] && key$1[0] !== '$') { + res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]); + } + } + } + // expose normal slots on scopedSlots + for (var key$2 in normalSlots) { + if (!(key$2 in res)) { + res[key$2] = proxyNormalSlot(normalSlots, key$2); + } + } + // avoriaz seems to mock a non-extensible $scopedSlots object + // and when that is passed down this would cause an error + if (slots && Object.isExtensible(slots)) { + (slots)._normalized = res; + } + def(res, '$stable', isStable); + def(res, '$key', key); + def(res, '$hasNormal', hasNormalSlots); + return res + } + + function normalizeScopedSlot(normalSlots, key, fn) { + var normalized = function () { + var res = arguments.length ? fn.apply(null, arguments) : fn({}); + res = res && typeof res === 'object' && !Array.isArray(res) + ? [res] // single vnode + : normalizeChildren(res); + var vnode = res && res[0]; + return res && ( + !vnode || + (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode)) // #9658, #10391 + ) ? undefined + : res + }; + // this is a slot using the new v-slot syntax without scope. although it is + // compiled as a scoped slot, render fn users would expect it to be present + // on this.$slots because the usage is semantically a normal slot. + if (fn.proxy) { + Object.defineProperty(normalSlots, key, { + get: normalized, + enumerable: true, + configurable: true + }); + } + return normalized + } + + function proxyNormalSlot(slots, key) { + return function () { return slots[key]; } + } + + /* */ + + /** + * Runtime helper for rendering v-for lists. + */ + function renderList ( + val, + render + ) { + var ret, i, l, keys, key; + if (Array.isArray(val) || typeof val === 'string') { + ret = new Array(val.length); + for (i = 0, l = val.length; i < l; i++) { + ret[i] = render(val[i], i); + } + } else if (typeof val === 'number') { + ret = new Array(val); + for (i = 0; i < val; i++) { + ret[i] = render(i + 1, i); + } + } else if (isObject(val)) { + if (hasSymbol && val[Symbol.iterator]) { + ret = []; + var iterator = val[Symbol.iterator](); + var result = iterator.next(); + while (!result.done) { + ret.push(render(result.value, ret.length)); + result = iterator.next(); + } + } else { + keys = Object.keys(val); + ret = new Array(keys.length); + for (i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + ret[i] = render(val[key], key, i); + } + } + } + if (!isDef(ret)) { + ret = []; + } + (ret)._isVList = true; + return ret + } + + /* */ + + /** + * Runtime helper for rendering <slot> + */ + function renderSlot ( + name, + fallbackRender, + props, + bindObject + ) { + var scopedSlotFn = this.$scopedSlots[name]; + var nodes; + if (scopedSlotFn) { + // scoped slot + props = props || {}; + if (bindObject) { + if (!isObject(bindObject)) { + warn('slot v-bind without argument expects an Object', this); + } + props = extend(extend({}, bindObject), props); + } + nodes = + scopedSlotFn(props) || + (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender); + } else { + nodes = + this.$slots[name] || + (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender); + } + + var target = props && props.slot; + if (target) { + return this.$createElement('template', { slot: target }, nodes) + } else { + return nodes + } + } + + /* */ + + /** + * Runtime helper for resolving filters + */ + function resolveFilter (id) { + return resolveAsset(this.$options, 'filters', id, true) || identity + } + + /* */ + + function isKeyNotMatch (expect, actual) { + if (Array.isArray(expect)) { + return expect.indexOf(actual) === -1 + } else { + return expect !== actual + } + } + + /** + * Runtime helper for checking keyCodes from config. + * exposed as Vue.prototype._k + * passing in eventKeyName as last argument separately for backwards compat + */ + function checkKeyCodes ( + eventKeyCode, + key, + builtInKeyCode, + eventKeyName, + builtInKeyName + ) { + var mappedKeyCode = config.keyCodes[key] || builtInKeyCode; + if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { + return isKeyNotMatch(builtInKeyName, eventKeyName) + } else if (mappedKeyCode) { + return isKeyNotMatch(mappedKeyCode, eventKeyCode) + } else if (eventKeyName) { + return hyphenate(eventKeyName) !== key + } + return eventKeyCode === undefined + } + + /* */ + + /** + * Runtime helper for merging v-bind="object" into a VNode's data. + */ + function bindObjectProps ( + data, + tag, + value, + asProp, + isSync + ) { + if (value) { + if (!isObject(value)) { + warn( + 'v-bind without argument expects an Object or Array value', + this + ); + } else { + if (Array.isArray(value)) { + value = toObject(value); + } + var hash; + var loop = function ( key ) { + if ( + key === 'class' || + key === 'style' || + isReservedAttribute(key) + ) { + hash = data; + } else { + var type = data.attrs && data.attrs.type; + hash = asProp || config.mustUseProp(tag, type, key) + ? data.domProps || (data.domProps = {}) + : data.attrs || (data.attrs = {}); + } + var camelizedKey = camelize(key); + var hyphenatedKey = hyphenate(key); + if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { + hash[key] = value[key]; + + if (isSync) { + var on = data.on || (data.on = {}); + on[("update:" + key)] = function ($event) { + value[key] = $event; + }; + } + } + }; + + for (var key in value) loop( key ); + } + } + return data + } + + /* */ + + /** + * Runtime helper for rendering static trees. + */ + function renderStatic ( + index, + isInFor + ) { + var cached = this._staticTrees || (this._staticTrees = []); + var tree = cached[index]; + // if has already-rendered static tree and not inside v-for, + // we can reuse the same tree. + if (tree && !isInFor) { + return tree + } + // otherwise, render a fresh tree. + tree = cached[index] = this.$options.staticRenderFns[index].call( + this._renderProxy, + null, + this // for render fns generated for functional component templates + ); + markStatic(tree, ("__static__" + index), false); + return tree + } + + /** + * Runtime helper for v-once. + * Effectively it means marking the node as static with a unique key. + */ + function markOnce ( + tree, + index, + key + ) { + markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true); + return tree + } + + function markStatic ( + tree, + key, + isOnce + ) { + if (Array.isArray(tree)) { + for (var i = 0; i < tree.length; i++) { + if (tree[i] && typeof tree[i] !== 'string') { + markStaticNode(tree[i], (key + "_" + i), isOnce); + } + } + } else { + markStaticNode(tree, key, isOnce); + } + } + + function markStaticNode (node, key, isOnce) { + node.isStatic = true; + node.key = key; + node.isOnce = isOnce; + } + + /* */ + + function bindObjectListeners (data, value) { + if (value) { + if (!isPlainObject(value)) { + warn( + 'v-on without argument expects an Object value', + this + ); + } else { + var on = data.on = data.on ? extend({}, data.on) : {}; + for (var key in value) { + var existing = on[key]; + var ours = value[key]; + on[key] = existing ? [].concat(existing, ours) : ours; + } + } + } + return data + } + + /* */ + + function resolveScopedSlots ( + fns, // see flow/vnode + res, + // the following are added in 2.6 + hasDynamicKeys, + contentHashKey + ) { + res = res || { $stable: !hasDynamicKeys }; + for (var i = 0; i < fns.length; i++) { + var slot = fns[i]; + if (Array.isArray(slot)) { + resolveScopedSlots(slot, res, hasDynamicKeys); + } else if (slot) { + // marker for reverse proxying v-slot without scope on this.$slots + if (slot.proxy) { + slot.fn.proxy = true; + } + res[slot.key] = slot.fn; + } + } + if (contentHashKey) { + (res).$key = contentHashKey; + } + return res + } + + /* */ + + function bindDynamicKeys (baseObj, values) { + for (var i = 0; i < values.length; i += 2) { + var key = values[i]; + if (typeof key === 'string' && key) { + baseObj[values[i]] = values[i + 1]; + } else if (key !== '' && key !== null) { + // null is a special value for explicitly removing a binding + warn( + ("Invalid value for dynamic directive argument (expected string or null): " + key), + this + ); + } + } + return baseObj + } + + // helper to dynamically append modifier runtime markers to event names. + // ensure only append when value is already string, otherwise it will be cast + // to string and cause the type check to miss. + function prependModifier (value, symbol) { + return typeof value === 'string' ? symbol + value : value + } + + /* */ + + function installRenderHelpers (target) { + target._o = markOnce; + target._n = toNumber; + target._s = toString; + target._l = renderList; + target._t = renderSlot; + target._q = looseEqual; + target._i = looseIndexOf; + target._m = renderStatic; + target._f = resolveFilter; + target._k = checkKeyCodes; + target._b = bindObjectProps; + target._v = createTextVNode; + target._e = createEmptyVNode; + target._u = resolveScopedSlots; + target._g = bindObjectListeners; + target._d = bindDynamicKeys; + target._p = prependModifier; + } + + /* */ + + function FunctionalRenderContext ( + data, + props, + children, + parent, + Ctor + ) { + var this$1 = this; + + var options = Ctor.options; + // ensure the createElement function in functional components + // gets a unique context - this is necessary for correct named slot check + var contextVm; + if (hasOwn(parent, '_uid')) { + contextVm = Object.create(parent); + // $flow-disable-line + contextVm._original = parent; + } else { + // the context vm passed in is a functional context as well. + // in this case we want to make sure we are able to get a hold to the + // real context instance. + contextVm = parent; + // $flow-disable-line + parent = parent._original; + } + var isCompiled = isTrue(options._compiled); + var needNormalization = !isCompiled; + + this.data = data; + this.props = props; + this.children = children; + this.parent = parent; + this.listeners = data.on || emptyObject; + this.injections = resolveInject(options.inject, parent); + this.slots = function () { + if (!this$1.$slots) { + normalizeScopedSlots( + data.scopedSlots, + this$1.$slots = resolveSlots(children, parent) + ); + } + return this$1.$slots + }; + + Object.defineProperty(this, 'scopedSlots', ({ + enumerable: true, + get: function get () { + return normalizeScopedSlots(data.scopedSlots, this.slots()) + } + })); + + // support for compiled functional template + if (isCompiled) { + // exposing $options for renderStatic() + this.$options = options; + // pre-resolve slots for renderSlot() + this.$slots = this.slots(); + this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots); + } + + if (options._scopeId) { + this._c = function (a, b, c, d) { + var vnode = createElement(contextVm, a, b, c, d, needNormalization); + if (vnode && !Array.isArray(vnode)) { + vnode.fnScopeId = options._scopeId; + vnode.fnContext = parent; + } + return vnode + }; + } else { + this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); }; + } + } + + installRenderHelpers(FunctionalRenderContext.prototype); + + function createFunctionalComponent ( + Ctor, + propsData, + data, + contextVm, + children + ) { + var options = Ctor.options; + var props = {}; + var propOptions = options.props; + if (isDef(propOptions)) { + for (var key in propOptions) { + props[key] = validateProp(key, propOptions, propsData || emptyObject); + } + } else { + if (isDef(data.attrs)) { mergeProps(props, data.attrs); } + if (isDef(data.props)) { mergeProps(props, data.props); } + } + + var renderContext = new FunctionalRenderContext( + data, + props, + children, + contextVm, + Ctor + ); + + var vnode = options.render.call(null, renderContext._c, renderContext); + + if (vnode instanceof VNode) { + return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext) + } else if (Array.isArray(vnode)) { + var vnodes = normalizeChildren(vnode) || []; + var res = new Array(vnodes.length); + for (var i = 0; i < vnodes.length; i++) { + res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext); + } + return res + } + } + + function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) { + // #7817 clone node before setting fnContext, otherwise if the node is reused + // (e.g. it was from a cached normal slot) the fnContext causes named slots + // that should not be matched to match. + var clone = cloneVNode(vnode); + clone.fnContext = contextVm; + clone.fnOptions = options; + { + (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext; + } + if (data.slot) { + (clone.data || (clone.data = {})).slot = data.slot; + } + return clone + } + + function mergeProps (to, from) { + for (var key in from) { + to[camelize(key)] = from[key]; + } + } + + /* */ + + /* */ + + /* */ + + /* */ + + // inline hooks to be invoked on component VNodes during patch + var componentVNodeHooks = { + init: function init (vnode, hydrating) { + if ( + vnode.componentInstance && + !vnode.componentInstance._isDestroyed && + vnode.data.keepAlive + ) { + // kept-alive components, treat as a patch + var mountedNode = vnode; // work around flow + componentVNodeHooks.prepatch(mountedNode, mountedNode); + } else { + var child = vnode.componentInstance = createComponentInstanceForVnode( + vnode, + activeInstance + ); + child.$mount(hydrating ? vnode.elm : undefined, hydrating); + } + }, + + prepatch: function prepatch (oldVnode, vnode) { + var options = vnode.componentOptions; + var child = vnode.componentInstance = oldVnode.componentInstance; + updateChildComponent( + child, + options.propsData, // updated props + options.listeners, // updated listeners + vnode, // new parent vnode + options.children // new children + ); + }, + + insert: function insert (vnode) { + var context = vnode.context; + var componentInstance = vnode.componentInstance; + if (!componentInstance._isMounted) { + componentInstance._isMounted = true; + callHook(componentInstance, 'mounted'); + } + if (vnode.data.keepAlive) { + if (context._isMounted) { + // vue-router#1212 + // During updates, a kept-alive component's child components may + // change, so directly walking the tree here may call activated hooks + // on incorrect children. Instead we push them into a queue which will + // be processed after the whole patch process ended. + queueActivatedComponent(componentInstance); + } else { + activateChildComponent(componentInstance, true /* direct */); + } + } + }, + + destroy: function destroy (vnode) { + var componentInstance = vnode.componentInstance; + if (!componentInstance._isDestroyed) { + if (!vnode.data.keepAlive) { + componentInstance.$destroy(); + } else { + deactivateChildComponent(componentInstance, true /* direct */); + } + } + } + }; + + var hooksToMerge = Object.keys(componentVNodeHooks); + + function createComponent ( + Ctor, + data, + context, + children, + tag + ) { + if (isUndef(Ctor)) { + return + } + + var baseCtor = context.$options._base; + + // plain options object: turn it into a constructor + if (isObject(Ctor)) { + Ctor = baseCtor.extend(Ctor); + } + + // if at this stage it's not a constructor or an async component factory, + // reject. + if (typeof Ctor !== 'function') { + { + warn(("Invalid Component definition: " + (String(Ctor))), context); + } + return + } + + // async component + var asyncFactory; + if (isUndef(Ctor.cid)) { + asyncFactory = Ctor; + Ctor = resolveAsyncComponent(asyncFactory, baseCtor); + if (Ctor === undefined) { + // return a placeholder node for async component, which is rendered + // as a comment node but preserves all the raw information for the node. + // the information will be used for async server-rendering and hydration. + return createAsyncPlaceholder( + asyncFactory, + data, + context, + children, + tag + ) + } + } + + data = data || {}; + + // resolve constructor options in case global mixins are applied after + // component constructor creation + resolveConstructorOptions(Ctor); + + // transform component v-model data into props & events + if (isDef(data.model)) { + transformModel(Ctor.options, data); + } + + // extract props + var propsData = extractPropsFromVNodeData(data, Ctor, tag); + + // functional component + if (isTrue(Ctor.options.functional)) { + return createFunctionalComponent(Ctor, propsData, data, context, children) + } + + // extract listeners, since these needs to be treated as + // child component listeners instead of DOM listeners + var listeners = data.on; + // replace with listeners with .native modifier + // so it gets processed during parent component patch. + data.on = data.nativeOn; + + if (isTrue(Ctor.options.abstract)) { + // abstract components do not keep anything + // other than props & listeners & slot + + // work around flow + var slot = data.slot; + data = {}; + if (slot) { + data.slot = slot; + } + } + + // install component management hooks onto the placeholder node + installComponentHooks(data); + + // return a placeholder vnode + var name = Ctor.options.name || tag; + var vnode = new VNode( + ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')), + data, undefined, undefined, undefined, context, + { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, + asyncFactory + ); + + return vnode + } + + function createComponentInstanceForVnode ( + // we know it's MountedComponentVNode but flow doesn't + vnode, + // activeInstance in lifecycle state + parent + ) { + var options = { + _isComponent: true, + _parentVnode: vnode, + parent: parent + }; + // check inline-template render functions + var inlineTemplate = vnode.data.inlineTemplate; + if (isDef(inlineTemplate)) { + options.render = inlineTemplate.render; + options.staticRenderFns = inlineTemplate.staticRenderFns; + } + return new vnode.componentOptions.Ctor(options) + } + + function installComponentHooks (data) { + var hooks = data.hook || (data.hook = {}); + for (var i = 0; i < hooksToMerge.length; i++) { + var key = hooksToMerge[i]; + var existing = hooks[key]; + var toMerge = componentVNodeHooks[key]; + if (existing !== toMerge && !(existing && existing._merged)) { + hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge; + } + } + } + + function mergeHook$1 (f1, f2) { + var merged = function (a, b) { + // flow complains about extra args which is why we use any + f1(a, b); + f2(a, b); + }; + merged._merged = true; + return merged + } + + // transform component v-model info (value and callback) into + // prop and event handler respectively. + function transformModel (options, data) { + var prop = (options.model && options.model.prop) || 'value'; + var event = (options.model && options.model.event) || 'input' + ;(data.attrs || (data.attrs = {}))[prop] = data.model.value; + var on = data.on || (data.on = {}); + var existing = on[event]; + var callback = data.model.callback; + if (isDef(existing)) { + if ( + Array.isArray(existing) + ? existing.indexOf(callback) === -1 + : existing !== callback + ) { + on[event] = [callback].concat(existing); + } + } else { + on[event] = callback; + } + } + + /* */ + + var SIMPLE_NORMALIZE = 1; + var ALWAYS_NORMALIZE = 2; + + // wrapper function for providing a more flexible interface + // without getting yelled at by flow + function createElement ( + context, + tag, + data, + children, + normalizationType, + alwaysNormalize + ) { + if (Array.isArray(data) || isPrimitive(data)) { + normalizationType = children; + children = data; + data = undefined; + } + if (isTrue(alwaysNormalize)) { + normalizationType = ALWAYS_NORMALIZE; + } + return _createElement(context, tag, data, children, normalizationType) + } + + function _createElement ( + context, + tag, + data, + children, + normalizationType + ) { + if (isDef(data) && isDef((data).__ob__)) { + warn( + "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" + + 'Always create fresh vnode data objects in each render!', + context + ); + return createEmptyVNode() + } + // object syntax in v-bind + if (isDef(data) && isDef(data.is)) { + tag = data.is; + } + if (!tag) { + // in case of component :is set to falsy value + return createEmptyVNode() + } + // warn against non-primitive key + if (isDef(data) && isDef(data.key) && !isPrimitive(data.key) + ) { + { + warn( + 'Avoid using non-primitive value as key, ' + + 'use string/number value instead.', + context + ); + } + } + // support single function children as default scoped slot + if (Array.isArray(children) && + typeof children[0] === 'function' + ) { + data = data || {}; + data.scopedSlots = { default: children[0] }; + children.length = 0; + } + if (normalizationType === ALWAYS_NORMALIZE) { + children = normalizeChildren(children); + } else if (normalizationType === SIMPLE_NORMALIZE) { + children = simpleNormalizeChildren(children); + } + var vnode, ns; + if (typeof tag === 'string') { + var Ctor; + ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); + if (config.isReservedTag(tag)) { + // platform built-in elements + if (isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') { + warn( + ("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."), + context + ); + } + vnode = new VNode( + config.parsePlatformTagName(tag), data, children, + undefined, undefined, context + ); + } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { + // component + vnode = createComponent(Ctor, data, context, children, tag); + } else { + // unknown or unlisted namespaced elements + // check at runtime because it may get assigned a namespace when its + // parent normalizes children + vnode = new VNode( + tag, data, children, + undefined, undefined, context + ); + } + } else { + // direct component options / constructor + vnode = createComponent(tag, data, context, children); + } + if (Array.isArray(vnode)) { + return vnode + } else if (isDef(vnode)) { + if (isDef(ns)) { applyNS(vnode, ns); } + if (isDef(data)) { registerDeepBindings(data); } + return vnode + } else { + return createEmptyVNode() + } + } + + function applyNS (vnode, ns, force) { + vnode.ns = ns; + if (vnode.tag === 'foreignObject') { + // use default namespace inside foreignObject + ns = undefined; + force = true; + } + if (isDef(vnode.children)) { + for (var i = 0, l = vnode.children.length; i < l; i++) { + var child = vnode.children[i]; + if (isDef(child.tag) && ( + isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) { + applyNS(child, ns, force); + } + } + } + } + + // ref #5318 + // necessary to ensure parent re-render when deep bindings like :style and + // :class are used on slot nodes + function registerDeepBindings (data) { + if (isObject(data.style)) { + traverse(data.style); + } + if (isObject(data.class)) { + traverse(data.class); + } + } + + /* */ + + function initRender (vm) { + vm._vnode = null; // the root of the child tree + vm._staticTrees = null; // v-once cached trees + var options = vm.$options; + var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree + var renderContext = parentVnode && parentVnode.context; + vm.$slots = resolveSlots(options._renderChildren, renderContext); + vm.$scopedSlots = emptyObject; + // bind the createElement fn to this instance + // so that we get proper render context inside it. + // args order: tag, data, children, normalizationType, alwaysNormalize + // internal version is used by render functions compiled from templates + vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); }; + // normalization is always applied for the public version, used in + // user-written render functions. + vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); }; + + // $attrs & $listeners are exposed for easier HOC creation. + // they need to be reactive so that HOCs using them are always updated + var parentData = parentVnode && parentVnode.data; + + /* istanbul ignore else */ + { + defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { + !isUpdatingChildComponent && warn("$attrs is readonly.", vm); + }, true); + defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () { + !isUpdatingChildComponent && warn("$listeners is readonly.", vm); + }, true); + } + } + + var currentRenderingInstance = null; + + function renderMixin (Vue) { + // install runtime convenience helpers + installRenderHelpers(Vue.prototype); + + Vue.prototype.$nextTick = function (fn) { + return nextTick(fn, this) + }; + + Vue.prototype._render = function () { + var vm = this; + var ref = vm.$options; + var render = ref.render; + var _parentVnode = ref._parentVnode; + + if (_parentVnode) { + vm.$scopedSlots = normalizeScopedSlots( + _parentVnode.data.scopedSlots, + vm.$slots, + vm.$scopedSlots + ); + } + + // set parent vnode. this allows render functions to have access + // to the data on the placeholder node. + vm.$vnode = _parentVnode; + // render self + var vnode; + try { + // There's no need to maintain a stack because all render fns are called + // separately from one another. Nested component's render fns are called + // when parent component is patched. + currentRenderingInstance = vm; + vnode = render.call(vm._renderProxy, vm.$createElement); + } catch (e) { + handleError(e, vm, "render"); + // return error render result, + // or previous vnode to prevent render error causing blank component + /* istanbul ignore else */ + if (vm.$options.renderError) { + try { + vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); + } catch (e) { + handleError(e, vm, "renderError"); + vnode = vm._vnode; + } + } else { + vnode = vm._vnode; + } + } finally { + currentRenderingInstance = null; + } + // if the returned array contains only a single node, allow it + if (Array.isArray(vnode) && vnode.length === 1) { + vnode = vnode[0]; + } + // return empty vnode in case the render function errored out + if (!(vnode instanceof VNode)) { + if (Array.isArray(vnode)) { + warn( + 'Multiple root nodes returned from render function. Render function ' + + 'should return a single root node.', + vm + ); + } + vnode = createEmptyVNode(); + } + // set parent + vnode.parent = _parentVnode; + return vnode + }; + } + + /* */ + + function ensureCtor (comp, base) { + if ( + comp.__esModule || + (hasSymbol && comp[Symbol.toStringTag] === 'Module') + ) { + comp = comp.default; + } + return isObject(comp) + ? base.extend(comp) + : comp + } + + function createAsyncPlaceholder ( + factory, + data, + context, + children, + tag + ) { + var node = createEmptyVNode(); + node.asyncFactory = factory; + node.asyncMeta = { data: data, context: context, children: children, tag: tag }; + return node + } + + function resolveAsyncComponent ( + factory, + baseCtor + ) { + if (isTrue(factory.error) && isDef(factory.errorComp)) { + return factory.errorComp + } + + if (isDef(factory.resolved)) { + return factory.resolved + } + + var owner = currentRenderingInstance; + if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) { + // already pending + factory.owners.push(owner); + } + + if (isTrue(factory.loading) && isDef(factory.loadingComp)) { + return factory.loadingComp + } + + if (owner && !isDef(factory.owners)) { + var owners = factory.owners = [owner]; + var sync = true; + var timerLoading = null; + var timerTimeout = null + + ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); }); + + var forceRender = function (renderCompleted) { + for (var i = 0, l = owners.length; i < l; i++) { + (owners[i]).$forceUpdate(); + } + + if (renderCompleted) { + owners.length = 0; + if (timerLoading !== null) { + clearTimeout(timerLoading); + timerLoading = null; + } + if (timerTimeout !== null) { + clearTimeout(timerTimeout); + timerTimeout = null; + } + } + }; + + var resolve = once(function (res) { + // cache resolved + factory.resolved = ensureCtor(res, baseCtor); + // invoke callbacks only if this is not a synchronous resolve + // (async resolves are shimmed as synchronous during SSR) + if (!sync) { + forceRender(true); + } else { + owners.length = 0; + } + }); + + var reject = once(function (reason) { + warn( + "Failed to resolve async component: " + (String(factory)) + + (reason ? ("\nReason: " + reason) : '') + ); + if (isDef(factory.errorComp)) { + factory.error = true; + forceRender(true); + } + }); + + var res = factory(resolve, reject); + + if (isObject(res)) { + if (isPromise(res)) { + // () => Promise + if (isUndef(factory.resolved)) { + res.then(resolve, reject); + } + } else if (isPromise(res.component)) { + res.component.then(resolve, reject); + + if (isDef(res.error)) { + factory.errorComp = ensureCtor(res.error, baseCtor); + } + + if (isDef(res.loading)) { + factory.loadingComp = ensureCtor(res.loading, baseCtor); + if (res.delay === 0) { + factory.loading = true; + } else { + timerLoading = setTimeout(function () { + timerLoading = null; + if (isUndef(factory.resolved) && isUndef(factory.error)) { + factory.loading = true; + forceRender(false); + } + }, res.delay || 200); + } + } + + if (isDef(res.timeout)) { + timerTimeout = setTimeout(function () { + timerTimeout = null; + if (isUndef(factory.resolved)) { + reject( + "timeout (" + (res.timeout) + "ms)" + ); + } + }, res.timeout); + } + } + } + + sync = false; + // return in case resolved synchronously + return factory.loading + ? factory.loadingComp + : factory.resolved + } + } + + /* */ + + function getFirstComponentChild (children) { + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + var c = children[i]; + if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { + return c + } + } + } + } + + /* */ + + /* */ + + function initEvents (vm) { + vm._events = Object.create(null); + vm._hasHookEvent = false; + // init parent attached events + var listeners = vm.$options._parentListeners; + if (listeners) { + updateComponentListeners(vm, listeners); + } + } + + var target; + + function add (event, fn) { + target.$on(event, fn); + } + + function remove$1 (event, fn) { + target.$off(event, fn); + } + + function createOnceHandler (event, fn) { + var _target = target; + return function onceHandler () { + var res = fn.apply(null, arguments); + if (res !== null) { + _target.$off(event, onceHandler); + } + } + } + + function updateComponentListeners ( + vm, + listeners, + oldListeners + ) { + target = vm; + updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm); + target = undefined; + } + + function eventsMixin (Vue) { + var hookRE = /^hook:/; + Vue.prototype.$on = function (event, fn) { + var vm = this; + if (Array.isArray(event)) { + for (var i = 0, l = event.length; i < l; i++) { + vm.$on(event[i], fn); + } + } else { + (vm._events[event] || (vm._events[event] = [])).push(fn); + // optimize hook:event cost by using a boolean flag marked at registration + // instead of a hash lookup + if (hookRE.test(event)) { + vm._hasHookEvent = true; + } + } + return vm + }; + + Vue.prototype.$once = function (event, fn) { + var vm = this; + function on () { + vm.$off(event, on); + fn.apply(vm, arguments); + } + on.fn = fn; + vm.$on(event, on); + return vm + }; + + Vue.prototype.$off = function (event, fn) { + var vm = this; + // all + if (!arguments.length) { + vm._events = Object.create(null); + return vm + } + // array of events + if (Array.isArray(event)) { + for (var i$1 = 0, l = event.length; i$1 < l; i$1++) { + vm.$off(event[i$1], fn); + } + return vm + } + // specific event + var cbs = vm._events[event]; + if (!cbs) { + return vm + } + if (!fn) { + vm._events[event] = null; + return vm + } + // specific handler + var cb; + var i = cbs.length; + while (i--) { + cb = cbs[i]; + if (cb === fn || cb.fn === fn) { + cbs.splice(i, 1); + break + } + } + return vm + }; + + Vue.prototype.$emit = function (event) { + var vm = this; + { + var lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) { + tip( + "Event \"" + lowerCaseEvent + "\" is emitted in component " + + (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " + + "Note that HTML attributes are case-insensitive and you cannot use " + + "v-on to listen to camelCase events when using in-DOM templates. " + + "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"." + ); + } + } + var cbs = vm._events[event]; + if (cbs) { + cbs = cbs.length > 1 ? toArray(cbs) : cbs; + var args = toArray(arguments, 1); + var info = "event handler for \"" + event + "\""; + for (var i = 0, l = cbs.length; i < l; i++) { + invokeWithErrorHandling(cbs[i], vm, args, vm, info); + } + } + return vm + }; + } + + /* */ + + var activeInstance = null; + var isUpdatingChildComponent = false; + + function setActiveInstance(vm) { + var prevActiveInstance = activeInstance; + activeInstance = vm; + return function () { + activeInstance = prevActiveInstance; + } + } + + function initLifecycle (vm) { + var options = vm.$options; + + // locate first non-abstract parent + var parent = options.parent; + if (parent && !options.abstract) { + while (parent.$options.abstract && parent.$parent) { + parent = parent.$parent; + } + parent.$children.push(vm); + } + + vm.$parent = parent; + vm.$root = parent ? parent.$root : vm; + + vm.$children = []; + vm.$refs = {}; + + vm._watcher = null; + vm._inactive = null; + vm._directInactive = false; + vm._isMounted = false; + vm._isDestroyed = false; + vm._isBeingDestroyed = false; + } + + function lifecycleMixin (Vue) { + Vue.prototype._update = function (vnode, hydrating) { + var vm = this; + var prevEl = vm.$el; + var prevVnode = vm._vnode; + var restoreActiveInstance = setActiveInstance(vm); + vm._vnode = vnode; + // Vue.prototype.__patch__ is injected in entry points + // based on the rendering backend used. + if (!prevVnode) { + // initial render + vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */); + } else { + // updates + vm.$el = vm.__patch__(prevVnode, vnode); + } + restoreActiveInstance(); + // update __vue__ reference + if (prevEl) { + prevEl.__vue__ = null; + } + if (vm.$el) { + vm.$el.__vue__ = vm; + } + // if parent is an HOC, update its $el as well + if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) { + vm.$parent.$el = vm.$el; + } + // updated hook is called by the scheduler to ensure that children are + // updated in a parent's updated hook. + }; + + Vue.prototype.$forceUpdate = function () { + var vm = this; + if (vm._watcher) { + vm._watcher.update(); + } + }; + + Vue.prototype.$destroy = function () { + var vm = this; + if (vm._isBeingDestroyed) { + return + } + callHook(vm, 'beforeDestroy'); + vm._isBeingDestroyed = true; + // remove self from parent + var parent = vm.$parent; + if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) { + remove(parent.$children, vm); + } + // teardown watchers + if (vm._watcher) { + vm._watcher.teardown(); + } + var i = vm._watchers.length; + while (i--) { + vm._watchers[i].teardown(); + } + // remove reference from data ob + // frozen object may not have observer. + if (vm._data.__ob__) { + vm._data.__ob__.vmCount--; + } + // call the last hook... + vm._isDestroyed = true; + // invoke destroy hooks on current rendered tree + vm.__patch__(vm._vnode, null); + // fire destroyed hook + callHook(vm, 'destroyed'); + // turn off all instance listeners. + vm.$off(); + // remove __vue__ reference + if (vm.$el) { + vm.$el.__vue__ = null; + } + // release circular reference (#6759) + if (vm.$vnode) { + vm.$vnode.parent = null; + } + }; + } + + function mountComponent ( + vm, + el, + hydrating + ) { + vm.$el = el; + if (!vm.$options.render) { + vm.$options.render = createEmptyVNode; + { + /* istanbul ignore if */ + if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') || + vm.$options.el || el) { + warn( + 'You are using the runtime-only build of Vue where the template ' + + 'compiler is not available. Either pre-compile the templates into ' + + 'render functions, or use the compiler-included build.', + vm + ); + } else { + warn( + 'Failed to mount component: template or render function not defined.', + vm + ); + } + } + } + callHook(vm, 'beforeMount'); + + var updateComponent; + /* istanbul ignore if */ + if (config.performance && mark) { + updateComponent = function () { + var name = vm._name; + var id = vm._uid; + var startTag = "vue-perf-start:" + id; + var endTag = "vue-perf-end:" + id; + + mark(startTag); + var vnode = vm._render(); + mark(endTag); + measure(("vue " + name + " render"), startTag, endTag); + + mark(startTag); + vm._update(vnode, hydrating); + mark(endTag); + measure(("vue " + name + " patch"), startTag, endTag); + }; + } else { + updateComponent = function () { + vm._update(vm._render(), hydrating); + }; + } + + // we set this to vm._watcher inside the watcher's constructor + // since the watcher's initial patch may call $forceUpdate (e.g. inside child + // component's mounted hook), which relies on vm._watcher being already defined + new Watcher(vm, updateComponent, noop, { + before: function before () { + if (vm._isMounted && !vm._isDestroyed) { + callHook(vm, 'beforeUpdate'); + } + } + }, true /* isRenderWatcher */); + hydrating = false; + + // manually mounted instance, call mounted on self + // mounted is called for render-created child components in its inserted hook + if (vm.$vnode == null) { + vm._isMounted = true; + callHook(vm, 'mounted'); + } + return vm + } + + function updateChildComponent ( + vm, + propsData, + listeners, + parentVnode, + renderChildren + ) { + { + isUpdatingChildComponent = true; + } + + // determine whether component has slot children + // we need to do this before overwriting $options._renderChildren. + + // check if there are dynamic scopedSlots (hand-written or compiled but with + // dynamic slot names). Static scoped slots compiled from template has the + // "$stable" marker. + var newScopedSlots = parentVnode.data.scopedSlots; + var oldScopedSlots = vm.$scopedSlots; + var hasDynamicScopedSlot = !!( + (newScopedSlots && !newScopedSlots.$stable) || + (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) || + (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) || + (!newScopedSlots && vm.$scopedSlots.$key) + ); + + // Any static slot children from the parent may have changed during parent's + // update. Dynamic scoped slots may also have changed. In such cases, a forced + // update is necessary to ensure correctness. + var needsForceUpdate = !!( + renderChildren || // has new static slots + vm.$options._renderChildren || // has old static slots + hasDynamicScopedSlot + ); + + vm.$options._parentVnode = parentVnode; + vm.$vnode = parentVnode; // update vm's placeholder node without re-render + + if (vm._vnode) { // update child tree's parent + vm._vnode.parent = parentVnode; + } + vm.$options._renderChildren = renderChildren; + + // update $attrs and $listeners hash + // these are also reactive so they may trigger child update if the child + // used them during render + vm.$attrs = parentVnode.data.attrs || emptyObject; + vm.$listeners = listeners || emptyObject; + + // update props + if (propsData && vm.$options.props) { + toggleObserving(false); + var props = vm._props; + var propKeys = vm.$options._propKeys || []; + for (var i = 0; i < propKeys.length; i++) { + var key = propKeys[i]; + var propOptions = vm.$options.props; // wtf flow? + props[key] = validateProp(key, propOptions, propsData, vm); + } + toggleObserving(true); + // keep a copy of raw propsData + vm.$options.propsData = propsData; + } + + // update listeners + listeners = listeners || emptyObject; + var oldListeners = vm.$options._parentListeners; + vm.$options._parentListeners = listeners; + updateComponentListeners(vm, listeners, oldListeners); + + // resolve slots + force update if has children + if (needsForceUpdate) { + vm.$slots = resolveSlots(renderChildren, parentVnode.context); + vm.$forceUpdate(); + } + + { + isUpdatingChildComponent = false; + } + } + + function isInInactiveTree (vm) { + while (vm && (vm = vm.$parent)) { + if (vm._inactive) { return true } + } + return false + } + + function activateChildComponent (vm, direct) { + if (direct) { + vm._directInactive = false; + if (isInInactiveTree(vm)) { + return + } + } else if (vm._directInactive) { + return + } + if (vm._inactive || vm._inactive === null) { + vm._inactive = false; + for (var i = 0; i < vm.$children.length; i++) { + activateChildComponent(vm.$children[i]); + } + callHook(vm, 'activated'); + } + } + + function deactivateChildComponent (vm, direct) { + if (direct) { + vm._directInactive = true; + if (isInInactiveTree(vm)) { + return + } + } + if (!vm._inactive) { + vm._inactive = true; + for (var i = 0; i < vm.$children.length; i++) { + deactivateChildComponent(vm.$children[i]); + } + callHook(vm, 'deactivated'); + } + } + + function callHook (vm, hook) { + // #7573 disable dep collection when invoking lifecycle hooks + pushTarget(); + var handlers = vm.$options[hook]; + var info = hook + " hook"; + if (handlers) { + for (var i = 0, j = handlers.length; i < j; i++) { + invokeWithErrorHandling(handlers[i], vm, null, vm, info); + } + } + if (vm._hasHookEvent) { + vm.$emit('hook:' + hook); + } + popTarget(); + } + + /* */ + + var MAX_UPDATE_COUNT = 100; + + var queue = []; + var activatedChildren = []; + var has = {}; + var circular = {}; + var waiting = false; + var flushing = false; + var index = 0; + + /** + * Reset the scheduler's state. + */ + function resetSchedulerState () { + index = queue.length = activatedChildren.length = 0; + has = {}; + { + circular = {}; + } + waiting = flushing = false; + } + + // Async edge case #6566 requires saving the timestamp when event listeners are + // attached. However, calling performance.now() has a perf overhead especially + // if the page has thousands of event listeners. Instead, we take a timestamp + // every time the scheduler flushes and use that for all event listeners + // attached during that flush. + var currentFlushTimestamp = 0; + + // Async edge case fix requires storing an event listener's attach timestamp. + var getNow = Date.now; + + // Determine what event timestamp the browser is using. Annoyingly, the + // timestamp can either be hi-res (relative to page load) or low-res + // (relative to UNIX epoch), so in order to compare time we have to use the + // same timestamp type when saving the flush timestamp. + // All IE versions use low-res event timestamps, and have problematic clock + // implementations (#9632) + if (inBrowser && !isIE) { + var performance = window.performance; + if ( + performance && + typeof performance.now === 'function' && + getNow() > document.createEvent('Event').timeStamp + ) { + // if the event timestamp, although evaluated AFTER the Date.now(), is + // smaller than it, it means the event is using a hi-res timestamp, + // and we need to use the hi-res version for event listener timestamps as + // well. + getNow = function () { return performance.now(); }; + } + } + + /** + * Flush both queues and run the watchers. + */ + function flushSchedulerQueue () { + currentFlushTimestamp = getNow(); + flushing = true; + var watcher, id; + + // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child) + // 2. A component's user watchers are run before its render watcher (because + // user watchers are created before the render watcher) + // 3. If a component is destroyed during a parent component's watcher run, + // its watchers can be skipped. + queue.sort(function (a, b) { return a.id - b.id; }); + + // do not cache length because more watchers might be pushed + // as we run existing watchers + for (index = 0; index < queue.length; index++) { + watcher = queue[index]; + if (watcher.before) { + watcher.before(); + } + id = watcher.id; + has[id] = null; + watcher.run(); + // in dev build, check and stop circular updates. + if (has[id] != null) { + circular[id] = (circular[id] || 0) + 1; + if (circular[id] > MAX_UPDATE_COUNT) { + warn( + 'You may have an infinite update loop ' + ( + watcher.user + ? ("in watcher with expression \"" + (watcher.expression) + "\"") + : "in a component render function." + ), + watcher.vm + ); + break + } + } + } + + // keep copies of post queues before resetting state + var activatedQueue = activatedChildren.slice(); + var updatedQueue = queue.slice(); + + resetSchedulerState(); + + // call component updated and activated hooks + callActivatedHooks(activatedQueue); + callUpdatedHooks(updatedQueue); + + // devtool hook + /* istanbul ignore if */ + if (devtools && config.devtools) { + devtools.emit('flush'); + } + } + + function callUpdatedHooks (queue) { + var i = queue.length; + while (i--) { + var watcher = queue[i]; + var vm = watcher.vm; + if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { + callHook(vm, 'updated'); + } + } + } + + /** + * Queue a kept-alive component that was activated during patch. + * The queue will be processed after the entire tree has been patched. + */ + function queueActivatedComponent (vm) { + // setting _inactive to false here so that a render function can + // rely on checking whether it's in an inactive tree (e.g. router-view) + vm._inactive = false; + activatedChildren.push(vm); + } + + function callActivatedHooks (queue) { + for (var i = 0; i < queue.length; i++) { + queue[i]._inactive = true; + activateChildComponent(queue[i], true /* true */); + } + } + + /** + * Push a watcher into the watcher queue. + * Jobs with duplicate IDs will be skipped unless it's + * pushed when the queue is being flushed. + */ + function queueWatcher (watcher) { + var id = watcher.id; + if (has[id] == null) { + has[id] = true; + if (!flushing) { + queue.push(watcher); + } else { + // if already flushing, splice the watcher based on its id + // if already past its id, it will be run next immediately. + var i = queue.length - 1; + while (i > index && queue[i].id > watcher.id) { + i--; + } + queue.splice(i + 1, 0, watcher); + } + // queue the flush + if (!waiting) { + waiting = true; + + if (!config.async) { + flushSchedulerQueue(); + return + } + nextTick(flushSchedulerQueue); + } + } + } + + /* */ + + + + var uid$2 = 0; + + /** + * A watcher parses an expression, collects dependencies, + * and fires callback when the expression value changes. + * This is used for both the $watch() api and directives. + */ + var Watcher = function Watcher ( + vm, + expOrFn, + cb, + options, + isRenderWatcher + ) { + this.vm = vm; + if (isRenderWatcher) { + vm._watcher = this; + } + vm._watchers.push(this); + // options + if (options) { + this.deep = !!options.deep; + this.user = !!options.user; + this.lazy = !!options.lazy; + this.sync = !!options.sync; + this.before = options.before; + } else { + this.deep = this.user = this.lazy = this.sync = false; + } + this.cb = cb; + this.id = ++uid$2; // uid for batching + this.active = true; + this.dirty = this.lazy; // for lazy watchers + this.deps = []; + this.newDeps = []; + this.depIds = new _Set(); + this.newDepIds = new _Set(); + this.expression = expOrFn.toString(); + // parse expression for getter + if (typeof expOrFn === 'function') { + this.getter = expOrFn; + } else { + this.getter = parsePath(expOrFn); + if (!this.getter) { + this.getter = noop; + warn( + "Failed watching path: \"" + expOrFn + "\" " + + 'Watcher only accepts simple dot-delimited paths. ' + + 'For full control, use a function instead.', + vm + ); + } + } + this.value = this.lazy + ? undefined + : this.get(); + }; + + /** + * Evaluate the getter, and re-collect dependencies. + */ + Watcher.prototype.get = function get () { + pushTarget(this); + var value; + var vm = this.vm; + try { + value = this.getter.call(vm, vm); + } catch (e) { + if (this.user) { + handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\"")); + } else { + throw e + } + } finally { + // "touch" every property so they are all tracked as + // dependencies for deep watching + if (this.deep) { + traverse(value); + } + popTarget(); + this.cleanupDeps(); + } + return value + }; + + /** + * Add a dependency to this directive. + */ + Watcher.prototype.addDep = function addDep (dep) { + var id = dep.id; + if (!this.newDepIds.has(id)) { + this.newDepIds.add(id); + this.newDeps.push(dep); + if (!this.depIds.has(id)) { + dep.addSub(this); + } + } + }; + + /** + * Clean up for dependency collection. + */ + Watcher.prototype.cleanupDeps = function cleanupDeps () { + var i = this.deps.length; + while (i--) { + var dep = this.deps[i]; + if (!this.newDepIds.has(dep.id)) { + dep.removeSub(this); + } + } + var tmp = this.depIds; + this.depIds = this.newDepIds; + this.newDepIds = tmp; + this.newDepIds.clear(); + tmp = this.deps; + this.deps = this.newDeps; + this.newDeps = tmp; + this.newDeps.length = 0; + }; + + /** + * Subscriber interface. + * Will be called when a dependency changes. + */ + Watcher.prototype.update = function update () { + /* istanbul ignore else */ + if (this.lazy) { + this.dirty = true; + } else if (this.sync) { + this.run(); + } else { + queueWatcher(this); + } + }; + + /** + * Scheduler job interface. + * Will be called by the scheduler. + */ + Watcher.prototype.run = function run () { + if (this.active) { + var value = this.get(); + if ( + value !== this.value || + // Deep watchers and watchers on Object/Arrays should fire even + // when the value is the same, because the value may + // have mutated. + isObject(value) || + this.deep + ) { + // set new value + var oldValue = this.value; + this.value = value; + if (this.user) { + var info = "callback for watcher \"" + (this.expression) + "\""; + invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info); + } else { + this.cb.call(this.vm, value, oldValue); + } + } + } + }; + + /** + * Evaluate the value of the watcher. + * This only gets called for lazy watchers. + */ + Watcher.prototype.evaluate = function evaluate () { + this.value = this.get(); + this.dirty = false; + }; + + /** + * Depend on all deps collected by this watcher. + */ + Watcher.prototype.depend = function depend () { + var i = this.deps.length; + while (i--) { + this.deps[i].depend(); + } + }; + + /** + * Remove self from all dependencies' subscriber list. + */ + Watcher.prototype.teardown = function teardown () { + if (this.active) { + // remove self from vm's watcher list + // this is a somewhat expensive operation so we skip it + // if the vm is being destroyed. + if (!this.vm._isBeingDestroyed) { + remove(this.vm._watchers, this); + } + var i = this.deps.length; + while (i--) { + this.deps[i].removeSub(this); + } + this.active = false; + } + }; + + /* */ + + var sharedPropertyDefinition = { + enumerable: true, + configurable: true, + get: noop, + set: noop + }; + + function proxy (target, sourceKey, key) { + sharedPropertyDefinition.get = function proxyGetter () { + return this[sourceKey][key] + }; + sharedPropertyDefinition.set = function proxySetter (val) { + this[sourceKey][key] = val; + }; + Object.defineProperty(target, key, sharedPropertyDefinition); + } + + function initState (vm) { + vm._watchers = []; + var opts = vm.$options; + if (opts.props) { initProps(vm, opts.props); } + if (opts.methods) { initMethods(vm, opts.methods); } + if (opts.data) { + initData(vm); + } else { + observe(vm._data = {}, true /* asRootData */); + } + if (opts.computed) { initComputed(vm, opts.computed); } + if (opts.watch && opts.watch !== nativeWatch) { + initWatch(vm, opts.watch); + } + } + + function initProps (vm, propsOptions) { + var propsData = vm.$options.propsData || {}; + var props = vm._props = {}; + // cache prop keys so that future props updates can iterate using Array + // instead of dynamic object key enumeration. + var keys = vm.$options._propKeys = []; + var isRoot = !vm.$parent; + // root instance props should be converted + if (!isRoot) { + toggleObserving(false); + } + var loop = function ( key ) { + keys.push(key); + var value = validateProp(key, propsOptions, propsData, vm); + /* istanbul ignore else */ + { + var hyphenatedKey = hyphenate(key); + if (isReservedAttribute(hyphenatedKey) || + config.isReservedAttr(hyphenatedKey)) { + warn( + ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."), + vm + ); + } + defineReactive$$1(props, key, value, function () { + if (!isRoot && !isUpdatingChildComponent) { + warn( + "Avoid mutating a prop directly since the value will be " + + "overwritten whenever the parent component re-renders. " + + "Instead, use a data or computed property based on the prop's " + + "value. Prop being mutated: \"" + key + "\"", + vm + ); + } + }); + } + // static props are already proxied on the component's prototype + // during Vue.extend(). We only need to proxy props defined at + // instantiation here. + if (!(key in vm)) { + proxy(vm, "_props", key); + } + }; + + for (var key in propsOptions) loop( key ); + toggleObserving(true); + } + + function initData (vm) { + var data = vm.$options.data; + data = vm._data = typeof data === 'function' + ? getData(data, vm) + : data || {}; + if (!isPlainObject(data)) { + data = {}; + warn( + 'data functions should return an object:\n' + + 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', + vm + ); + } + // proxy data on instance + var keys = Object.keys(data); + var props = vm.$options.props; + var methods = vm.$options.methods; + var i = keys.length; + while (i--) { + var key = keys[i]; + { + if (methods && hasOwn(methods, key)) { + warn( + ("Method \"" + key + "\" has already been defined as a data property."), + vm + ); + } + } + if (props && hasOwn(props, key)) { + warn( + "The data property \"" + key + "\" is already declared as a prop. " + + "Use prop default value instead.", + vm + ); + } else if (!isReserved(key)) { + proxy(vm, "_data", key); + } + } + // observe data + observe(data, true /* asRootData */); + } + + function getData (data, vm) { + // #7573 disable dep collection when invoking data getters + pushTarget(); + try { + return data.call(vm, vm) + } catch (e) { + handleError(e, vm, "data()"); + return {} + } finally { + popTarget(); + } + } + + var computedWatcherOptions = { lazy: true }; + + function initComputed (vm, computed) { + // $flow-disable-line + var watchers = vm._computedWatchers = Object.create(null); + // computed properties are just getters during SSR + var isSSR = isServerRendering(); + + for (var key in computed) { + var userDef = computed[key]; + var getter = typeof userDef === 'function' ? userDef : userDef.get; + if (getter == null) { + warn( + ("Getter is missing for computed property \"" + key + "\"."), + vm + ); + } + + if (!isSSR) { + // create internal watcher for the computed property. + watchers[key] = new Watcher( + vm, + getter || noop, + noop, + computedWatcherOptions + ); + } + + // component-defined computed properties are already defined on the + // component prototype. We only need to define computed properties defined + // at instantiation here. + if (!(key in vm)) { + defineComputed(vm, key, userDef); + } else { + if (key in vm.$data) { + warn(("The computed property \"" + key + "\" is already defined in data."), vm); + } else if (vm.$options.props && key in vm.$options.props) { + warn(("The computed property \"" + key + "\" is already defined as a prop."), vm); + } else if (vm.$options.methods && key in vm.$options.methods) { + warn(("The computed property \"" + key + "\" is already defined as a method."), vm); + } + } + } + } + + function defineComputed ( + target, + key, + userDef + ) { + var shouldCache = !isServerRendering(); + if (typeof userDef === 'function') { + sharedPropertyDefinition.get = shouldCache + ? createComputedGetter(key) + : createGetterInvoker(userDef); + sharedPropertyDefinition.set = noop; + } else { + sharedPropertyDefinition.get = userDef.get + ? shouldCache && userDef.cache !== false + ? createComputedGetter(key) + : createGetterInvoker(userDef.get) + : noop; + sharedPropertyDefinition.set = userDef.set || noop; + } + if (sharedPropertyDefinition.set === noop) { + sharedPropertyDefinition.set = function () { + warn( + ("Computed property \"" + key + "\" was assigned to but it has no setter."), + this + ); + }; + } + Object.defineProperty(target, key, sharedPropertyDefinition); + } + + function createComputedGetter (key) { + return function computedGetter () { + var watcher = this._computedWatchers && this._computedWatchers[key]; + if (watcher) { + if (watcher.dirty) { + watcher.evaluate(); + } + if (Dep.target) { + watcher.depend(); + } + return watcher.value + } + } + } + + function createGetterInvoker(fn) { + return function computedGetter () { + return fn.call(this, this) + } + } + + function initMethods (vm, methods) { + var props = vm.$options.props; + for (var key in methods) { + { + if (typeof methods[key] !== 'function') { + warn( + "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " + + "Did you reference the function correctly?", + vm + ); + } + if (props && hasOwn(props, key)) { + warn( + ("Method \"" + key + "\" has already been defined as a prop."), + vm + ); + } + if ((key in vm) && isReserved(key)) { + warn( + "Method \"" + key + "\" conflicts with an existing Vue instance method. " + + "Avoid defining component methods that start with _ or $." + ); + } + } + vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm); + } + } + + function initWatch (vm, watch) { + for (var key in watch) { + var handler = watch[key]; + if (Array.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + createWatcher(vm, key, handler[i]); + } + } else { + createWatcher(vm, key, handler); + } + } + } + + function createWatcher ( + vm, + expOrFn, + handler, + options + ) { + if (isPlainObject(handler)) { + options = handler; + handler = handler.handler; + } + if (typeof handler === 'string') { + handler = vm[handler]; + } + return vm.$watch(expOrFn, handler, options) + } + + function stateMixin (Vue) { + // flow somehow has problems with directly declared definition object + // when using Object.defineProperty, so we have to procedurally build up + // the object here. + var dataDef = {}; + dataDef.get = function () { return this._data }; + var propsDef = {}; + propsDef.get = function () { return this._props }; + { + dataDef.set = function () { + warn( + 'Avoid replacing instance root $data. ' + + 'Use nested data properties instead.', + this + ); + }; + propsDef.set = function () { + warn("$props is readonly.", this); + }; + } + Object.defineProperty(Vue.prototype, '$data', dataDef); + Object.defineProperty(Vue.prototype, '$props', propsDef); + + Vue.prototype.$set = set; + Vue.prototype.$delete = del; + + Vue.prototype.$watch = function ( + expOrFn, + cb, + options + ) { + var vm = this; + if (isPlainObject(cb)) { + return createWatcher(vm, expOrFn, cb, options) + } + options = options || {}; + options.user = true; + var watcher = new Watcher(vm, expOrFn, cb, options); + if (options.immediate) { + var info = "callback for immediate watcher \"" + (watcher.expression) + "\""; + pushTarget(); + invokeWithErrorHandling(cb, vm, [watcher.value], vm, info); + popTarget(); + } + return function unwatchFn () { + watcher.teardown(); + } + }; + } + + /* */ + + var uid$3 = 0; + + function initMixin (Vue) { + Vue.prototype._init = function (options) { + var vm = this; + // a uid + vm._uid = uid$3++; + + var startTag, endTag; + /* istanbul ignore if */ + if (config.performance && mark) { + startTag = "vue-perf-start:" + (vm._uid); + endTag = "vue-perf-end:" + (vm._uid); + mark(startTag); + } + + // a flag to avoid this being observed + vm._isVue = true; + // merge options + if (options && options._isComponent) { + // optimize internal component instantiation + // since dynamic options merging is pretty slow, and none of the + // internal component options needs special treatment. + initInternalComponent(vm, options); + } else { + vm.$options = mergeOptions( + resolveConstructorOptions(vm.constructor), + options || {}, + vm + ); + } + /* istanbul ignore else */ + { + initProxy(vm); + } + // expose real self + vm._self = vm; + initLifecycle(vm); + initEvents(vm); + initRender(vm); + callHook(vm, 'beforeCreate'); + initInjections(vm); // resolve injections before data/props + initState(vm); + initProvide(vm); // resolve provide after data/props + callHook(vm, 'created'); + + /* istanbul ignore if */ + if (config.performance && mark) { + vm._name = formatComponentName(vm, false); + mark(endTag); + measure(("vue " + (vm._name) + " init"), startTag, endTag); + } + + if (vm.$options.el) { + vm.$mount(vm.$options.el); + } + }; + } + + function initInternalComponent (vm, options) { + var opts = vm.$options = Object.create(vm.constructor.options); + // doing this because it's faster than dynamic enumeration. + var parentVnode = options._parentVnode; + opts.parent = options.parent; + opts._parentVnode = parentVnode; + + var vnodeComponentOptions = parentVnode.componentOptions; + opts.propsData = vnodeComponentOptions.propsData; + opts._parentListeners = vnodeComponentOptions.listeners; + opts._renderChildren = vnodeComponentOptions.children; + opts._componentTag = vnodeComponentOptions.tag; + + if (options.render) { + opts.render = options.render; + opts.staticRenderFns = options.staticRenderFns; + } + } + + function resolveConstructorOptions (Ctor) { + var options = Ctor.options; + if (Ctor.super) { + var superOptions = resolveConstructorOptions(Ctor.super); + var cachedSuperOptions = Ctor.superOptions; + if (superOptions !== cachedSuperOptions) { + // super option changed, + // need to resolve new options. + Ctor.superOptions = superOptions; + // check if there are any late-modified/attached options (#4976) + var modifiedOptions = resolveModifiedOptions(Ctor); + // update base extend options + if (modifiedOptions) { + extend(Ctor.extendOptions, modifiedOptions); + } + options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); + if (options.name) { + options.components[options.name] = Ctor; + } + } + } + return options + } + + function resolveModifiedOptions (Ctor) { + var modified; + var latest = Ctor.options; + var sealed = Ctor.sealedOptions; + for (var key in latest) { + if (latest[key] !== sealed[key]) { + if (!modified) { modified = {}; } + modified[key] = latest[key]; + } + } + return modified + } + + function Vue (options) { + if (!(this instanceof Vue) + ) { + warn('Vue is a constructor and should be called with the `new` keyword'); + } + this._init(options); + } + + initMixin(Vue); + stateMixin(Vue); + eventsMixin(Vue); + lifecycleMixin(Vue); + renderMixin(Vue); + + /* */ + + function initUse (Vue) { + Vue.use = function (plugin) { + var installedPlugins = (this._installedPlugins || (this._installedPlugins = [])); + if (installedPlugins.indexOf(plugin) > -1) { + return this + } + + // additional parameters + var args = toArray(arguments, 1); + args.unshift(this); + if (typeof plugin.install === 'function') { + plugin.install.apply(plugin, args); + } else if (typeof plugin === 'function') { + plugin.apply(null, args); + } + installedPlugins.push(plugin); + return this + }; + } + + /* */ + + function initMixin$1 (Vue) { + Vue.mixin = function (mixin) { + this.options = mergeOptions(this.options, mixin); + return this + }; + } + + /* */ + + function initExtend (Vue) { + /** + * Each instance constructor, including Vue, has a unique + * cid. This enables us to create wrapped "child + * constructors" for prototypal inheritance and cache them. + */ + Vue.cid = 0; + var cid = 1; + + /** + * Class inheritance + */ + Vue.extend = function (extendOptions) { + extendOptions = extendOptions || {}; + var Super = this; + var SuperId = Super.cid; + var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); + if (cachedCtors[SuperId]) { + return cachedCtors[SuperId] + } + + var name = extendOptions.name || Super.options.name; + if (name) { + validateComponentName(name); + } + + var Sub = function VueComponent (options) { + this._init(options); + }; + Sub.prototype = Object.create(Super.prototype); + Sub.prototype.constructor = Sub; + Sub.cid = cid++; + Sub.options = mergeOptions( + Super.options, + extendOptions + ); + Sub['super'] = Super; + + // For props and computed properties, we define the proxy getters on + // the Vue instances at extension time, on the extended prototype. This + // avoids Object.defineProperty calls for each instance created. + if (Sub.options.props) { + initProps$1(Sub); + } + if (Sub.options.computed) { + initComputed$1(Sub); + } + + // allow further extension/mixin/plugin usage + Sub.extend = Super.extend; + Sub.mixin = Super.mixin; + Sub.use = Super.use; + + // create asset registers, so extended classes + // can have their private assets too. + ASSET_TYPES.forEach(function (type) { + Sub[type] = Super[type]; + }); + // enable recursive self-lookup + if (name) { + Sub.options.components[name] = Sub; + } + + // keep a reference to the super options at extension time. + // later at instantiation we can check if Super's options have + // been updated. + Sub.superOptions = Super.options; + Sub.extendOptions = extendOptions; + Sub.sealedOptions = extend({}, Sub.options); + + // cache constructor + cachedCtors[SuperId] = Sub; + return Sub + }; + } + + function initProps$1 (Comp) { + var props = Comp.options.props; + for (var key in props) { + proxy(Comp.prototype, "_props", key); + } + } + + function initComputed$1 (Comp) { + var computed = Comp.options.computed; + for (var key in computed) { + defineComputed(Comp.prototype, key, computed[key]); + } + } + + /* */ + + function initAssetRegisters (Vue) { + /** + * Create asset registration methods. + */ + ASSET_TYPES.forEach(function (type) { + Vue[type] = function ( + id, + definition + ) { + if (!definition) { + return this.options[type + 's'][id] + } else { + /* istanbul ignore if */ + if (type === 'component') { + validateComponentName(id); + } + if (type === 'component' && isPlainObject(definition)) { + definition.name = definition.name || id; + definition = this.options._base.extend(definition); + } + if (type === 'directive' && typeof definition === 'function') { + definition = { bind: definition, update: definition }; + } + this.options[type + 's'][id] = definition; + return definition + } + }; + }); + } + + /* */ + + + + + + function getComponentName (opts) { + return opts && (opts.Ctor.options.name || opts.tag) + } + + function matches (pattern, name) { + if (Array.isArray(pattern)) { + return pattern.indexOf(name) > -1 + } else if (typeof pattern === 'string') { + return pattern.split(',').indexOf(name) > -1 + } else if (isRegExp(pattern)) { + return pattern.test(name) + } + /* istanbul ignore next */ + return false + } + + function pruneCache (keepAliveInstance, filter) { + var cache = keepAliveInstance.cache; + var keys = keepAliveInstance.keys; + var _vnode = keepAliveInstance._vnode; + for (var key in cache) { + var entry = cache[key]; + if (entry) { + var name = entry.name; + if (name && !filter(name)) { + pruneCacheEntry(cache, key, keys, _vnode); + } + } + } + } + + function pruneCacheEntry ( + cache, + key, + keys, + current + ) { + var entry = cache[key]; + if (entry && (!current || entry.tag !== current.tag)) { + entry.componentInstance.$destroy(); + } + cache[key] = null; + remove(keys, key); + } + + var patternTypes = [String, RegExp, Array]; + + var KeepAlive = { + name: 'keep-alive', + abstract: true, + + props: { + include: patternTypes, + exclude: patternTypes, + max: [String, Number] + }, + + methods: { + cacheVNode: function cacheVNode() { + var ref = this; + var cache = ref.cache; + var keys = ref.keys; + var vnodeToCache = ref.vnodeToCache; + var keyToCache = ref.keyToCache; + if (vnodeToCache) { + var tag = vnodeToCache.tag; + var componentInstance = vnodeToCache.componentInstance; + var componentOptions = vnodeToCache.componentOptions; + cache[keyToCache] = { + name: getComponentName(componentOptions), + tag: tag, + componentInstance: componentInstance, + }; + keys.push(keyToCache); + // prune oldest entry + if (this.max && keys.length > parseInt(this.max)) { + pruneCacheEntry(cache, keys[0], keys, this._vnode); + } + this.vnodeToCache = null; + } + } + }, + + created: function created () { + this.cache = Object.create(null); + this.keys = []; + }, + + destroyed: function destroyed () { + for (var key in this.cache) { + pruneCacheEntry(this.cache, key, this.keys); + } + }, + + mounted: function mounted () { + var this$1 = this; + + this.cacheVNode(); + this.$watch('include', function (val) { + pruneCache(this$1, function (name) { return matches(val, name); }); + }); + this.$watch('exclude', function (val) { + pruneCache(this$1, function (name) { return !matches(val, name); }); + }); + }, + + updated: function updated () { + this.cacheVNode(); + }, + + render: function render () { + var slot = this.$slots.default; + var vnode = getFirstComponentChild(slot); + var componentOptions = vnode && vnode.componentOptions; + if (componentOptions) { + // check pattern + var name = getComponentName(componentOptions); + var ref = this; + var include = ref.include; + var exclude = ref.exclude; + if ( + // not included + (include && (!name || !matches(include, name))) || + // excluded + (exclude && name && matches(exclude, name)) + ) { + return vnode + } + + var ref$1 = this; + var cache = ref$1.cache; + var keys = ref$1.keys; + var key = vnode.key == null + // same constructor may get registered as different local components + // so cid alone is not enough (#3269) + ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '') + : vnode.key; + if (cache[key]) { + vnode.componentInstance = cache[key].componentInstance; + // make current key freshest + remove(keys, key); + keys.push(key); + } else { + // delay setting the cache until update + this.vnodeToCache = vnode; + this.keyToCache = key; + } + + vnode.data.keepAlive = true; + } + return vnode || (slot && slot[0]) + } + }; + + var builtInComponents = { + KeepAlive: KeepAlive + }; + + /* */ + + function initGlobalAPI (Vue) { + // config + var configDef = {}; + configDef.get = function () { return config; }; + { + configDef.set = function () { + warn( + 'Do not replace the Vue.config object, set individual fields instead.' + ); + }; + } + Object.defineProperty(Vue, 'config', configDef); + + // exposed util methods. + // NOTE: these are not considered part of the public API - avoid relying on + // them unless you are aware of the risk. + Vue.util = { + warn: warn, + extend: extend, + mergeOptions: mergeOptions, + defineReactive: defineReactive$$1 + }; + + Vue.set = set; + Vue.delete = del; + Vue.nextTick = nextTick; + + // 2.6 explicit observable API + Vue.observable = function (obj) { + observe(obj); + return obj + }; + + Vue.options = Object.create(null); + ASSET_TYPES.forEach(function (type) { + Vue.options[type + 's'] = Object.create(null); + }); + + // this is used to identify the "base" constructor to extend all plain-object + // components with in Weex's multi-instance scenarios. + Vue.options._base = Vue; + + extend(Vue.options.components, builtInComponents); + + initUse(Vue); + initMixin$1(Vue); + initExtend(Vue); + initAssetRegisters(Vue); + } + + initGlobalAPI(Vue); + + Object.defineProperty(Vue.prototype, '$isServer', { + get: isServerRendering + }); + + Object.defineProperty(Vue.prototype, '$ssrContext', { + get: function get () { + /* istanbul ignore next */ + return this.$vnode && this.$vnode.ssrContext + } + }); + + // expose FunctionalRenderContext for ssr runtime helper installation + Object.defineProperty(Vue, 'FunctionalRenderContext', { + value: FunctionalRenderContext + }); + + Vue.version = '2.6.14'; + + /* */ + + // these are reserved for web because they are directly compiled away + // during template compilation + var isReservedAttr = makeMap('style,class'); + + // attributes that should be using props for binding + var acceptValue = makeMap('input,textarea,option,select,progress'); + var mustUseProp = function (tag, type, attr) { + return ( + (attr === 'value' && acceptValue(tag)) && type !== 'button' || + (attr === 'selected' && tag === 'option') || + (attr === 'checked' && tag === 'input') || + (attr === 'muted' && tag === 'video') + ) + }; + + var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); + + var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only'); + + var convertEnumeratedValue = function (key, value) { + return isFalsyAttrValue(value) || value === 'false' + ? 'false' + // allow arbitrary string value for contenteditable + : key === 'contenteditable' && isValidContentEditableValue(value) + ? value + : 'true' + }; + + var isBooleanAttr = makeMap( + 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + + 'required,reversed,scoped,seamless,selected,sortable,' + + 'truespeed,typemustmatch,visible' + ); + + var xlinkNS = 'http://www.w3.org/1999/xlink'; + + var isXlink = function (name) { + return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink' + }; + + var getXlinkProp = function (name) { + return isXlink(name) ? name.slice(6, name.length) : '' + }; + + var isFalsyAttrValue = function (val) { + return val == null || val === false + }; + + /* */ + + function genClassForVnode (vnode) { + var data = vnode.data; + var parentNode = vnode; + var childNode = vnode; + while (isDef(childNode.componentInstance)) { + childNode = childNode.componentInstance._vnode; + if (childNode && childNode.data) { + data = mergeClassData(childNode.data, data); + } + } + while (isDef(parentNode = parentNode.parent)) { + if (parentNode && parentNode.data) { + data = mergeClassData(data, parentNode.data); + } + } + return renderClass(data.staticClass, data.class) + } + + function mergeClassData (child, parent) { + return { + staticClass: concat(child.staticClass, parent.staticClass), + class: isDef(child.class) + ? [child.class, parent.class] + : parent.class + } + } + + function renderClass ( + staticClass, + dynamicClass + ) { + if (isDef(staticClass) || isDef(dynamicClass)) { + return concat(staticClass, stringifyClass(dynamicClass)) + } + /* istanbul ignore next */ + return '' + } + + function concat (a, b) { + return a ? b ? (a + ' ' + b) : a : (b || '') + } + + function stringifyClass (value) { + if (Array.isArray(value)) { + return stringifyArray(value) + } + if (isObject(value)) { + return stringifyObject(value) + } + if (typeof value === 'string') { + return value + } + /* istanbul ignore next */ + return '' + } + + function stringifyArray (value) { + var res = ''; + var stringified; + for (var i = 0, l = value.length; i < l; i++) { + if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') { + if (res) { res += ' '; } + res += stringified; + } + } + return res + } + + function stringifyObject (value) { + var res = ''; + for (var key in value) { + if (value[key]) { + if (res) { res += ' '; } + res += key; + } + } + return res + } + + /* */ + + var namespaceMap = { + svg: 'http://www.w3.org/2000/svg', + math: 'http://www.w3.org/1998/Math/MathML' + }; + + var isHTMLTag = makeMap( + 'html,body,base,head,link,meta,style,title,' + + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + + 'embed,object,param,source,canvas,script,noscript,del,ins,' + + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + + 'output,progress,select,textarea,' + + 'details,dialog,menu,menuitem,summary,' + + 'content,element,shadow,template,blockquote,iframe,tfoot' + ); + + // this map is intentionally selective, only covering SVG elements that may + // contain child elements. + var isSVG = makeMap( + 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + + 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', + true + ); + + var isPreTag = function (tag) { return tag === 'pre'; }; + + var isReservedTag = function (tag) { + return isHTMLTag(tag) || isSVG(tag) + }; + + function getTagNamespace (tag) { + if (isSVG(tag)) { + return 'svg' + } + // basic support for MathML + // note it doesn't support other MathML elements being component roots + if (tag === 'math') { + return 'math' + } + } + + var unknownElementCache = Object.create(null); + function isUnknownElement (tag) { + /* istanbul ignore if */ + if (!inBrowser) { + return true + } + if (isReservedTag(tag)) { + return false + } + tag = tag.toLowerCase(); + /* istanbul ignore if */ + if (unknownElementCache[tag] != null) { + return unknownElementCache[tag] + } + var el = document.createElement(tag); + if (tag.indexOf('-') > -1) { + // http://stackoverflow.com/a/28210364/1070244 + return (unknownElementCache[tag] = ( + el.constructor === window.HTMLUnknownElement || + el.constructor === window.HTMLElement + )) + } else { + return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString())) + } + } + + var isTextInputType = makeMap('text,number,password,search,email,tel,url'); + + /* */ + + /** + * Query an element selector if it's not an element already. + */ + function query (el) { + if (typeof el === 'string') { + var selected = document.querySelector(el); + if (!selected) { + warn( + 'Cannot find element: ' + el + ); + return document.createElement('div') + } + return selected + } else { + return el + } + } + + /* */ + + function createElement$1 (tagName, vnode) { + var elm = document.createElement(tagName); + if (tagName !== 'select') { + return elm + } + // false or null will remove the attribute but undefined will not + if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) { + elm.setAttribute('multiple', 'multiple'); + } + return elm + } + + function createElementNS (namespace, tagName) { + return document.createElementNS(namespaceMap[namespace], tagName) + } + + function createTextNode (text) { + return document.createTextNode(text) + } + + function createComment (text) { + return document.createComment(text) + } + + function insertBefore (parentNode, newNode, referenceNode) { + parentNode.insertBefore(newNode, referenceNode); + } + + function removeChild (node, child) { + node.removeChild(child); + } + + function appendChild (node, child) { + node.appendChild(child); + } + + function parentNode (node) { + return node.parentNode + } + + function nextSibling (node) { + return node.nextSibling + } + + function tagName (node) { + return node.tagName + } + + function setTextContent (node, text) { + node.textContent = text; + } + + function setStyleScope (node, scopeId) { + node.setAttribute(scopeId, ''); + } + + var nodeOps = /*#__PURE__*/Object.freeze({ + createElement: createElement$1, + createElementNS: createElementNS, + createTextNode: createTextNode, + createComment: createComment, + insertBefore: insertBefore, + removeChild: removeChild, + appendChild: appendChild, + parentNode: parentNode, + nextSibling: nextSibling, + tagName: tagName, + setTextContent: setTextContent, + setStyleScope: setStyleScope + }); + + /* */ + + var ref = { + create: function create (_, vnode) { + registerRef(vnode); + }, + update: function update (oldVnode, vnode) { + if (oldVnode.data.ref !== vnode.data.ref) { + registerRef(oldVnode, true); + registerRef(vnode); + } + }, + destroy: function destroy (vnode) { + registerRef(vnode, true); + } + }; + + function registerRef (vnode, isRemoval) { + var key = vnode.data.ref; + if (!isDef(key)) { return } + + var vm = vnode.context; + var ref = vnode.componentInstance || vnode.elm; + var refs = vm.$refs; + if (isRemoval) { + if (Array.isArray(refs[key])) { + remove(refs[key], ref); + } else if (refs[key] === ref) { + refs[key] = undefined; + } + } else { + if (vnode.data.refInFor) { + if (!Array.isArray(refs[key])) { + refs[key] = [ref]; + } else if (refs[key].indexOf(ref) < 0) { + // $flow-disable-line + refs[key].push(ref); + } + } else { + refs[key] = ref; + } + } + } + + /** + * Virtual DOM patching algorithm based on Snabbdom by + * Simon Friis Vindum (@paldepind) + * Licensed under the MIT License + * https://github.com/paldepind/snabbdom/blob/master/LICENSE + * + * modified by Evan You (@yyx990803) + * + * Not type-checking this because this file is perf-critical and the cost + * of making flow understand it is not worth it. + */ + + var emptyNode = new VNode('', {}, []); + + var hooks = ['create', 'activate', 'update', 'remove', 'destroy']; + + function sameVnode (a, b) { + return ( + a.key === b.key && + a.asyncFactory === b.asyncFactory && ( + ( + a.tag === b.tag && + a.isComment === b.isComment && + isDef(a.data) === isDef(b.data) && + sameInputType(a, b) + ) || ( + isTrue(a.isAsyncPlaceholder) && + isUndef(b.asyncFactory.error) + ) + ) + ) + } + + function sameInputType (a, b) { + if (a.tag !== 'input') { return true } + var i; + var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type; + var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type; + return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB) + } + + function createKeyToOldIdx (children, beginIdx, endIdx) { + var i, key; + var map = {}; + for (i = beginIdx; i <= endIdx; ++i) { + key = children[i].key; + if (isDef(key)) { map[key] = i; } + } + return map + } + + function createPatchFunction (backend) { + var i, j; + var cbs = {}; + + var modules = backend.modules; + var nodeOps = backend.nodeOps; + + for (i = 0; i < hooks.length; ++i) { + cbs[hooks[i]] = []; + for (j = 0; j < modules.length; ++j) { + if (isDef(modules[j][hooks[i]])) { + cbs[hooks[i]].push(modules[j][hooks[i]]); + } + } + } + + function emptyNodeAt (elm) { + return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm) + } + + function createRmCb (childElm, listeners) { + function remove$$1 () { + if (--remove$$1.listeners === 0) { + removeNode(childElm); + } + } + remove$$1.listeners = listeners; + return remove$$1 + } + + function removeNode (el) { + var parent = nodeOps.parentNode(el); + // element may have already been removed due to v-html / v-text + if (isDef(parent)) { + nodeOps.removeChild(parent, el); + } + } + + function isUnknownElement$$1 (vnode, inVPre) { + return ( + !inVPre && + !vnode.ns && + !( + config.ignoredElements.length && + config.ignoredElements.some(function (ignore) { + return isRegExp(ignore) + ? ignore.test(vnode.tag) + : ignore === vnode.tag + }) + ) && + config.isUnknownElement(vnode.tag) + ) + } + + var creatingElmInVPre = 0; + + function createElm ( + vnode, + insertedVnodeQueue, + parentElm, + refElm, + nested, + ownerArray, + index + ) { + if (isDef(vnode.elm) && isDef(ownerArray)) { + // This vnode was used in a previous render! + // now it's used as a new node, overwriting its elm would cause + // potential patch errors down the road when it's used as an insertion + // reference node. Instead, we clone the node on-demand before creating + // associated DOM element for it. + vnode = ownerArray[index] = cloneVNode(vnode); + } + + vnode.isRootInsert = !nested; // for transition enter check + if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) { + return + } + + var data = vnode.data; + var children = vnode.children; + var tag = vnode.tag; + if (isDef(tag)) { + { + if (data && data.pre) { + creatingElmInVPre++; + } + if (isUnknownElement$$1(vnode, creatingElmInVPre)) { + warn( + 'Unknown custom element: <' + tag + '> - did you ' + + 'register the component correctly? For recursive components, ' + + 'make sure to provide the "name" option.', + vnode.context + ); + } + } + + vnode.elm = vnode.ns + ? nodeOps.createElementNS(vnode.ns, tag) + : nodeOps.createElement(tag, vnode); + setScope(vnode); + + /* istanbul ignore if */ + { + createChildren(vnode, children, insertedVnodeQueue); + if (isDef(data)) { + invokeCreateHooks(vnode, insertedVnodeQueue); + } + insert(parentElm, vnode.elm, refElm); + } + + if (data && data.pre) { + creatingElmInVPre--; + } + } else if (isTrue(vnode.isComment)) { + vnode.elm = nodeOps.createComment(vnode.text); + insert(parentElm, vnode.elm, refElm); + } else { + vnode.elm = nodeOps.createTextNode(vnode.text); + insert(parentElm, vnode.elm, refElm); + } + } + + function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) { + var i = vnode.data; + if (isDef(i)) { + var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; + if (isDef(i = i.hook) && isDef(i = i.init)) { + i(vnode, false /* hydrating */); + } + // after calling the init hook, if the vnode is a child component + // it should've created a child instance and mounted it. the child + // component also has set the placeholder vnode's elm. + // in that case we can just return the element and be done. + if (isDef(vnode.componentInstance)) { + initComponent(vnode, insertedVnodeQueue); + insert(parentElm, vnode.elm, refElm); + if (isTrue(isReactivated)) { + reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); + } + return true + } + } + } + + function initComponent (vnode, insertedVnodeQueue) { + if (isDef(vnode.data.pendingInsert)) { + insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert); + vnode.data.pendingInsert = null; + } + vnode.elm = vnode.componentInstance.$el; + if (isPatchable(vnode)) { + invokeCreateHooks(vnode, insertedVnodeQueue); + setScope(vnode); + } else { + // empty component root. + // skip all element-related modules except for ref (#3455) + registerRef(vnode); + // make sure to invoke the insert hook + insertedVnodeQueue.push(vnode); + } + } + + function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) { + var i; + // hack for #4339: a reactivated component with inner transition + // does not trigger because the inner node's created hooks are not called + // again. It's not ideal to involve module-specific logic in here but + // there doesn't seem to be a better way to do it. + var innerNode = vnode; + while (innerNode.componentInstance) { + innerNode = innerNode.componentInstance._vnode; + if (isDef(i = innerNode.data) && isDef(i = i.transition)) { + for (i = 0; i < cbs.activate.length; ++i) { + cbs.activate[i](emptyNode, innerNode); + } + insertedVnodeQueue.push(innerNode); + break + } + } + // unlike a newly created component, + // a reactivated keep-alive component doesn't insert itself + insert(parentElm, vnode.elm, refElm); + } + + function insert (parent, elm, ref$$1) { + if (isDef(parent)) { + if (isDef(ref$$1)) { + if (nodeOps.parentNode(ref$$1) === parent) { + nodeOps.insertBefore(parent, elm, ref$$1); + } + } else { + nodeOps.appendChild(parent, elm); + } + } + } + + function createChildren (vnode, children, insertedVnodeQueue) { + if (Array.isArray(children)) { + { + checkDuplicateKeys(children); + } + for (var i = 0; i < children.length; ++i) { + createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i); + } + } else if (isPrimitive(vnode.text)) { + nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); + } + } + + function isPatchable (vnode) { + while (vnode.componentInstance) { + vnode = vnode.componentInstance._vnode; + } + return isDef(vnode.tag) + } + + function invokeCreateHooks (vnode, insertedVnodeQueue) { + for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) { + cbs.create[i$1](emptyNode, vnode); + } + i = vnode.data.hook; // Reuse variable + if (isDef(i)) { + if (isDef(i.create)) { i.create(emptyNode, vnode); } + if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); } + } + } + + // set scope id attribute for scoped CSS. + // this is implemented as a special case to avoid the overhead + // of going through the normal attribute patching process. + function setScope (vnode) { + var i; + if (isDef(i = vnode.fnScopeId)) { + nodeOps.setStyleScope(vnode.elm, i); + } else { + var ancestor = vnode; + while (ancestor) { + if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) { + nodeOps.setStyleScope(vnode.elm, i); + } + ancestor = ancestor.parent; + } + } + // for slot content they should also get the scopeId from the host instance. + if (isDef(i = activeInstance) && + i !== vnode.context && + i !== vnode.fnContext && + isDef(i = i.$options._scopeId) + ) { + nodeOps.setStyleScope(vnode.elm, i); + } + } + + function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { + for (; startIdx <= endIdx; ++startIdx) { + createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx); + } + } + + function invokeDestroyHook (vnode) { + var i, j; + var data = vnode.data; + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); } + for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); } + } + if (isDef(i = vnode.children)) { + for (j = 0; j < vnode.children.length; ++j) { + invokeDestroyHook(vnode.children[j]); + } + } + } + + function removeVnodes (vnodes, startIdx, endIdx) { + for (; startIdx <= endIdx; ++startIdx) { + var ch = vnodes[startIdx]; + if (isDef(ch)) { + if (isDef(ch.tag)) { + removeAndInvokeRemoveHook(ch); + invokeDestroyHook(ch); + } else { // Text node + removeNode(ch.elm); + } + } + } + } + + function removeAndInvokeRemoveHook (vnode, rm) { + if (isDef(rm) || isDef(vnode.data)) { + var i; + var listeners = cbs.remove.length + 1; + if (isDef(rm)) { + // we have a recursively passed down rm callback + // increase the listeners count + rm.listeners += listeners; + } else { + // directly removing + rm = createRmCb(vnode.elm, listeners); + } + // recursively invoke hooks on child component root node + if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { + removeAndInvokeRemoveHook(i, rm); + } + for (i = 0; i < cbs.remove.length; ++i) { + cbs.remove[i](vnode, rm); + } + if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) { + i(vnode, rm); + } else { + rm(); + } + } else { + removeNode(vnode.elm); + } + } + + function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { + var oldStartIdx = 0; + var newStartIdx = 0; + var oldEndIdx = oldCh.length - 1; + var oldStartVnode = oldCh[0]; + var oldEndVnode = oldCh[oldEndIdx]; + var newEndIdx = newCh.length - 1; + var newStartVnode = newCh[0]; + var newEndVnode = newCh[newEndIdx]; + var oldKeyToIdx, idxInOld, vnodeToMove, refElm; + + // removeOnly is a special flag used only by <transition-group> + // to ensure removed elements stay in correct relative positions + // during leaving transitions + var canMove = !removeOnly; + + { + checkDuplicateKeys(newCh); + } + + while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { + if (isUndef(oldStartVnode)) { + oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left + } else if (isUndef(oldEndVnode)) { + oldEndVnode = oldCh[--oldEndIdx]; + } else if (sameVnode(oldStartVnode, newStartVnode)) { + patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); + oldStartVnode = oldCh[++oldStartIdx]; + newStartVnode = newCh[++newStartIdx]; + } else if (sameVnode(oldEndVnode, newEndVnode)) { + patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); + oldEndVnode = oldCh[--oldEndIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right + patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); + canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); + oldStartVnode = oldCh[++oldStartIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left + patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); + canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); + oldEndVnode = oldCh[--oldEndIdx]; + newStartVnode = newCh[++newStartIdx]; + } else { + if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); } + idxInOld = isDef(newStartVnode.key) + ? oldKeyToIdx[newStartVnode.key] + : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx); + if (isUndef(idxInOld)) { // New element + createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); + } else { + vnodeToMove = oldCh[idxInOld]; + if (sameVnode(vnodeToMove, newStartVnode)) { + patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); + oldCh[idxInOld] = undefined; + canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); + } else { + // same key but different element. treat as new element + createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); + } + } + newStartVnode = newCh[++newStartIdx]; + } + } + if (oldStartIdx > oldEndIdx) { + refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; + addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); + } else if (newStartIdx > newEndIdx) { + removeVnodes(oldCh, oldStartIdx, oldEndIdx); + } + } + + function checkDuplicateKeys (children) { + var seenKeys = {}; + for (var i = 0; i < children.length; i++) { + var vnode = children[i]; + var key = vnode.key; + if (isDef(key)) { + if (seenKeys[key]) { + warn( + ("Duplicate keys detected: '" + key + "'. This may cause an update error."), + vnode.context + ); + } else { + seenKeys[key] = true; + } + } + } + } + + function findIdxInOld (node, oldCh, start, end) { + for (var i = start; i < end; i++) { + var c = oldCh[i]; + if (isDef(c) && sameVnode(node, c)) { return i } + } + } + + function patchVnode ( + oldVnode, + vnode, + insertedVnodeQueue, + ownerArray, + index, + removeOnly + ) { + if (oldVnode === vnode) { + return + } + + if (isDef(vnode.elm) && isDef(ownerArray)) { + // clone reused vnode + vnode = ownerArray[index] = cloneVNode(vnode); + } + + var elm = vnode.elm = oldVnode.elm; + + if (isTrue(oldVnode.isAsyncPlaceholder)) { + if (isDef(vnode.asyncFactory.resolved)) { + hydrate(oldVnode.elm, vnode, insertedVnodeQueue); + } else { + vnode.isAsyncPlaceholder = true; + } + return + } + + // reuse element for static trees. + // note we only do this if the vnode is cloned - + // if the new node is not cloned it means the render functions have been + // reset by the hot-reload-api and we need to do a proper re-render. + if (isTrue(vnode.isStatic) && + isTrue(oldVnode.isStatic) && + vnode.key === oldVnode.key && + (isTrue(vnode.isCloned) || isTrue(vnode.isOnce)) + ) { + vnode.componentInstance = oldVnode.componentInstance; + return + } + + var i; + var data = vnode.data; + if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) { + i(oldVnode, vnode); + } + + var oldCh = oldVnode.children; + var ch = vnode.children; + if (isDef(data) && isPatchable(vnode)) { + for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); } + if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); } + } + if (isUndef(vnode.text)) { + if (isDef(oldCh) && isDef(ch)) { + if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); } + } else if (isDef(ch)) { + { + checkDuplicateKeys(ch); + } + if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); } + addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); + } else if (isDef(oldCh)) { + removeVnodes(oldCh, 0, oldCh.length - 1); + } else if (isDef(oldVnode.text)) { + nodeOps.setTextContent(elm, ''); + } + } else if (oldVnode.text !== vnode.text) { + nodeOps.setTextContent(elm, vnode.text); + } + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); } + } + } + + function invokeInsertHook (vnode, queue, initial) { + // delay insert hooks for component root nodes, invoke them after the + // element is really inserted + if (isTrue(initial) && isDef(vnode.parent)) { + vnode.parent.data.pendingInsert = queue; + } else { + for (var i = 0; i < queue.length; ++i) { + queue[i].data.hook.insert(queue[i]); + } + } + } + + var hydrationBailed = false; + // list of modules that can skip create hook during hydration because they + // are already rendered on the client or has no need for initialization + // Note: style is excluded because it relies on initial clone for future + // deep updates (#7063). + var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); + + // Note: this is a browser-only function so we can assume elms are DOM nodes. + function hydrate (elm, vnode, insertedVnodeQueue, inVPre) { + var i; + var tag = vnode.tag; + var data = vnode.data; + var children = vnode.children; + inVPre = inVPre || (data && data.pre); + vnode.elm = elm; + + if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) { + vnode.isAsyncPlaceholder = true; + return true + } + // assert node match + { + if (!assertNodeMatch(elm, vnode, inVPre)) { + return false + } + } + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); } + if (isDef(i = vnode.componentInstance)) { + // child component. it should have hydrated its own tree. + initComponent(vnode, insertedVnodeQueue); + return true + } + } + if (isDef(tag)) { + if (isDef(children)) { + // empty element, allow client to pick up and populate children + if (!elm.hasChildNodes()) { + createChildren(vnode, children, insertedVnodeQueue); + } else { + // v-html and domProps: innerHTML + if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) { + if (i !== elm.innerHTML) { + /* istanbul ignore if */ + if (typeof console !== 'undefined' && + !hydrationBailed + ) { + hydrationBailed = true; + console.warn('Parent: ', elm); + console.warn('server innerHTML: ', i); + console.warn('client innerHTML: ', elm.innerHTML); + } + return false + } + } else { + // iterate and compare children lists + var childrenMatch = true; + var childNode = elm.firstChild; + for (var i$1 = 0; i$1 < children.length; i$1++) { + if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) { + childrenMatch = false; + break + } + childNode = childNode.nextSibling; + } + // if childNode is not null, it means the actual childNodes list is + // longer than the virtual children list. + if (!childrenMatch || childNode) { + /* istanbul ignore if */ + if (typeof console !== 'undefined' && + !hydrationBailed + ) { + hydrationBailed = true; + console.warn('Parent: ', elm); + console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children); + } + return false + } + } + } + } + if (isDef(data)) { + var fullInvoke = false; + for (var key in data) { + if (!isRenderedModule(key)) { + fullInvoke = true; + invokeCreateHooks(vnode, insertedVnodeQueue); + break + } + } + if (!fullInvoke && data['class']) { + // ensure collecting deps for deep class bindings for future updates + traverse(data['class']); + } + } + } else if (elm.data !== vnode.text) { + elm.data = vnode.text; + } + return true + } + + function assertNodeMatch (node, vnode, inVPre) { + if (isDef(vnode.tag)) { + return vnode.tag.indexOf('vue-component') === 0 || ( + !isUnknownElement$$1(vnode, inVPre) && + vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase()) + ) + } else { + return node.nodeType === (vnode.isComment ? 8 : 3) + } + } + + return function patch (oldVnode, vnode, hydrating, removeOnly) { + if (isUndef(vnode)) { + if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); } + return + } + + var isInitialPatch = false; + var insertedVnodeQueue = []; + + if (isUndef(oldVnode)) { + // empty mount (likely as component), create new root element + isInitialPatch = true; + createElm(vnode, insertedVnodeQueue); + } else { + var isRealElement = isDef(oldVnode.nodeType); + if (!isRealElement && sameVnode(oldVnode, vnode)) { + // patch existing root node + patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); + } else { + if (isRealElement) { + // mounting to a real element + // check if this is server-rendered content and if we can perform + // a successful hydration. + if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) { + oldVnode.removeAttribute(SSR_ATTR); + hydrating = true; + } + if (isTrue(hydrating)) { + if (hydrate(oldVnode, vnode, insertedVnodeQueue)) { + invokeInsertHook(vnode, insertedVnodeQueue, true); + return oldVnode + } else { + warn( + 'The client-side rendered virtual DOM tree is not matching ' + + 'server-rendered content. This is likely caused by incorrect ' + + 'HTML markup, for example nesting block-level elements inside ' + + '<p>, or missing <tbody>. Bailing hydration and performing ' + + 'full client-side render.' + ); + } + } + // either not server-rendered, or hydration failed. + // create an empty node and replace it + oldVnode = emptyNodeAt(oldVnode); + } + + // replacing existing element + var oldElm = oldVnode.elm; + var parentElm = nodeOps.parentNode(oldElm); + + // create new node + createElm( + vnode, + insertedVnodeQueue, + // extremely rare edge case: do not insert if old element is in a + // leaving transition. Only happens when combining transition + + // keep-alive + HOCs. (#4590) + oldElm._leaveCb ? null : parentElm, + nodeOps.nextSibling(oldElm) + ); + + // update parent placeholder node element, recursively + if (isDef(vnode.parent)) { + var ancestor = vnode.parent; + var patchable = isPatchable(vnode); + while (ancestor) { + for (var i = 0; i < cbs.destroy.length; ++i) { + cbs.destroy[i](ancestor); + } + ancestor.elm = vnode.elm; + if (patchable) { + for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) { + cbs.create[i$1](emptyNode, ancestor); + } + // #6513 + // invoke insert hooks that may have been merged by create hooks. + // e.g. for directives that uses the "inserted" hook. + var insert = ancestor.data.hook.insert; + if (insert.merged) { + // start at index 1 to avoid re-invoking component mounted hook + for (var i$2 = 1; i$2 < insert.fns.length; i$2++) { + insert.fns[i$2](); + } + } + } else { + registerRef(ancestor); + } + ancestor = ancestor.parent; + } + } + + // destroy old node + if (isDef(parentElm)) { + removeVnodes([oldVnode], 0, 0); + } else if (isDef(oldVnode.tag)) { + invokeDestroyHook(oldVnode); + } + } + } + + invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch); + return vnode.elm + } + } + + /* */ + + var directives = { + create: updateDirectives, + update: updateDirectives, + destroy: function unbindDirectives (vnode) { + updateDirectives(vnode, emptyNode); + } + }; + + function updateDirectives (oldVnode, vnode) { + if (oldVnode.data.directives || vnode.data.directives) { + _update(oldVnode, vnode); + } + } + + function _update (oldVnode, vnode) { + var isCreate = oldVnode === emptyNode; + var isDestroy = vnode === emptyNode; + var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context); + var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context); + + var dirsWithInsert = []; + var dirsWithPostpatch = []; + + var key, oldDir, dir; + for (key in newDirs) { + oldDir = oldDirs[key]; + dir = newDirs[key]; + if (!oldDir) { + // new directive, bind + callHook$1(dir, 'bind', vnode, oldVnode); + if (dir.def && dir.def.inserted) { + dirsWithInsert.push(dir); + } + } else { + // existing directive, update + dir.oldValue = oldDir.value; + dir.oldArg = oldDir.arg; + callHook$1(dir, 'update', vnode, oldVnode); + if (dir.def && dir.def.componentUpdated) { + dirsWithPostpatch.push(dir); + } + } + } + + if (dirsWithInsert.length) { + var callInsert = function () { + for (var i = 0; i < dirsWithInsert.length; i++) { + callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode); + } + }; + if (isCreate) { + mergeVNodeHook(vnode, 'insert', callInsert); + } else { + callInsert(); + } + } + + if (dirsWithPostpatch.length) { + mergeVNodeHook(vnode, 'postpatch', function () { + for (var i = 0; i < dirsWithPostpatch.length; i++) { + callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode); + } + }); + } + + if (!isCreate) { + for (key in oldDirs) { + if (!newDirs[key]) { + // no longer present, unbind + callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy); + } + } + } + } + + var emptyModifiers = Object.create(null); + + function normalizeDirectives$1 ( + dirs, + vm + ) { + var res = Object.create(null); + if (!dirs) { + // $flow-disable-line + return res + } + var i, dir; + for (i = 0; i < dirs.length; i++) { + dir = dirs[i]; + if (!dir.modifiers) { + // $flow-disable-line + dir.modifiers = emptyModifiers; + } + res[getRawDirName(dir)] = dir; + dir.def = resolveAsset(vm.$options, 'directives', dir.name, true); + } + // $flow-disable-line + return res + } + + function getRawDirName (dir) { + return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.'))) + } + + function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) { + var fn = dir.def && dir.def[hook]; + if (fn) { + try { + fn(vnode.elm, dir, vnode, oldVnode, isDestroy); + } catch (e) { + handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook")); + } + } + } + + var baseModules = [ + ref, + directives + ]; + + /* */ + + function updateAttrs (oldVnode, vnode) { + var opts = vnode.componentOptions; + if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) { + return + } + if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) { + return + } + var key, cur, old; + var elm = vnode.elm; + var oldAttrs = oldVnode.data.attrs || {}; + var attrs = vnode.data.attrs || {}; + // clone observed objects, as the user probably wants to mutate it + if (isDef(attrs.__ob__)) { + attrs = vnode.data.attrs = extend({}, attrs); + } + + for (key in attrs) { + cur = attrs[key]; + old = oldAttrs[key]; + if (old !== cur) { + setAttr(elm, key, cur, vnode.data.pre); + } + } + // #4391: in IE9, setting type can reset value for input[type=radio] + // #6666: IE/Edge forces progress value down to 1 before setting a max + /* istanbul ignore if */ + if ((isIE || isEdge) && attrs.value !== oldAttrs.value) { + setAttr(elm, 'value', attrs.value); + } + for (key in oldAttrs) { + if (isUndef(attrs[key])) { + if (isXlink(key)) { + elm.removeAttributeNS(xlinkNS, getXlinkProp(key)); + } else if (!isEnumeratedAttr(key)) { + elm.removeAttribute(key); + } + } + } + } + + function setAttr (el, key, value, isInPre) { + if (isInPre || el.tagName.indexOf('-') > -1) { + baseSetAttr(el, key, value); + } else if (isBooleanAttr(key)) { + // set attribute for blank value + // e.g. <option disabled>Select one</option> + if (isFalsyAttrValue(value)) { + el.removeAttribute(key); + } else { + // technically allowfullscreen is a boolean attribute for <iframe>, + // but Flash expects a value of "true" when used on <embed> tag + value = key === 'allowfullscreen' && el.tagName === 'EMBED' + ? 'true' + : key; + el.setAttribute(key, value); + } + } else if (isEnumeratedAttr(key)) { + el.setAttribute(key, convertEnumeratedValue(key, value)); + } else if (isXlink(key)) { + if (isFalsyAttrValue(value)) { + el.removeAttributeNS(xlinkNS, getXlinkProp(key)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + baseSetAttr(el, key, value); + } + } + + function baseSetAttr (el, key, value) { + if (isFalsyAttrValue(value)) { + el.removeAttribute(key); + } else { + // #7138: IE10 & 11 fires input event when setting placeholder on + // <textarea>... block the first input event and remove the blocker + // immediately. + /* istanbul ignore if */ + if ( + isIE && !isIE9 && + el.tagName === 'TEXTAREA' && + key === 'placeholder' && value !== '' && !el.__ieph + ) { + var blocker = function (e) { + e.stopImmediatePropagation(); + el.removeEventListener('input', blocker); + }; + el.addEventListener('input', blocker); + // $flow-disable-line + el.__ieph = true; /* IE placeholder patched */ + } + el.setAttribute(key, value); + } + } + + var attrs = { + create: updateAttrs, + update: updateAttrs + }; + + /* */ + + function updateClass (oldVnode, vnode) { + var el = vnode.elm; + var data = vnode.data; + var oldData = oldVnode.data; + if ( + isUndef(data.staticClass) && + isUndef(data.class) && ( + isUndef(oldData) || ( + isUndef(oldData.staticClass) && + isUndef(oldData.class) + ) + ) + ) { + return + } + + var cls = genClassForVnode(vnode); + + // handle transition classes + var transitionClass = el._transitionClasses; + if (isDef(transitionClass)) { + cls = concat(cls, stringifyClass(transitionClass)); + } + + // set the class + if (cls !== el._prevClass) { + el.setAttribute('class', cls); + el._prevClass = cls; + } + } + + var klass = { + create: updateClass, + update: updateClass + }; + + /* */ + + var validDivisionCharRE = /[\w).+\-_$\]]/; + + function parseFilters (exp) { + var inSingle = false; + var inDouble = false; + var inTemplateString = false; + var inRegex = false; + var curly = 0; + var square = 0; + var paren = 0; + var lastFilterIndex = 0; + var c, prev, i, expression, filters; + + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 0x27 && prev !== 0x5C) { inSingle = false; } + } else if (inDouble) { + if (c === 0x22 && prev !== 0x5C) { inDouble = false; } + } else if (inTemplateString) { + if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; } + } else if (inRegex) { + if (c === 0x2f && prev !== 0x5C) { inRegex = false; } + } else if ( + c === 0x7C && // pipe + exp.charCodeAt(i + 1) !== 0x7C && + exp.charCodeAt(i - 1) !== 0x7C && + !curly && !square && !paren + ) { + if (expression === undefined) { + // first filter, end of expression + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 0x22: inDouble = true; break // " + case 0x27: inSingle = true; break // ' + case 0x60: inTemplateString = true; break // ` + case 0x28: paren++; break // ( + case 0x29: paren--; break // ) + case 0x5B: square++; break // [ + case 0x5D: square--; break // ] + case 0x7B: curly++; break // { + case 0x7D: curly--; break // } + } + if (c === 0x2f) { // / + var j = i - 1; + var p = (void 0); + // find first non-whitespace prev char + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== ' ') { break } + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + + if (expression === undefined) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + + function pushFilter () { + (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + + if (filters) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i]); + } + } + + return expression + } + + function wrapFilter (exp, filter) { + var i = filter.indexOf('('); + if (i < 0) { + // _f: resolveFilter + return ("_f(\"" + filter + "\")(" + exp + ")") + } else { + var name = filter.slice(0, i); + var args = filter.slice(i + 1); + return ("_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args)) + } + } + + /* */ + + + + /* eslint-disable no-unused-vars */ + function baseWarn (msg, range) { + console.error(("[Vue compiler]: " + msg)); + } + /* eslint-enable no-unused-vars */ + + function pluckModuleFunction ( + modules, + key + ) { + return modules + ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) + : [] + } + + function addProp (el, name, value, range, dynamic) { + (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); + el.plain = false; + } + + function addAttr (el, name, value, range, dynamic) { + var attrs = dynamic + ? (el.dynamicAttrs || (el.dynamicAttrs = [])) + : (el.attrs || (el.attrs = [])); + attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); + el.plain = false; + } + + // add a raw attr (use this in preTransforms) + function addRawAttr (el, name, value, range) { + el.attrsMap[name] = value; + el.attrsList.push(rangeSetItem({ name: name, value: value }, range)); + } + + function addDirective ( + el, + name, + rawName, + value, + arg, + isDynamicArg, + modifiers, + range + ) { + (el.directives || (el.directives = [])).push(rangeSetItem({ + name: name, + rawName: rawName, + value: value, + arg: arg, + isDynamicArg: isDynamicArg, + modifiers: modifiers + }, range)); + el.plain = false; + } + + function prependModifierMarker (symbol, name, dynamic) { + return dynamic + ? ("_p(" + name + ",\"" + symbol + "\")") + : symbol + name // mark the event as captured + } + + function addHandler ( + el, + name, + value, + modifiers, + important, + warn, + range, + dynamic + ) { + modifiers = modifiers || emptyObject; + // warn prevent and passive modifier + /* istanbul ignore if */ + if ( + warn && + modifiers.prevent && modifiers.passive + ) { + warn( + 'passive and prevent can\'t be used together. ' + + 'Passive handler can\'t prevent default event.', + range + ); + } + + // normalize click.right and click.middle since they don't actually fire + // this is technically browser-specific, but at least for now browsers are + // the only target envs that have right/middle clicks. + if (modifiers.right) { + if (dynamic) { + name = "(" + name + ")==='click'?'contextmenu':(" + name + ")"; + } else if (name === 'click') { + name = 'contextmenu'; + delete modifiers.right; + } + } else if (modifiers.middle) { + if (dynamic) { + name = "(" + name + ")==='click'?'mouseup':(" + name + ")"; + } else if (name === 'click') { + name = 'mouseup'; + } + } + + // check capture modifier + if (modifiers.capture) { + delete modifiers.capture; + name = prependModifierMarker('!', name, dynamic); + } + if (modifiers.once) { + delete modifiers.once; + name = prependModifierMarker('~', name, dynamic); + } + /* istanbul ignore if */ + if (modifiers.passive) { + delete modifiers.passive; + name = prependModifierMarker('&', name, dynamic); + } + + var events; + if (modifiers.native) { + delete modifiers.native; + events = el.nativeEvents || (el.nativeEvents = {}); + } else { + events = el.events || (el.events = {}); + } + + var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range); + if (modifiers !== emptyObject) { + newHandler.modifiers = modifiers; + } + + var handlers = events[name]; + /* istanbul ignore if */ + if (Array.isArray(handlers)) { + important ? handlers.unshift(newHandler) : handlers.push(newHandler); + } else if (handlers) { + events[name] = important ? [newHandler, handlers] : [handlers, newHandler]; + } else { + events[name] = newHandler; + } + + el.plain = false; + } + + function getRawBindingAttr ( + el, + name + ) { + return el.rawAttrsMap[':' + name] || + el.rawAttrsMap['v-bind:' + name] || + el.rawAttrsMap[name] + } + + function getBindingAttr ( + el, + name, + getStatic + ) { + var dynamicValue = + getAndRemoveAttr(el, ':' + name) || + getAndRemoveAttr(el, 'v-bind:' + name); + if (dynamicValue != null) { + return parseFilters(dynamicValue) + } else if (getStatic !== false) { + var staticValue = getAndRemoveAttr(el, name); + if (staticValue != null) { + return JSON.stringify(staticValue) + } + } + } + + // note: this only removes the attr from the Array (attrsList) so that it + // doesn't get processed by processAttrs. + // By default it does NOT remove it from the map (attrsMap) because the map is + // needed during codegen. + function getAndRemoveAttr ( + el, + name, + removeFromMap + ) { + var val; + if ((val = el.attrsMap[name]) != null) { + var list = el.attrsList; + for (var i = 0, l = list.length; i < l; i++) { + if (list[i].name === name) { + list.splice(i, 1); + break + } + } + } + if (removeFromMap) { + delete el.attrsMap[name]; + } + return val + } + + function getAndRemoveAttrByRegex ( + el, + name + ) { + var list = el.attrsList; + for (var i = 0, l = list.length; i < l; i++) { + var attr = list[i]; + if (name.test(attr.name)) { + list.splice(i, 1); + return attr + } + } + } + + function rangeSetItem ( + item, + range + ) { + if (range) { + if (range.start != null) { + item.start = range.start; + } + if (range.end != null) { + item.end = range.end; + } + } + return item + } + + /* */ + + /** + * Cross-platform code generation for component v-model + */ + function genComponentModel ( + el, + value, + modifiers + ) { + var ref = modifiers || {}; + var number = ref.number; + var trim = ref.trim; + + var baseValueExpression = '$$v'; + var valueExpression = baseValueExpression; + if (trim) { + valueExpression = + "(typeof " + baseValueExpression + " === 'string'" + + "? " + baseValueExpression + ".trim()" + + ": " + baseValueExpression + ")"; + } + if (number) { + valueExpression = "_n(" + valueExpression + ")"; + } + var assignment = genAssignmentCode(value, valueExpression); + + el.model = { + value: ("(" + value + ")"), + expression: JSON.stringify(value), + callback: ("function (" + baseValueExpression + ") {" + assignment + "}") + }; + } + + /** + * Cross-platform codegen helper for generating v-model value assignment code. + */ + function genAssignmentCode ( + value, + assignment + ) { + var res = parseModel(value); + if (res.key === null) { + return (value + "=" + assignment) + } else { + return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")") + } + } + + /** + * Parse a v-model expression into a base path and a final key segment. + * Handles both dot-path and possible square brackets. + * + * Possible cases: + * + * - test + * - test[key] + * - test[test1[key]] + * - test["a"][key] + * - xxx.test[a[a].test1[key]] + * - test.xxx.a["asa"][test1[key]] + * + */ + + var len, str, chr, index$1, expressionPos, expressionEndPos; + + + + function parseModel (val) { + // Fix https://github.com/vuejs/vue/pull/7730 + // allow v-model="obj.val " (trailing whitespace) + val = val.trim(); + len = val.length; + + if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) { + index$1 = val.lastIndexOf('.'); + if (index$1 > -1) { + return { + exp: val.slice(0, index$1), + key: '"' + val.slice(index$1 + 1) + '"' + } + } else { + return { + exp: val, + key: null + } + } + } + + str = val; + index$1 = expressionPos = expressionEndPos = 0; + + while (!eof()) { + chr = next(); + /* istanbul ignore if */ + if (isStringStart(chr)) { + parseString(chr); + } else if (chr === 0x5B) { + parseBracket(chr); + } + } + + return { + exp: val.slice(0, expressionPos), + key: val.slice(expressionPos + 1, expressionEndPos) + } + } + + function next () { + return str.charCodeAt(++index$1) + } + + function eof () { + return index$1 >= len + } + + function isStringStart (chr) { + return chr === 0x22 || chr === 0x27 + } + + function parseBracket (chr) { + var inBracket = 1; + expressionPos = index$1; + while (!eof()) { + chr = next(); + if (isStringStart(chr)) { + parseString(chr); + continue + } + if (chr === 0x5B) { inBracket++; } + if (chr === 0x5D) { inBracket--; } + if (inBracket === 0) { + expressionEndPos = index$1; + break + } + } + } + + function parseString (chr) { + var stringQuote = chr; + while (!eof()) { + chr = next(); + if (chr === stringQuote) { + break + } + } + } + + /* */ + + var warn$1; + + // in some cases, the event used has to be determined at runtime + // so we used some reserved tokens during compile. + var RANGE_TOKEN = '__r'; + var CHECKBOX_RADIO_TOKEN = '__c'; + + function model ( + el, + dir, + _warn + ) { + warn$1 = _warn; + var value = dir.value; + var modifiers = dir.modifiers; + var tag = el.tag; + var type = el.attrsMap.type; + + { + // inputs with type="file" are read only and setting the input's + // value will throw an error. + if (tag === 'input' && type === 'file') { + warn$1( + "<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" + + "File inputs are read only. Use a v-on:change listener instead.", + el.rawAttrsMap['v-model'] + ); + } + } + + if (el.component) { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false + } else if (tag === 'select') { + genSelect(el, value, modifiers); + } else if (tag === 'input' && type === 'checkbox') { + genCheckboxModel(el, value, modifiers); + } else if (tag === 'input' && type === 'radio') { + genRadioModel(el, value, modifiers); + } else if (tag === 'input' || tag === 'textarea') { + genDefaultModel(el, value, modifiers); + } else if (!config.isReservedTag(tag)) { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false + } else { + warn$1( + "<" + (el.tag) + " v-model=\"" + value + "\">: " + + "v-model is not supported on this element type. " + + 'If you are working with contenteditable, it\'s recommended to ' + + 'wrap a library dedicated for that purpose inside a custom component.', + el.rawAttrsMap['v-model'] + ); + } + + // ensure runtime directive metadata + return true + } + + function genCheckboxModel ( + el, + value, + modifiers + ) { + var number = modifiers && modifiers.number; + var valueBinding = getBindingAttr(el, 'value') || 'null'; + var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; + var falseValueBinding = getBindingAttr(el, 'false-value') || 'false'; + addProp(el, 'checked', + "Array.isArray(" + value + ")" + + "?_i(" + value + "," + valueBinding + ")>-1" + ( + trueValueBinding === 'true' + ? (":(" + value + ")") + : (":_q(" + value + "," + trueValueBinding + ")") + ) + ); + addHandler(el, 'change', + "var $$a=" + value + "," + + '$$el=$event.target,' + + "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" + + 'if(Array.isArray($$a)){' + + "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," + + '$$i=_i($$a,$$v);' + + "if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" + + "else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" + + "}else{" + (genAssignmentCode(value, '$$c')) + "}", + null, true + ); + } + + function genRadioModel ( + el, + value, + modifiers + ) { + var number = modifiers && modifiers.number; + var valueBinding = getBindingAttr(el, 'value') || 'null'; + valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding; + addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")")); + addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); + } + + function genSelect ( + el, + value, + modifiers + ) { + var number = modifiers && modifiers.number; + var selectedVal = "Array.prototype.filter" + + ".call($event.target.options,function(o){return o.selected})" + + ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" + + "return " + (number ? '_n(val)' : 'val') + "})"; + + var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; + var code = "var $$selectedVal = " + selectedVal + ";"; + code = code + " " + (genAssignmentCode(value, assignment)); + addHandler(el, 'change', code, null, true); + } + + function genDefaultModel ( + el, + value, + modifiers + ) { + var type = el.attrsMap.type; + + // warn if v-bind:value conflicts with v-model + // except for inputs with v-bind:type + { + var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']; + var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']; + if (value$1 && !typeBinding) { + var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'; + warn$1( + binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " + + 'because the latter already expands to a value binding internally', + el.rawAttrsMap[binding] + ); + } + } + + var ref = modifiers || {}; + var lazy = ref.lazy; + var number = ref.number; + var trim = ref.trim; + var needCompositionGuard = !lazy && type !== 'range'; + var event = lazy + ? 'change' + : type === 'range' + ? RANGE_TOKEN + : 'input'; + + var valueExpression = '$event.target.value'; + if (trim) { + valueExpression = "$event.target.value.trim()"; + } + if (number) { + valueExpression = "_n(" + valueExpression + ")"; + } + + var code = genAssignmentCode(value, valueExpression); + if (needCompositionGuard) { + code = "if($event.target.composing)return;" + code; + } + + addProp(el, 'value', ("(" + value + ")")); + addHandler(el, event, code, null, true); + if (trim || number) { + addHandler(el, 'blur', '$forceUpdate()'); + } + } + + /* */ + + // normalize v-model event tokens that can only be determined at runtime. + // it's important to place the event as the first in the array because + // the whole point is ensuring the v-model callback gets called before + // user-attached handlers. + function normalizeEvents (on) { + /* istanbul ignore if */ + if (isDef(on[RANGE_TOKEN])) { + // IE input[type=range] only supports `change` event + var event = isIE ? 'change' : 'input'; + on[event] = [].concat(on[RANGE_TOKEN], on[event] || []); + delete on[RANGE_TOKEN]; + } + // This was originally intended to fix #4521 but no longer necessary + // after 2.5. Keeping it for backwards compat with generated code from < 2.4 + /* istanbul ignore if */ + if (isDef(on[CHECKBOX_RADIO_TOKEN])) { + on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []); + delete on[CHECKBOX_RADIO_TOKEN]; + } + } + + var target$1; + + function createOnceHandler$1 (event, handler, capture) { + var _target = target$1; // save current target element in closure + return function onceHandler () { + var res = handler.apply(null, arguments); + if (res !== null) { + remove$2(event, onceHandler, capture, _target); + } + } + } + + // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp + // implementation and does not fire microtasks in between event propagation, so + // safe to exclude. + var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53); + + function add$1 ( + name, + handler, + capture, + passive + ) { + // async edge case #6566: inner click event triggers patch, event handler + // attached to outer element during patch, and triggered again. This + // happens because browsers fire microtask ticks between event propagation. + // the solution is simple: we save the timestamp when a handler is attached, + // and the handler would only fire if the event passed to it was fired + // AFTER it was attached. + if (useMicrotaskFix) { + var attachedTimestamp = currentFlushTimestamp; + var original = handler; + handler = original._wrapper = function (e) { + if ( + // no bubbling, should always fire. + // this is just a safety net in case event.timeStamp is unreliable in + // certain weird environments... + e.target === e.currentTarget || + // event is fired after handler attachment + e.timeStamp >= attachedTimestamp || + // bail for environments that have buggy event.timeStamp implementations + // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState + // #9681 QtWebEngine event.timeStamp is negative value + e.timeStamp <= 0 || + // #9448 bail if event is fired in another document in a multi-page + // electron/nw.js app, since event.timeStamp will be using a different + // starting reference + e.target.ownerDocument !== document + ) { + return original.apply(this, arguments) + } + }; + } + target$1.addEventListener( + name, + handler, + supportsPassive + ? { capture: capture, passive: passive } + : capture + ); + } + + function remove$2 ( + name, + handler, + capture, + _target + ) { + (_target || target$1).removeEventListener( + name, + handler._wrapper || handler, + capture + ); + } + + function updateDOMListeners (oldVnode, vnode) { + if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) { + return + } + var on = vnode.data.on || {}; + var oldOn = oldVnode.data.on || {}; + target$1 = vnode.elm; + normalizeEvents(on); + updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context); + target$1 = undefined; + } + + var events = { + create: updateDOMListeners, + update: updateDOMListeners + }; + + /* */ + + var svgContainer; + + function updateDOMProps (oldVnode, vnode) { + if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) { + return + } + var key, cur; + var elm = vnode.elm; + var oldProps = oldVnode.data.domProps || {}; + var props = vnode.data.domProps || {}; + // clone observed objects, as the user probably wants to mutate it + if (isDef(props.__ob__)) { + props = vnode.data.domProps = extend({}, props); + } + + for (key in oldProps) { + if (!(key in props)) { + elm[key] = ''; + } + } + + for (key in props) { + cur = props[key]; + // ignore children if the node has textContent or innerHTML, + // as these will throw away existing DOM nodes and cause removal errors + // on subsequent patches (#3360) + if (key === 'textContent' || key === 'innerHTML') { + if (vnode.children) { vnode.children.length = 0; } + if (cur === oldProps[key]) { continue } + // #6601 work around Chrome version <= 55 bug where single textNode + // replaced by innerHTML/textContent retains its parentNode property + if (elm.childNodes.length === 1) { + elm.removeChild(elm.childNodes[0]); + } + } + + if (key === 'value' && elm.tagName !== 'PROGRESS') { + // store value as _value as well since + // non-string values will be stringified + elm._value = cur; + // avoid resetting cursor position when value is the same + var strCur = isUndef(cur) ? '' : String(cur); + if (shouldUpdateValue(elm, strCur)) { + elm.value = strCur; + } + } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) { + // IE doesn't support innerHTML for SVG elements + svgContainer = svgContainer || document.createElement('div'); + svgContainer.innerHTML = "<svg>" + cur + "</svg>"; + var svg = svgContainer.firstChild; + while (elm.firstChild) { + elm.removeChild(elm.firstChild); + } + while (svg.firstChild) { + elm.appendChild(svg.firstChild); + } + } else if ( + // skip the update if old and new VDOM state is the same. + // `value` is handled separately because the DOM value may be temporarily + // out of sync with VDOM state due to focus, composition and modifiers. + // This #4521 by skipping the unnecessary `checked` update. + cur !== oldProps[key] + ) { + // some property updates can throw + // e.g. `value` on <progress> w/ non-finite value + try { + elm[key] = cur; + } catch (e) {} + } + } + } + + // check platforms/web/util/attrs.js acceptValue + + + function shouldUpdateValue (elm, checkVal) { + return (!elm.composing && ( + elm.tagName === 'OPTION' || + isNotInFocusAndDirty(elm, checkVal) || + isDirtyWithModifiers(elm, checkVal) + )) + } + + function isNotInFocusAndDirty (elm, checkVal) { + // return true when textbox (.number and .trim) loses focus and its value is + // not equal to the updated value + var notInFocus = true; + // #6157 + // work around IE bug when accessing document.activeElement in an iframe + try { notInFocus = document.activeElement !== elm; } catch (e) {} + return notInFocus && elm.value !== checkVal + } + + function isDirtyWithModifiers (elm, newVal) { + var value = elm.value; + var modifiers = elm._vModifiers; // injected by v-model runtime + if (isDef(modifiers)) { + if (modifiers.number) { + return toNumber(value) !== toNumber(newVal) + } + if (modifiers.trim) { + return value.trim() !== newVal.trim() + } + } + return value !== newVal + } + + var domProps = { + create: updateDOMProps, + update: updateDOMProps + }; + + /* */ + + var parseStyleText = cached(function (cssText) { + var res = {}; + var listDelimiter = /;(?![^(]*\))/g; + var propertyDelimiter = /:(.+)/; + cssText.split(listDelimiter).forEach(function (item) { + if (item) { + var tmp = item.split(propertyDelimiter); + tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); + } + }); + return res + }); + + // merge static and dynamic style data on the same vnode + function normalizeStyleData (data) { + var style = normalizeStyleBinding(data.style); + // static style is pre-processed into an object during compilation + // and is always a fresh object, so it's safe to merge into it + return data.staticStyle + ? extend(data.staticStyle, style) + : style + } + + // normalize possible array / string values into Object + function normalizeStyleBinding (bindingStyle) { + if (Array.isArray(bindingStyle)) { + return toObject(bindingStyle) + } + if (typeof bindingStyle === 'string') { + return parseStyleText(bindingStyle) + } + return bindingStyle + } + + /** + * parent component style should be after child's + * so that parent component's style could override it + */ + function getStyle (vnode, checkChild) { + var res = {}; + var styleData; + + if (checkChild) { + var childNode = vnode; + while (childNode.componentInstance) { + childNode = childNode.componentInstance._vnode; + if ( + childNode && childNode.data && + (styleData = normalizeStyleData(childNode.data)) + ) { + extend(res, styleData); + } + } + } + + if ((styleData = normalizeStyleData(vnode.data))) { + extend(res, styleData); + } + + var parentNode = vnode; + while ((parentNode = parentNode.parent)) { + if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) { + extend(res, styleData); + } + } + return res + } + + /* */ + + var cssVarRE = /^--/; + var importantRE = /\s*!important$/; + var setProp = function (el, name, val) { + /* istanbul ignore if */ + if (cssVarRE.test(name)) { + el.style.setProperty(name, val); + } else if (importantRE.test(val)) { + el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important'); + } else { + var normalizedName = normalize(name); + if (Array.isArray(val)) { + // Support values array created by autoprefixer, e.g. + // {display: ["-webkit-box", "-ms-flexbox", "flex"]} + // Set them one by one, and the browser will only set those it can recognize + for (var i = 0, len = val.length; i < len; i++) { + el.style[normalizedName] = val[i]; + } + } else { + el.style[normalizedName] = val; + } + } + }; + + var vendorNames = ['Webkit', 'Moz', 'ms']; + + var emptyStyle; + var normalize = cached(function (prop) { + emptyStyle = emptyStyle || document.createElement('div').style; + prop = camelize(prop); + if (prop !== 'filter' && (prop in emptyStyle)) { + return prop + } + var capName = prop.charAt(0).toUpperCase() + prop.slice(1); + for (var i = 0; i < vendorNames.length; i++) { + var name = vendorNames[i] + capName; + if (name in emptyStyle) { + return name + } + } + }); + + function updateStyle (oldVnode, vnode) { + var data = vnode.data; + var oldData = oldVnode.data; + + if (isUndef(data.staticStyle) && isUndef(data.style) && + isUndef(oldData.staticStyle) && isUndef(oldData.style) + ) { + return + } + + var cur, name; + var el = vnode.elm; + var oldStaticStyle = oldData.staticStyle; + var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; + + // if static style exists, stylebinding already merged into it when doing normalizeStyleData + var oldStyle = oldStaticStyle || oldStyleBinding; + + var style = normalizeStyleBinding(vnode.data.style) || {}; + + // store normalized style under a different key for next diff + // make sure to clone it if it's reactive, since the user likely wants + // to mutate it. + vnode.data.normalizedStyle = isDef(style.__ob__) + ? extend({}, style) + : style; + + var newStyle = getStyle(vnode, true); + + for (name in oldStyle) { + if (isUndef(newStyle[name])) { + setProp(el, name, ''); + } + } + for (name in newStyle) { + cur = newStyle[name]; + if (cur !== oldStyle[name]) { + // ie9 setting to null has no effect, must use empty string + setProp(el, name, cur == null ? '' : cur); + } + } + } + + var style = { + create: updateStyle, + update: updateStyle + }; + + /* */ + + var whitespaceRE = /\s+/; + + /** + * Add class with compatibility for SVG since classList is not supported on + * SVG elements in IE + */ + function addClass (el, cls) { + /* istanbul ignore if */ + if (!cls || !(cls = cls.trim())) { + return + } + + /* istanbul ignore else */ + if (el.classList) { + if (cls.indexOf(' ') > -1) { + cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); }); + } else { + el.classList.add(cls); + } + } else { + var cur = " " + (el.getAttribute('class') || '') + " "; + if (cur.indexOf(' ' + cls + ' ') < 0) { + el.setAttribute('class', (cur + cls).trim()); + } + } + } + + /** + * Remove class with compatibility for SVG since classList is not supported on + * SVG elements in IE + */ + function removeClass (el, cls) { + /* istanbul ignore if */ + if (!cls || !(cls = cls.trim())) { + return + } + + /* istanbul ignore else */ + if (el.classList) { + if (cls.indexOf(' ') > -1) { + cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); }); + } else { + el.classList.remove(cls); + } + if (!el.classList.length) { + el.removeAttribute('class'); + } + } else { + var cur = " " + (el.getAttribute('class') || '') + " "; + var tar = ' ' + cls + ' '; + while (cur.indexOf(tar) >= 0) { + cur = cur.replace(tar, ' '); + } + cur = cur.trim(); + if (cur) { + el.setAttribute('class', cur); + } else { + el.removeAttribute('class'); + } + } + } + + /* */ + + function resolveTransition (def$$1) { + if (!def$$1) { + return + } + /* istanbul ignore else */ + if (typeof def$$1 === 'object') { + var res = {}; + if (def$$1.css !== false) { + extend(res, autoCssTransition(def$$1.name || 'v')); + } + extend(res, def$$1); + return res + } else if (typeof def$$1 === 'string') { + return autoCssTransition(def$$1) + } + } + + var autoCssTransition = cached(function (name) { + return { + enterClass: (name + "-enter"), + enterToClass: (name + "-enter-to"), + enterActiveClass: (name + "-enter-active"), + leaveClass: (name + "-leave"), + leaveToClass: (name + "-leave-to"), + leaveActiveClass: (name + "-leave-active") + } + }); + + var hasTransition = inBrowser && !isIE9; + var TRANSITION = 'transition'; + var ANIMATION = 'animation'; + + // Transition property/event sniffing + var transitionProp = 'transition'; + var transitionEndEvent = 'transitionend'; + var animationProp = 'animation'; + var animationEndEvent = 'animationend'; + if (hasTransition) { + /* istanbul ignore if */ + if (window.ontransitionend === undefined && + window.onwebkittransitionend !== undefined + ) { + transitionProp = 'WebkitTransition'; + transitionEndEvent = 'webkitTransitionEnd'; + } + if (window.onanimationend === undefined && + window.onwebkitanimationend !== undefined + ) { + animationProp = 'WebkitAnimation'; + animationEndEvent = 'webkitAnimationEnd'; + } + } + + // binding to window is necessary to make hot reload work in IE in strict mode + var raf = inBrowser + ? window.requestAnimationFrame + ? window.requestAnimationFrame.bind(window) + : setTimeout + : /* istanbul ignore next */ function (fn) { return fn(); }; + + function nextFrame (fn) { + raf(function () { + raf(fn); + }); + } + + function addTransitionClass (el, cls) { + var transitionClasses = el._transitionClasses || (el._transitionClasses = []); + if (transitionClasses.indexOf(cls) < 0) { + transitionClasses.push(cls); + addClass(el, cls); + } + } + + function removeTransitionClass (el, cls) { + if (el._transitionClasses) { + remove(el._transitionClasses, cls); + } + removeClass(el, cls); + } + + function whenTransitionEnds ( + el, + expectedType, + cb + ) { + var ref = getTransitionInfo(el, expectedType); + var type = ref.type; + var timeout = ref.timeout; + var propCount = ref.propCount; + if (!type) { return cb() } + var event = type === TRANSITION ? transitionEndEvent : animationEndEvent; + var ended = 0; + var end = function () { + el.removeEventListener(event, onEnd); + cb(); + }; + var onEnd = function (e) { + if (e.target === el) { + if (++ended >= propCount) { + end(); + } + } + }; + setTimeout(function () { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(event, onEnd); + } + + var transformRE = /\b(transform|all)(,|$)/; + + function getTransitionInfo (el, expectedType) { + var styles = window.getComputedStyle(el); + // JSDOM may return undefined for transition properties + var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); + var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); + var transitionTimeout = getTimeout(transitionDelays, transitionDurations); + var animationDelays = (styles[animationProp + 'Delay'] || '').split(', '); + var animationDurations = (styles[animationProp + 'Duration'] || '').split(', '); + var animationTimeout = getTimeout(animationDelays, animationDurations); + + var type; + var timeout = 0; + var propCount = 0; + /* istanbul ignore if */ + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 + ? transitionTimeout > animationTimeout + ? TRANSITION + : ANIMATION + : null; + propCount = type + ? type === TRANSITION + ? transitionDurations.length + : animationDurations.length + : 0; + } + var hasTransform = + type === TRANSITION && + transformRE.test(styles[transitionProp + 'Property']); + return { + type: type, + timeout: timeout, + propCount: propCount, + hasTransform: hasTransform + } + } + + function getTimeout (delays, durations) { + /* istanbul ignore next */ + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + + return Math.max.apply(null, durations.map(function (d, i) { + return toMs(d) + toMs(delays[i]) + })) + } + + // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers + // in a locale-dependent way, using a comma instead of a dot. + // If comma is not replaced with a dot, the input will be rounded down (i.e. acting + // as a floor function) causing unexpected behaviors + function toMs (s) { + return Number(s.slice(0, -1).replace(',', '.')) * 1000 + } + + /* */ + + function enter (vnode, toggleDisplay) { + var el = vnode.elm; + + // call leave callback now + if (isDef(el._leaveCb)) { + el._leaveCb.cancelled = true; + el._leaveCb(); + } + + var data = resolveTransition(vnode.data.transition); + if (isUndef(data)) { + return + } + + /* istanbul ignore if */ + if (isDef(el._enterCb) || el.nodeType !== 1) { + return + } + + var css = data.css; + var type = data.type; + var enterClass = data.enterClass; + var enterToClass = data.enterToClass; + var enterActiveClass = data.enterActiveClass; + var appearClass = data.appearClass; + var appearToClass = data.appearToClass; + var appearActiveClass = data.appearActiveClass; + var beforeEnter = data.beforeEnter; + var enter = data.enter; + var afterEnter = data.afterEnter; + var enterCancelled = data.enterCancelled; + var beforeAppear = data.beforeAppear; + var appear = data.appear; + var afterAppear = data.afterAppear; + var appearCancelled = data.appearCancelled; + var duration = data.duration; + + // activeInstance will always be the <transition> component managing this + // transition. One edge case to check is when the <transition> is placed + // as the root node of a child component. In that case we need to check + // <transition>'s parent for appear check. + var context = activeInstance; + var transitionNode = activeInstance.$vnode; + while (transitionNode && transitionNode.parent) { + context = transitionNode.context; + transitionNode = transitionNode.parent; + } + + var isAppear = !context._isMounted || !vnode.isRootInsert; + + if (isAppear && !appear && appear !== '') { + return + } + + var startClass = isAppear && appearClass + ? appearClass + : enterClass; + var activeClass = isAppear && appearActiveClass + ? appearActiveClass + : enterActiveClass; + var toClass = isAppear && appearToClass + ? appearToClass + : enterToClass; + + var beforeEnterHook = isAppear + ? (beforeAppear || beforeEnter) + : beforeEnter; + var enterHook = isAppear + ? (typeof appear === 'function' ? appear : enter) + : enter; + var afterEnterHook = isAppear + ? (afterAppear || afterEnter) + : afterEnter; + var enterCancelledHook = isAppear + ? (appearCancelled || enterCancelled) + : enterCancelled; + + var explicitEnterDuration = toNumber( + isObject(duration) + ? duration.enter + : duration + ); + + if (explicitEnterDuration != null) { + checkDuration(explicitEnterDuration, 'enter', vnode); + } + + var expectsCSS = css !== false && !isIE9; + var userWantsControl = getHookArgumentsLength(enterHook); + + var cb = el._enterCb = once(function () { + if (expectsCSS) { + removeTransitionClass(el, toClass); + removeTransitionClass(el, activeClass); + } + if (cb.cancelled) { + if (expectsCSS) { + removeTransitionClass(el, startClass); + } + enterCancelledHook && enterCancelledHook(el); + } else { + afterEnterHook && afterEnterHook(el); + } + el._enterCb = null; + }); + + if (!vnode.data.show) { + // remove pending leave element on enter by injecting an insert hook + mergeVNodeHook(vnode, 'insert', function () { + var parent = el.parentNode; + var pendingNode = parent && parent._pending && parent._pending[vnode.key]; + if (pendingNode && + pendingNode.tag === vnode.tag && + pendingNode.elm._leaveCb + ) { + pendingNode.elm._leaveCb(); + } + enterHook && enterHook(el, cb); + }); + } + + // start enter transition + beforeEnterHook && beforeEnterHook(el); + if (expectsCSS) { + addTransitionClass(el, startClass); + addTransitionClass(el, activeClass); + nextFrame(function () { + removeTransitionClass(el, startClass); + if (!cb.cancelled) { + addTransitionClass(el, toClass); + if (!userWantsControl) { + if (isValidDuration(explicitEnterDuration)) { + setTimeout(cb, explicitEnterDuration); + } else { + whenTransitionEnds(el, type, cb); + } + } + } + }); + } + + if (vnode.data.show) { + toggleDisplay && toggleDisplay(); + enterHook && enterHook(el, cb); + } + + if (!expectsCSS && !userWantsControl) { + cb(); + } + } + + function leave (vnode, rm) { + var el = vnode.elm; + + // call enter callback now + if (isDef(el._enterCb)) { + el._enterCb.cancelled = true; + el._enterCb(); + } + + var data = resolveTransition(vnode.data.transition); + if (isUndef(data) || el.nodeType !== 1) { + return rm() + } + + /* istanbul ignore if */ + if (isDef(el._leaveCb)) { + return + } + + var css = data.css; + var type = data.type; + var leaveClass = data.leaveClass; + var leaveToClass = data.leaveToClass; + var leaveActiveClass = data.leaveActiveClass; + var beforeLeave = data.beforeLeave; + var leave = data.leave; + var afterLeave = data.afterLeave; + var leaveCancelled = data.leaveCancelled; + var delayLeave = data.delayLeave; + var duration = data.duration; + + var expectsCSS = css !== false && !isIE9; + var userWantsControl = getHookArgumentsLength(leave); + + var explicitLeaveDuration = toNumber( + isObject(duration) + ? duration.leave + : duration + ); + + if (isDef(explicitLeaveDuration)) { + checkDuration(explicitLeaveDuration, 'leave', vnode); + } + + var cb = el._leaveCb = once(function () { + if (el.parentNode && el.parentNode._pending) { + el.parentNode._pending[vnode.key] = null; + } + if (expectsCSS) { + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + } + if (cb.cancelled) { + if (expectsCSS) { + removeTransitionClass(el, leaveClass); + } + leaveCancelled && leaveCancelled(el); + } else { + rm(); + afterLeave && afterLeave(el); + } + el._leaveCb = null; + }); + + if (delayLeave) { + delayLeave(performLeave); + } else { + performLeave(); + } + + function performLeave () { + // the delayed leave may have already been cancelled + if (cb.cancelled) { + return + } + // record leaving element + if (!vnode.data.show && el.parentNode) { + (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode; + } + beforeLeave && beforeLeave(el); + if (expectsCSS) { + addTransitionClass(el, leaveClass); + addTransitionClass(el, leaveActiveClass); + nextFrame(function () { + removeTransitionClass(el, leaveClass); + if (!cb.cancelled) { + addTransitionClass(el, leaveToClass); + if (!userWantsControl) { + if (isValidDuration(explicitLeaveDuration)) { + setTimeout(cb, explicitLeaveDuration); + } else { + whenTransitionEnds(el, type, cb); + } + } + } + }); + } + leave && leave(el, cb); + if (!expectsCSS && !userWantsControl) { + cb(); + } + } + } + + // only used in dev mode + function checkDuration (val, name, vnode) { + if (typeof val !== 'number') { + warn( + "<transition> explicit " + name + " duration is not a valid number - " + + "got " + (JSON.stringify(val)) + ".", + vnode.context + ); + } else if (isNaN(val)) { + warn( + "<transition> explicit " + name + " duration is NaN - " + + 'the duration expression might be incorrect.', + vnode.context + ); + } + } + + function isValidDuration (val) { + return typeof val === 'number' && !isNaN(val) + } + + /** + * Normalize a transition hook's argument length. The hook may be: + * - a merged hook (invoker) with the original in .fns + * - a wrapped component method (check ._length) + * - a plain function (.length) + */ + function getHookArgumentsLength (fn) { + if (isUndef(fn)) { + return false + } + var invokerFns = fn.fns; + if (isDef(invokerFns)) { + // invoker + return getHookArgumentsLength( + Array.isArray(invokerFns) + ? invokerFns[0] + : invokerFns + ) + } else { + return (fn._length || fn.length) > 1 + } + } + + function _enter (_, vnode) { + if (vnode.data.show !== true) { + enter(vnode); + } + } + + var transition = inBrowser ? { + create: _enter, + activate: _enter, + remove: function remove$$1 (vnode, rm) { + /* istanbul ignore else */ + if (vnode.data.show !== true) { + leave(vnode, rm); + } else { + rm(); + } + } + } : {}; + + var platformModules = [ + attrs, + klass, + events, + domProps, + style, + transition + ]; + + /* */ + + // the directive module should be applied last, after all + // built-in modules have been applied. + var modules = platformModules.concat(baseModules); + + var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules }); + + /** + * Not type checking this file because flow doesn't like attaching + * properties to Elements. + */ + + /* istanbul ignore if */ + if (isIE9) { + // http://www.matts411.com/post/internet-explorer-9-oninput/ + document.addEventListener('selectionchange', function () { + var el = document.activeElement; + if (el && el.vmodel) { + trigger(el, 'input'); + } + }); + } + + var directive = { + inserted: function inserted (el, binding, vnode, oldVnode) { + if (vnode.tag === 'select') { + // #6903 + if (oldVnode.elm && !oldVnode.elm._vOptions) { + mergeVNodeHook(vnode, 'postpatch', function () { + directive.componentUpdated(el, binding, vnode); + }); + } else { + setSelected(el, binding, vnode.context); + } + el._vOptions = [].map.call(el.options, getValue); + } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { + el._vModifiers = binding.modifiers; + if (!binding.modifiers.lazy) { + el.addEventListener('compositionstart', onCompositionStart); + el.addEventListener('compositionend', onCompositionEnd); + // Safari < 10.2 & UIWebView doesn't fire compositionend when + // switching focus before confirming composition choice + // this also fixes the issue where some browsers e.g. iOS Chrome + // fires "change" instead of "input" on autocomplete. + el.addEventListener('change', onCompositionEnd); + /* istanbul ignore if */ + if (isIE9) { + el.vmodel = true; + } + } + } + }, + + componentUpdated: function componentUpdated (el, binding, vnode) { + if (vnode.tag === 'select') { + setSelected(el, binding, vnode.context); + // in case the options rendered by v-for have changed, + // it's possible that the value is out-of-sync with the rendered options. + // detect such cases and filter out values that no longer has a matching + // option in the DOM. + var prevOptions = el._vOptions; + var curOptions = el._vOptions = [].map.call(el.options, getValue); + if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) { + // trigger change event if + // no matching option found for at least one value + var needReset = el.multiple + ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); }) + : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions); + if (needReset) { + trigger(el, 'change'); + } + } + } + } + }; + + function setSelected (el, binding, vm) { + actuallySetSelected(el, binding, vm); + /* istanbul ignore if */ + if (isIE || isEdge) { + setTimeout(function () { + actuallySetSelected(el, binding, vm); + }, 0); + } + } + + function actuallySetSelected (el, binding, vm) { + var value = binding.value; + var isMultiple = el.multiple; + if (isMultiple && !Array.isArray(value)) { + warn( + "<select multiple v-model=\"" + (binding.expression) + "\"> " + + "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)), + vm + ); + return + } + var selected, option; + for (var i = 0, l = el.options.length; i < l; i++) { + option = el.options[i]; + if (isMultiple) { + selected = looseIndexOf(value, getValue(option)) > -1; + if (option.selected !== selected) { + option.selected = selected; + } + } else { + if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) { + el.selectedIndex = i; + } + return + } + } + } + if (!isMultiple) { + el.selectedIndex = -1; + } + } + + function hasNoMatchingOption (value, options) { + return options.every(function (o) { return !looseEqual(o, value); }) + } + + function getValue (option) { + return '_value' in option + ? option._value + : option.value + } + + function onCompositionStart (e) { + e.target.composing = true; + } + + function onCompositionEnd (e) { + // prevent triggering an input event for no reason + if (!e.target.composing) { return } + e.target.composing = false; + trigger(e.target, 'input'); + } + + function trigger (el, type) { + var e = document.createEvent('HTMLEvents'); + e.initEvent(type, true, true); + el.dispatchEvent(e); + } + + /* */ + + // recursively search for possible transition defined inside the component root + function locateNode (vnode) { + return vnode.componentInstance && (!vnode.data || !vnode.data.transition) + ? locateNode(vnode.componentInstance._vnode) + : vnode + } + + var show = { + bind: function bind (el, ref, vnode) { + var value = ref.value; + + vnode = locateNode(vnode); + var transition$$1 = vnode.data && vnode.data.transition; + var originalDisplay = el.__vOriginalDisplay = + el.style.display === 'none' ? '' : el.style.display; + if (value && transition$$1) { + vnode.data.show = true; + enter(vnode, function () { + el.style.display = originalDisplay; + }); + } else { + el.style.display = value ? originalDisplay : 'none'; + } + }, + + update: function update (el, ref, vnode) { + var value = ref.value; + var oldValue = ref.oldValue; + + /* istanbul ignore if */ + if (!value === !oldValue) { return } + vnode = locateNode(vnode); + var transition$$1 = vnode.data && vnode.data.transition; + if (transition$$1) { + vnode.data.show = true; + if (value) { + enter(vnode, function () { + el.style.display = el.__vOriginalDisplay; + }); + } else { + leave(vnode, function () { + el.style.display = 'none'; + }); + } + } else { + el.style.display = value ? el.__vOriginalDisplay : 'none'; + } + }, + + unbind: function unbind ( + el, + binding, + vnode, + oldVnode, + isDestroy + ) { + if (!isDestroy) { + el.style.display = el.__vOriginalDisplay; + } + } + }; + + var platformDirectives = { + model: directive, + show: show + }; + + /* */ + + var transitionProps = { + name: String, + appear: Boolean, + css: Boolean, + mode: String, + type: String, + enterClass: String, + leaveClass: String, + enterToClass: String, + leaveToClass: String, + enterActiveClass: String, + leaveActiveClass: String, + appearClass: String, + appearActiveClass: String, + appearToClass: String, + duration: [Number, String, Object] + }; + + // in case the child is also an abstract component, e.g. <keep-alive> + // we want to recursively retrieve the real component to be rendered + function getRealChild (vnode) { + var compOptions = vnode && vnode.componentOptions; + if (compOptions && compOptions.Ctor.options.abstract) { + return getRealChild(getFirstComponentChild(compOptions.children)) + } else { + return vnode + } + } + + function extractTransitionData (comp) { + var data = {}; + var options = comp.$options; + // props + for (var key in options.propsData) { + data[key] = comp[key]; + } + // events. + // extract listeners and pass them directly to the transition methods + var listeners = options._parentListeners; + for (var key$1 in listeners) { + data[camelize(key$1)] = listeners[key$1]; + } + return data + } + + function placeholder (h, rawChild) { + if (/\d-keep-alive$/.test(rawChild.tag)) { + return h('keep-alive', { + props: rawChild.componentOptions.propsData + }) + } + } + + function hasParentTransition (vnode) { + while ((vnode = vnode.parent)) { + if (vnode.data.transition) { + return true + } + } + } + + function isSameChild (child, oldChild) { + return oldChild.key === child.key && oldChild.tag === child.tag + } + + var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); }; + + var isVShowDirective = function (d) { return d.name === 'show'; }; + + var Transition = { + name: 'transition', + props: transitionProps, + abstract: true, + + render: function render (h) { + var this$1 = this; + + var children = this.$slots.default; + if (!children) { + return + } + + // filter out text nodes (possible whitespaces) + children = children.filter(isNotTextNode); + /* istanbul ignore if */ + if (!children.length) { + return + } + + // warn multiple elements + if (children.length > 1) { + warn( + '<transition> can only be used on a single element. Use ' + + '<transition-group> for lists.', + this.$parent + ); + } + + var mode = this.mode; + + // warn invalid mode + if (mode && mode !== 'in-out' && mode !== 'out-in' + ) { + warn( + 'invalid <transition> mode: ' + mode, + this.$parent + ); + } + + var rawChild = children[0]; + + // if this is a component root node and the component's + // parent container node also has transition, skip. + if (hasParentTransition(this.$vnode)) { + return rawChild + } + + // apply transition data to child + // use getRealChild() to ignore abstract components e.g. keep-alive + var child = getRealChild(rawChild); + /* istanbul ignore if */ + if (!child) { + return rawChild + } + + if (this._leaving) { + return placeholder(h, rawChild) + } + + // ensure a key that is unique to the vnode type and to this transition + // component instance. This key will be used to remove pending leaving nodes + // during entering. + var id = "__transition-" + (this._uid) + "-"; + child.key = child.key == null + ? child.isComment + ? id + 'comment' + : id + child.tag + : isPrimitive(child.key) + ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key) + : child.key; + + var data = (child.data || (child.data = {})).transition = extractTransitionData(this); + var oldRawChild = this._vnode; + var oldChild = getRealChild(oldRawChild); + + // mark v-show + // so that the transition module can hand over the control to the directive + if (child.data.directives && child.data.directives.some(isVShowDirective)) { + child.data.show = true; + } + + if ( + oldChild && + oldChild.data && + !isSameChild(child, oldChild) && + !isAsyncPlaceholder(oldChild) && + // #6687 component root is a comment node + !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment) + ) { + // replace old child transition data with fresh one + // important for dynamic transitions! + var oldData = oldChild.data.transition = extend({}, data); + // handle transition mode + if (mode === 'out-in') { + // return placeholder node and queue update when leave finishes + this._leaving = true; + mergeVNodeHook(oldData, 'afterLeave', function () { + this$1._leaving = false; + this$1.$forceUpdate(); + }); + return placeholder(h, rawChild) + } else if (mode === 'in-out') { + if (isAsyncPlaceholder(child)) { + return oldRawChild + } + var delayedLeave; + var performLeave = function () { delayedLeave(); }; + mergeVNodeHook(data, 'afterEnter', performLeave); + mergeVNodeHook(data, 'enterCancelled', performLeave); + mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; }); + } + } + + return rawChild + } + }; + + /* */ + + var props = extend({ + tag: String, + moveClass: String + }, transitionProps); + + delete props.mode; + + var TransitionGroup = { + props: props, + + beforeMount: function beforeMount () { + var this$1 = this; + + var update = this._update; + this._update = function (vnode, hydrating) { + var restoreActiveInstance = setActiveInstance(this$1); + // force removing pass + this$1.__patch__( + this$1._vnode, + this$1.kept, + false, // hydrating + true // removeOnly (!important, avoids unnecessary moves) + ); + this$1._vnode = this$1.kept; + restoreActiveInstance(); + update.call(this$1, vnode, hydrating); + }; + }, + + render: function render (h) { + var tag = this.tag || this.$vnode.data.tag || 'span'; + var map = Object.create(null); + var prevChildren = this.prevChildren = this.children; + var rawChildren = this.$slots.default || []; + var children = this.children = []; + var transitionData = extractTransitionData(this); + + for (var i = 0; i < rawChildren.length; i++) { + var c = rawChildren[i]; + if (c.tag) { + if (c.key != null && String(c.key).indexOf('__vlist') !== 0) { + children.push(c); + map[c.key] = c + ;(c.data || (c.data = {})).transition = transitionData; + } else { + var opts = c.componentOptions; + var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag; + warn(("<transition-group> children must be keyed: <" + name + ">")); + } + } + } + + if (prevChildren) { + var kept = []; + var removed = []; + for (var i$1 = 0; i$1 < prevChildren.length; i$1++) { + var c$1 = prevChildren[i$1]; + c$1.data.transition = transitionData; + c$1.data.pos = c$1.elm.getBoundingClientRect(); + if (map[c$1.key]) { + kept.push(c$1); + } else { + removed.push(c$1); + } + } + this.kept = h(tag, null, kept); + this.removed = removed; + } + + return h(tag, null, children) + }, + + updated: function updated () { + var children = this.prevChildren; + var moveClass = this.moveClass || ((this.name || 'v') + '-move'); + if (!children.length || !this.hasMove(children[0].elm, moveClass)) { + return + } + + // we divide the work into three loops to avoid mixing DOM reads and writes + // in each iteration - which helps prevent layout thrashing. + children.forEach(callPendingCbs); + children.forEach(recordPosition); + children.forEach(applyTranslation); + + // force reflow to put everything in position + // assign to this to avoid being removed in tree-shaking + // $flow-disable-line + this._reflow = document.body.offsetHeight; + + children.forEach(function (c) { + if (c.data.moved) { + var el = c.elm; + var s = el.style; + addTransitionClass(el, moveClass); + s.transform = s.WebkitTransform = s.transitionDuration = ''; + el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) { + if (e && e.target !== el) { + return + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener(transitionEndEvent, cb); + el._moveCb = null; + removeTransitionClass(el, moveClass); + } + }); + } + }); + }, + + methods: { + hasMove: function hasMove (el, moveClass) { + /* istanbul ignore if */ + if (!hasTransition) { + return false + } + /* istanbul ignore if */ + if (this._hasMove) { + return this._hasMove + } + // Detect whether an element with the move class applied has + // CSS transitions. Since the element may be inside an entering + // transition at this very moment, we make a clone of it and remove + // all other transition classes applied to ensure only the move class + // is applied. + var clone = el.cloneNode(); + if (el._transitionClasses) { + el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); }); + } + addClass(clone, moveClass); + clone.style.display = 'none'; + this.$el.appendChild(clone); + var info = getTransitionInfo(clone); + this.$el.removeChild(clone); + return (this._hasMove = info.hasTransform) + } + } + }; + + function callPendingCbs (c) { + /* istanbul ignore if */ + if (c.elm._moveCb) { + c.elm._moveCb(); + } + /* istanbul ignore if */ + if (c.elm._enterCb) { + c.elm._enterCb(); + } + } + + function recordPosition (c) { + c.data.newPos = c.elm.getBoundingClientRect(); + } + + function applyTranslation (c) { + var oldPos = c.data.pos; + var newPos = c.data.newPos; + var dx = oldPos.left - newPos.left; + var dy = oldPos.top - newPos.top; + if (dx || dy) { + c.data.moved = true; + var s = c.elm.style; + s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)"; + s.transitionDuration = '0s'; + } + } + + var platformComponents = { + Transition: Transition, + TransitionGroup: TransitionGroup + }; + + /* */ + + // install platform specific utils + Vue.config.mustUseProp = mustUseProp; + Vue.config.isReservedTag = isReservedTag; + Vue.config.isReservedAttr = isReservedAttr; + Vue.config.getTagNamespace = getTagNamespace; + Vue.config.isUnknownElement = isUnknownElement; + + // install platform runtime directives & components + extend(Vue.options.directives, platformDirectives); + extend(Vue.options.components, platformComponents); + + // install platform patch function + Vue.prototype.__patch__ = inBrowser ? patch : noop; + + // public mount method + Vue.prototype.$mount = function ( + el, + hydrating + ) { + el = el && inBrowser ? query(el) : undefined; + return mountComponent(this, el, hydrating) + }; + + // devtools global hook + /* istanbul ignore next */ + if (inBrowser) { + setTimeout(function () { + if (config.devtools) { + if (devtools) { + devtools.emit('init', Vue); + } else { + console[console.info ? 'info' : 'log']( + 'Download the Vue Devtools extension for a better development experience:\n' + + 'https://github.com/vuejs/vue-devtools' + ); + } + } + if (config.productionTip !== false && + typeof console !== 'undefined' + ) { + console[console.info ? 'info' : 'log']( + "You are running Vue in development mode.\n" + + "Make sure to turn on production mode when deploying for production.\n" + + "See more tips at https://vuejs.org/guide/deployment.html" + ); + } + }, 0); + } + + /* */ + + var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; + var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; + + var buildRegex = cached(function (delimiters) { + var open = delimiters[0].replace(regexEscapeRE, '\\$&'); + var close = delimiters[1].replace(regexEscapeRE, '\\$&'); + return new RegExp(open + '((?:.|\\n)+?)' + close, 'g') + }); + + + + function parseText ( + text, + delimiters + ) { + var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; + if (!tagRE.test(text)) { + return + } + var tokens = []; + var rawTokens = []; + var lastIndex = tagRE.lastIndex = 0; + var match, index, tokenValue; + while ((match = tagRE.exec(text))) { + index = match.index; + // push text token + if (index > lastIndex) { + rawTokens.push(tokenValue = text.slice(lastIndex, index)); + tokens.push(JSON.stringify(tokenValue)); + } + // tag token + var exp = parseFilters(match[1].trim()); + tokens.push(("_s(" + exp + ")")); + rawTokens.push({ '@binding': exp }); + lastIndex = index + match[0].length; + } + if (lastIndex < text.length) { + rawTokens.push(tokenValue = text.slice(lastIndex)); + tokens.push(JSON.stringify(tokenValue)); + } + return { + expression: tokens.join('+'), + tokens: rawTokens + } + } + + /* */ + + function transformNode (el, options) { + var warn = options.warn || baseWarn; + var staticClass = getAndRemoveAttr(el, 'class'); + if (staticClass) { + var res = parseText(staticClass, options.delimiters); + if (res) { + warn( + "class=\"" + staticClass + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div class="{{ val }}">, use <div :class="val">.', + el.rawAttrsMap['class'] + ); + } + } + if (staticClass) { + el.staticClass = JSON.stringify(staticClass); + } + var classBinding = getBindingAttr(el, 'class', false /* getStatic */); + if (classBinding) { + el.classBinding = classBinding; + } + } + + function genData (el) { + var data = ''; + if (el.staticClass) { + data += "staticClass:" + (el.staticClass) + ","; + } + if (el.classBinding) { + data += "class:" + (el.classBinding) + ","; + } + return data + } + + var klass$1 = { + staticKeys: ['staticClass'], + transformNode: transformNode, + genData: genData + }; + + /* */ + + function transformNode$1 (el, options) { + var warn = options.warn || baseWarn; + var staticStyle = getAndRemoveAttr(el, 'style'); + if (staticStyle) { + /* istanbul ignore if */ + { + var res = parseText(staticStyle, options.delimiters); + if (res) { + warn( + "style=\"" + staticStyle + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div style="{{ val }}">, use <div :style="val">.', + el.rawAttrsMap['style'] + ); + } + } + el.staticStyle = JSON.stringify(parseStyleText(staticStyle)); + } + + var styleBinding = getBindingAttr(el, 'style', false /* getStatic */); + if (styleBinding) { + el.styleBinding = styleBinding; + } + } + + function genData$1 (el) { + var data = ''; + if (el.staticStyle) { + data += "staticStyle:" + (el.staticStyle) + ","; + } + if (el.styleBinding) { + data += "style:(" + (el.styleBinding) + "),"; + } + return data + } + + var style$1 = { + staticKeys: ['staticStyle'], + transformNode: transformNode$1, + genData: genData$1 + }; + + /* */ + + var decoder; + + var he = { + decode: function decode (html) { + decoder = decoder || document.createElement('div'); + decoder.innerHTML = html; + return decoder.textContent + } + }; + + /* */ + + var isUnaryTag = makeMap( + 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + + 'link,meta,param,source,track,wbr' + ); + + // Elements that you can, intentionally, leave open + // (and which close themselves) + var canBeLeftOpenTag = makeMap( + 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source' + ); + + // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3 + // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content + var isNonPhrasingTag = makeMap( + 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + + 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + + 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + + 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + + 'title,tr,track' + ); + + /** + * Not type-checking this file because it's mostly vendor code. + */ + + // Regular Expressions for parsing tags and attributes + var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; + var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; + var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + (unicodeRegExp.source) + "]*"; + var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")"; + var startTagOpen = new RegExp(("^<" + qnameCapture)); + var startTagClose = /^\s*(\/?)>/; + var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>")); + var doctype = /^<!DOCTYPE [^>]+>/i; + // #7298: escape - to avoid being passed as HTML comment when inlined in page + var comment = /^<!\--/; + var conditionalComment = /^<!\[/; + + // Special Elements (can contain anything) + var isPlainTextElement = makeMap('script,style,textarea', true); + var reCache = {}; + + var decodingMap = { + '<': '<', + '>': '>', + '"': '"', + '&': '&', + ' ': '\n', + '	': '\t', + ''': "'" + }; + var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g; + var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g; + + // #5992 + var isIgnoreNewlineTag = makeMap('pre,textarea', true); + var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; }; + + function decodeAttr (value, shouldDecodeNewlines) { + var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr; + return value.replace(re, function (match) { return decodingMap[match]; }) + } + + function parseHTML (html, options) { + var stack = []; + var expectHTML = options.expectHTML; + var isUnaryTag$$1 = options.isUnaryTag || no; + var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no; + var index = 0; + var last, lastTag; + while (html) { + last = html; + // Make sure we're not in a plaintext content element like script/style + if (!lastTag || !isPlainTextElement(lastTag)) { + var textEnd = html.indexOf('<'); + if (textEnd === 0) { + // Comment: + if (comment.test(html)) { + var commentEnd = html.indexOf('-->'); + + if (commentEnd >= 0) { + if (options.shouldKeepComment) { + options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3); + } + advance(commentEnd + 3); + continue + } + } + + // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment + if (conditionalComment.test(html)) { + var conditionalEnd = html.indexOf(']>'); + + if (conditionalEnd >= 0) { + advance(conditionalEnd + 2); + continue + } + } + + // Doctype: + var doctypeMatch = html.match(doctype); + if (doctypeMatch) { + advance(doctypeMatch[0].length); + continue + } + + // End tag: + var endTagMatch = html.match(endTag); + if (endTagMatch) { + var curIndex = index; + advance(endTagMatch[0].length); + parseEndTag(endTagMatch[1], curIndex, index); + continue + } + + // Start tag: + var startTagMatch = parseStartTag(); + if (startTagMatch) { + handleStartTag(startTagMatch); + if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) { + advance(1); + } + continue + } + } + + var text = (void 0), rest = (void 0), next = (void 0); + if (textEnd >= 0) { + rest = html.slice(textEnd); + while ( + !endTag.test(rest) && + !startTagOpen.test(rest) && + !comment.test(rest) && + !conditionalComment.test(rest) + ) { + // < in plain text, be forgiving and treat it as text + next = rest.indexOf('<', 1); + if (next < 0) { break } + textEnd += next; + rest = html.slice(textEnd); + } + text = html.substring(0, textEnd); + } + + if (textEnd < 0) { + text = html; + } + + if (text) { + advance(text.length); + } + + if (options.chars && text) { + options.chars(text, index - text.length, index); + } + } else { + var endTagLength = 0; + var stackedTag = lastTag.toLowerCase(); + var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')); + var rest$1 = html.replace(reStackedTag, function (all, text, endTag) { + endTagLength = endTag.length; + if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') { + text = text + .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298 + .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1'); + } + if (shouldIgnoreFirstNewline(stackedTag, text)) { + text = text.slice(1); + } + if (options.chars) { + options.chars(text); + } + return '' + }); + index += html.length - rest$1.length; + html = rest$1; + parseEndTag(stackedTag, index - endTagLength, index); + } + + if (html === last) { + options.chars && options.chars(html); + if (!stack.length && options.warn) { + options.warn(("Mal-formatted tag at end of template: \"" + html + "\""), { start: index + html.length }); + } + break + } + } + + // Clean up any remaining tags + parseEndTag(); + + function advance (n) { + index += n; + html = html.substring(n); + } + + function parseStartTag () { + var start = html.match(startTagOpen); + if (start) { + var match = { + tagName: start[1], + attrs: [], + start: index + }; + advance(start[0].length); + var end, attr; + while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) { + attr.start = index; + advance(attr[0].length); + attr.end = index; + match.attrs.push(attr); + } + if (end) { + match.unarySlash = end[1]; + advance(end[0].length); + match.end = index; + return match + } + } + } + + function handleStartTag (match) { + var tagName = match.tagName; + var unarySlash = match.unarySlash; + + if (expectHTML) { + if (lastTag === 'p' && isNonPhrasingTag(tagName)) { + parseEndTag(lastTag); + } + if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) { + parseEndTag(tagName); + } + } + + var unary = isUnaryTag$$1(tagName) || !!unarySlash; + + var l = match.attrs.length; + var attrs = new Array(l); + for (var i = 0; i < l; i++) { + var args = match.attrs[i]; + var value = args[3] || args[4] || args[5] || ''; + var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' + ? options.shouldDecodeNewlinesForHref + : options.shouldDecodeNewlines; + attrs[i] = { + name: args[1], + value: decodeAttr(value, shouldDecodeNewlines) + }; + if (options.outputSourceRange) { + attrs[i].start = args.start + args[0].match(/^\s*/).length; + attrs[i].end = args.end; + } + } + + if (!unary) { + stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end }); + lastTag = tagName; + } + + if (options.start) { + options.start(tagName, attrs, unary, match.start, match.end); + } + } + + function parseEndTag (tagName, start, end) { + var pos, lowerCasedTagName; + if (start == null) { start = index; } + if (end == null) { end = index; } + + // Find the closest opened tag of the same type + if (tagName) { + lowerCasedTagName = tagName.toLowerCase(); + for (pos = stack.length - 1; pos >= 0; pos--) { + if (stack[pos].lowerCasedTag === lowerCasedTagName) { + break + } + } + } else { + // If no tag name is provided, clean shop + pos = 0; + } + + if (pos >= 0) { + // Close all the open elements, up the stack + for (var i = stack.length - 1; i >= pos; i--) { + if (i > pos || !tagName && + options.warn + ) { + options.warn( + ("tag <" + (stack[i].tag) + "> has no matching end tag."), + { start: stack[i].start, end: stack[i].end } + ); + } + if (options.end) { + options.end(stack[i].tag, start, end); + } + } + + // Remove the open elements from the stack + stack.length = pos; + lastTag = pos && stack[pos - 1].tag; + } else if (lowerCasedTagName === 'br') { + if (options.start) { + options.start(tagName, [], true, start, end); + } + } else if (lowerCasedTagName === 'p') { + if (options.start) { + options.start(tagName, [], false, start, end); + } + if (options.end) { + options.end(tagName, start, end); + } + } + } + } + + /* */ + + var onRE = /^@|^v-on:/; + var dirRE = /^v-|^@|^:|^#/; + var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; + var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; + var stripParensRE = /^\(|\)$/g; + var dynamicArgRE = /^\[.*\]$/; + + var argRE = /:(.*)$/; + var bindRE = /^:|^\.|^v-bind:/; + var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g; + + var slotRE = /^v-slot(:|$)|^#/; + + var lineBreakRE = /[\r\n]/; + var whitespaceRE$1 = /[ \f\t\r\n]+/g; + + var invalidAttributeRE = /[\s"'<>\/=]/; + + var decodeHTMLCached = cached(he.decode); + + var emptySlotScopeToken = "_empty_"; + + // configurable state + var warn$2; + var delimiters; + var transforms; + var preTransforms; + var postTransforms; + var platformIsPreTag; + var platformMustUseProp; + var platformGetTagNamespace; + var maybeComponent; + + function createASTElement ( + tag, + attrs, + parent + ) { + return { + type: 1, + tag: tag, + attrsList: attrs, + attrsMap: makeAttrsMap(attrs), + rawAttrsMap: {}, + parent: parent, + children: [] + } + } + + /** + * Convert HTML string to AST. + */ + function parse ( + template, + options + ) { + warn$2 = options.warn || baseWarn; + + platformIsPreTag = options.isPreTag || no; + platformMustUseProp = options.mustUseProp || no; + platformGetTagNamespace = options.getTagNamespace || no; + var isReservedTag = options.isReservedTag || no; + maybeComponent = function (el) { return !!( + el.component || + el.attrsMap[':is'] || + el.attrsMap['v-bind:is'] || + !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)) + ); }; + transforms = pluckModuleFunction(options.modules, 'transformNode'); + preTransforms = pluckModuleFunction(options.modules, 'preTransformNode'); + postTransforms = pluckModuleFunction(options.modules, 'postTransformNode'); + + delimiters = options.delimiters; + + var stack = []; + var preserveWhitespace = options.preserveWhitespace !== false; + var whitespaceOption = options.whitespace; + var root; + var currentParent; + var inVPre = false; + var inPre = false; + var warned = false; + + function warnOnce (msg, range) { + if (!warned) { + warned = true; + warn$2(msg, range); + } + } + + function closeElement (element) { + trimEndingWhitespace(element); + if (!inVPre && !element.processed) { + element = processElement(element, options); + } + // tree management + if (!stack.length && element !== root) { + // allow root elements with v-if, v-else-if and v-else + if (root.if && (element.elseif || element.else)) { + { + checkRootConstraints(element); + } + addIfCondition(root, { + exp: element.elseif, + block: element + }); + } else { + warnOnce( + "Component template should contain exactly one root element. " + + "If you are using v-if on multiple elements, " + + "use v-else-if to chain them instead.", + { start: element.start } + ); + } + } + if (currentParent && !element.forbidden) { + if (element.elseif || element.else) { + processIfConditions(element, currentParent); + } else { + if (element.slotScope) { + // scoped slot + // keep it in the children list so that v-else(-if) conditions can + // find it as the prev node. + var name = element.slotTarget || '"default"' + ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element; + } + currentParent.children.push(element); + element.parent = currentParent; + } + } + + // final children cleanup + // filter out scoped slots + element.children = element.children.filter(function (c) { return !(c).slotScope; }); + // remove trailing whitespace node again + trimEndingWhitespace(element); + + // check pre state + if (element.pre) { + inVPre = false; + } + if (platformIsPreTag(element.tag)) { + inPre = false; + } + // apply post-transforms + for (var i = 0; i < postTransforms.length; i++) { + postTransforms[i](element, options); + } + } + + function trimEndingWhitespace (el) { + // remove trailing whitespace node + if (!inPre) { + var lastNode; + while ( + (lastNode = el.children[el.children.length - 1]) && + lastNode.type === 3 && + lastNode.text === ' ' + ) { + el.children.pop(); + } + } + } + + function checkRootConstraints (el) { + if (el.tag === 'slot' || el.tag === 'template') { + warnOnce( + "Cannot use <" + (el.tag) + "> as component root element because it may " + + 'contain multiple nodes.', + { start: el.start } + ); + } + if (el.attrsMap.hasOwnProperty('v-for')) { + warnOnce( + 'Cannot use v-for on stateful component root element because ' + + 'it renders multiple elements.', + el.rawAttrsMap['v-for'] + ); + } + } + + parseHTML(template, { + warn: warn$2, + expectHTML: options.expectHTML, + isUnaryTag: options.isUnaryTag, + canBeLeftOpenTag: options.canBeLeftOpenTag, + shouldDecodeNewlines: options.shouldDecodeNewlines, + shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref, + shouldKeepComment: options.comments, + outputSourceRange: options.outputSourceRange, + start: function start (tag, attrs, unary, start$1, end) { + // check namespace. + // inherit parent ns if there is one + var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag); + + // handle IE svg bug + /* istanbul ignore if */ + if (isIE && ns === 'svg') { + attrs = guardIESVGBug(attrs); + } + + var element = createASTElement(tag, attrs, currentParent); + if (ns) { + element.ns = ns; + } + + { + if (options.outputSourceRange) { + element.start = start$1; + element.end = end; + element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) { + cumulated[attr.name] = attr; + return cumulated + }, {}); + } + attrs.forEach(function (attr) { + if (invalidAttributeRE.test(attr.name)) { + warn$2( + "Invalid dynamic argument expression: attribute names cannot contain " + + "spaces, quotes, <, >, / or =.", + { + start: attr.start + attr.name.indexOf("["), + end: attr.start + attr.name.length + } + ); + } + }); + } + + if (isForbiddenTag(element) && !isServerRendering()) { + element.forbidden = true; + warn$2( + 'Templates should only be responsible for mapping the state to the ' + + 'UI. Avoid placing tags with side-effects in your templates, such as ' + + "<" + tag + ">" + ', as they will not be parsed.', + { start: element.start } + ); + } + + // apply pre-transforms + for (var i = 0; i < preTransforms.length; i++) { + element = preTransforms[i](element, options) || element; + } + + if (!inVPre) { + processPre(element); + if (element.pre) { + inVPre = true; + } + } + if (platformIsPreTag(element.tag)) { + inPre = true; + } + if (inVPre) { + processRawAttrs(element); + } else if (!element.processed) { + // structural directives + processFor(element); + processIf(element); + processOnce(element); + } + + if (!root) { + root = element; + { + checkRootConstraints(root); + } + } + + if (!unary) { + currentParent = element; + stack.push(element); + } else { + closeElement(element); + } + }, + + end: function end (tag, start, end$1) { + var element = stack[stack.length - 1]; + // pop stack + stack.length -= 1; + currentParent = stack[stack.length - 1]; + if (options.outputSourceRange) { + element.end = end$1; + } + closeElement(element); + }, + + chars: function chars (text, start, end) { + if (!currentParent) { + { + if (text === template) { + warnOnce( + 'Component template requires a root element, rather than just text.', + { start: start } + ); + } else if ((text = text.trim())) { + warnOnce( + ("text \"" + text + "\" outside root element will be ignored."), + { start: start } + ); + } + } + return + } + // IE textarea placeholder bug + /* istanbul ignore if */ + if (isIE && + currentParent.tag === 'textarea' && + currentParent.attrsMap.placeholder === text + ) { + return + } + var children = currentParent.children; + if (inPre || text.trim()) { + text = isTextTag(currentParent) ? text : decodeHTMLCached(text); + } else if (!children.length) { + // remove the whitespace-only node right after an opening tag + text = ''; + } else if (whitespaceOption) { + if (whitespaceOption === 'condense') { + // in condense mode, remove the whitespace node if it contains + // line break, otherwise condense to a single space + text = lineBreakRE.test(text) ? '' : ' '; + } else { + text = ' '; + } + } else { + text = preserveWhitespace ? ' ' : ''; + } + if (text) { + if (!inPre && whitespaceOption === 'condense') { + // condense consecutive whitespaces into single space + text = text.replace(whitespaceRE$1, ' '); + } + var res; + var child; + if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) { + child = { + type: 2, + expression: res.expression, + tokens: res.tokens, + text: text + }; + } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') { + child = { + type: 3, + text: text + }; + } + if (child) { + if (options.outputSourceRange) { + child.start = start; + child.end = end; + } + children.push(child); + } + } + }, + comment: function comment (text, start, end) { + // adding anything as a sibling to the root node is forbidden + // comments should still be allowed, but ignored + if (currentParent) { + var child = { + type: 3, + text: text, + isComment: true + }; + if (options.outputSourceRange) { + child.start = start; + child.end = end; + } + currentParent.children.push(child); + } + } + }); + return root + } + + function processPre (el) { + if (getAndRemoveAttr(el, 'v-pre') != null) { + el.pre = true; + } + } + + function processRawAttrs (el) { + var list = el.attrsList; + var len = list.length; + if (len) { + var attrs = el.attrs = new Array(len); + for (var i = 0; i < len; i++) { + attrs[i] = { + name: list[i].name, + value: JSON.stringify(list[i].value) + }; + if (list[i].start != null) { + attrs[i].start = list[i].start; + attrs[i].end = list[i].end; + } + } + } else if (!el.pre) { + // non root node in pre blocks with no attributes + el.plain = true; + } + } + + function processElement ( + element, + options + ) { + processKey(element); + + // determine whether this is a plain element after + // removing structural attributes + element.plain = ( + !element.key && + !element.scopedSlots && + !element.attrsList.length + ); + + processRef(element); + processSlotContent(element); + processSlotOutlet(element); + processComponent(element); + for (var i = 0; i < transforms.length; i++) { + element = transforms[i](element, options) || element; + } + processAttrs(element); + return element + } + + function processKey (el) { + var exp = getBindingAttr(el, 'key'); + if (exp) { + { + if (el.tag === 'template') { + warn$2( + "<template> cannot be keyed. Place the key on real elements instead.", + getRawBindingAttr(el, 'key') + ); + } + if (el.for) { + var iterator = el.iterator2 || el.iterator1; + var parent = el.parent; + if (iterator && iterator === exp && parent && parent.tag === 'transition-group') { + warn$2( + "Do not use v-for index as key on <transition-group> children, " + + "this is the same as not using keys.", + getRawBindingAttr(el, 'key'), + true /* tip */ + ); + } + } + } + el.key = exp; + } + } + + function processRef (el) { + var ref = getBindingAttr(el, 'ref'); + if (ref) { + el.ref = ref; + el.refInFor = checkInFor(el); + } + } + + function processFor (el) { + var exp; + if ((exp = getAndRemoveAttr(el, 'v-for'))) { + var res = parseFor(exp); + if (res) { + extend(el, res); + } else { + warn$2( + ("Invalid v-for expression: " + exp), + el.rawAttrsMap['v-for'] + ); + } + } + } + + + + function parseFor (exp) { + var inMatch = exp.match(forAliasRE); + if (!inMatch) { return } + var res = {}; + res.for = inMatch[2].trim(); + var alias = inMatch[1].trim().replace(stripParensRE, ''); + var iteratorMatch = alias.match(forIteratorRE); + if (iteratorMatch) { + res.alias = alias.replace(forIteratorRE, '').trim(); + res.iterator1 = iteratorMatch[1].trim(); + if (iteratorMatch[2]) { + res.iterator2 = iteratorMatch[2].trim(); + } + } else { + res.alias = alias; + } + return res + } + + function processIf (el) { + var exp = getAndRemoveAttr(el, 'v-if'); + if (exp) { + el.if = exp; + addIfCondition(el, { + exp: exp, + block: el + }); + } else { + if (getAndRemoveAttr(el, 'v-else') != null) { + el.else = true; + } + var elseif = getAndRemoveAttr(el, 'v-else-if'); + if (elseif) { + el.elseif = elseif; + } + } + } + + function processIfConditions (el, parent) { + var prev = findPrevElement(parent.children); + if (prev && prev.if) { + addIfCondition(prev, { + exp: el.elseif, + block: el + }); + } else { + warn$2( + "v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " + + "used on element <" + (el.tag) + "> without corresponding v-if.", + el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else'] + ); + } + } + + function findPrevElement (children) { + var i = children.length; + while (i--) { + if (children[i].type === 1) { + return children[i] + } else { + if (children[i].text !== ' ') { + warn$2( + "text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " + + "will be ignored.", + children[i] + ); + } + children.pop(); + } + } + } + + function addIfCondition (el, condition) { + if (!el.ifConditions) { + el.ifConditions = []; + } + el.ifConditions.push(condition); + } + + function processOnce (el) { + var once$$1 = getAndRemoveAttr(el, 'v-once'); + if (once$$1 != null) { + el.once = true; + } + } + + // handle content being passed to a component as slot, + // e.g. <template slot="xxx">, <div slot-scope="xxx"> + function processSlotContent (el) { + var slotScope; + if (el.tag === 'template') { + slotScope = getAndRemoveAttr(el, 'scope'); + /* istanbul ignore if */ + if (slotScope) { + warn$2( + "the \"scope\" attribute for scoped slots have been deprecated and " + + "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " + + "can also be used on plain elements in addition to <template> to " + + "denote scoped slots.", + el.rawAttrsMap['scope'], + true + ); + } + el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope'); + } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) { + /* istanbul ignore if */ + if (el.attrsMap['v-for']) { + warn$2( + "Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " + + "(v-for takes higher priority). Use a wrapper <template> for the " + + "scoped slot to make it clearer.", + el.rawAttrsMap['slot-scope'], + true + ); + } + el.slotScope = slotScope; + } + + // slot="xxx" + var slotTarget = getBindingAttr(el, 'slot'); + if (slotTarget) { + el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget; + el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']); + // preserve slot as an attribute for native shadow DOM compat + // only for non-scoped slots. + if (el.tag !== 'template' && !el.slotScope) { + addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot')); + } + } + + // 2.6 v-slot syntax + { + if (el.tag === 'template') { + // v-slot on <template> + var slotBinding = getAndRemoveAttrByRegex(el, slotRE); + if (slotBinding) { + { + if (el.slotTarget || el.slotScope) { + warn$2( + "Unexpected mixed usage of different slot syntaxes.", + el + ); + } + if (el.parent && !maybeComponent(el.parent)) { + warn$2( + "<template v-slot> can only appear at the root level inside " + + "the receiving component", + el + ); + } + } + var ref = getSlotName(slotBinding); + var name = ref.name; + var dynamic = ref.dynamic; + el.slotTarget = name; + el.slotTargetDynamic = dynamic; + el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf + } + } else { + // v-slot on component, denotes default slot + var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE); + if (slotBinding$1) { + { + if (!maybeComponent(el)) { + warn$2( + "v-slot can only be used on components or <template>.", + slotBinding$1 + ); + } + if (el.slotScope || el.slotTarget) { + warn$2( + "Unexpected mixed usage of different slot syntaxes.", + el + ); + } + if (el.scopedSlots) { + warn$2( + "To avoid scope ambiguity, the default slot should also use " + + "<template> syntax when there are other named slots.", + slotBinding$1 + ); + } + } + // add the component's children to its default slot + var slots = el.scopedSlots || (el.scopedSlots = {}); + var ref$1 = getSlotName(slotBinding$1); + var name$1 = ref$1.name; + var dynamic$1 = ref$1.dynamic; + var slotContainer = slots[name$1] = createASTElement('template', [], el); + slotContainer.slotTarget = name$1; + slotContainer.slotTargetDynamic = dynamic$1; + slotContainer.children = el.children.filter(function (c) { + if (!c.slotScope) { + c.parent = slotContainer; + return true + } + }); + slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken; + // remove children as they are returned from scopedSlots now + el.children = []; + // mark el non-plain so data gets generated + el.plain = false; + } + } + } + } + + function getSlotName (binding) { + var name = binding.name.replace(slotRE, ''); + if (!name) { + if (binding.name[0] !== '#') { + name = 'default'; + } else { + warn$2( + "v-slot shorthand syntax requires a slot name.", + binding + ); + } + } + return dynamicArgRE.test(name) + // dynamic [name] + ? { name: name.slice(1, -1), dynamic: true } + // static name + : { name: ("\"" + name + "\""), dynamic: false } + } + + // handle <slot/> outlets + function processSlotOutlet (el) { + if (el.tag === 'slot') { + el.slotName = getBindingAttr(el, 'name'); + if (el.key) { + warn$2( + "`key` does not work on <slot> because slots are abstract outlets " + + "and can possibly expand into multiple elements. " + + "Use the key on a wrapping element instead.", + getRawBindingAttr(el, 'key') + ); + } + } + } + + function processComponent (el) { + var binding; + if ((binding = getBindingAttr(el, 'is'))) { + el.component = binding; + } + if (getAndRemoveAttr(el, 'inline-template') != null) { + el.inlineTemplate = true; + } + } + + function processAttrs (el) { + var list = el.attrsList; + var i, l, name, rawName, value, modifiers, syncGen, isDynamic; + for (i = 0, l = list.length; i < l; i++) { + name = rawName = list[i].name; + value = list[i].value; + if (dirRE.test(name)) { + // mark element as dynamic + el.hasBindings = true; + // modifiers + modifiers = parseModifiers(name.replace(dirRE, '')); + // support .foo shorthand syntax for the .prop modifier + if (modifiers) { + name = name.replace(modifierRE, ''); + } + if (bindRE.test(name)) { // v-bind + name = name.replace(bindRE, ''); + value = parseFilters(value); + isDynamic = dynamicArgRE.test(name); + if (isDynamic) { + name = name.slice(1, -1); + } + if ( + value.trim().length === 0 + ) { + warn$2( + ("The value for a v-bind expression cannot be empty. Found in \"v-bind:" + name + "\"") + ); + } + if (modifiers) { + if (modifiers.prop && !isDynamic) { + name = camelize(name); + if (name === 'innerHtml') { name = 'innerHTML'; } + } + if (modifiers.camel && !isDynamic) { + name = camelize(name); + } + if (modifiers.sync) { + syncGen = genAssignmentCode(value, "$event"); + if (!isDynamic) { + addHandler( + el, + ("update:" + (camelize(name))), + syncGen, + null, + false, + warn$2, + list[i] + ); + if (hyphenate(name) !== camelize(name)) { + addHandler( + el, + ("update:" + (hyphenate(name))), + syncGen, + null, + false, + warn$2, + list[i] + ); + } + } else { + // handler w/ dynamic event name + addHandler( + el, + ("\"update:\"+(" + name + ")"), + syncGen, + null, + false, + warn$2, + list[i], + true // dynamic + ); + } + } + } + if ((modifiers && modifiers.prop) || ( + !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name) + )) { + addProp(el, name, value, list[i], isDynamic); + } else { + addAttr(el, name, value, list[i], isDynamic); + } + } else if (onRE.test(name)) { // v-on + name = name.replace(onRE, ''); + isDynamic = dynamicArgRE.test(name); + if (isDynamic) { + name = name.slice(1, -1); + } + addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic); + } else { // normal directives + name = name.replace(dirRE, ''); + // parse arg + var argMatch = name.match(argRE); + var arg = argMatch && argMatch[1]; + isDynamic = false; + if (arg) { + name = name.slice(0, -(arg.length + 1)); + if (dynamicArgRE.test(arg)) { + arg = arg.slice(1, -1); + isDynamic = true; + } + } + addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]); + if (name === 'model') { + checkForAliasModel(el, value); + } + } + } else { + // literal attribute + { + var res = parseText(value, delimiters); + if (res) { + warn$2( + name + "=\"" + value + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div id="{{ val }}">, use <div :id="val">.', + list[i] + ); + } + } + addAttr(el, name, JSON.stringify(value), list[i]); + // #6887 firefox doesn't update muted state if set via attribute + // even immediately after element creation + if (!el.component && + name === 'muted' && + platformMustUseProp(el.tag, el.attrsMap.type, name)) { + addProp(el, name, 'true', list[i]); + } + } + } + } + + function checkInFor (el) { + var parent = el; + while (parent) { + if (parent.for !== undefined) { + return true + } + parent = parent.parent; + } + return false + } + + function parseModifiers (name) { + var match = name.match(modifierRE); + if (match) { + var ret = {}; + match.forEach(function (m) { ret[m.slice(1)] = true; }); + return ret + } + } + + function makeAttrsMap (attrs) { + var map = {}; + for (var i = 0, l = attrs.length; i < l; i++) { + if ( + map[attrs[i].name] && !isIE && !isEdge + ) { + warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]); + } + map[attrs[i].name] = attrs[i].value; + } + return map + } + + // for script (e.g. type="x/template") or style, do not decode content + function isTextTag (el) { + return el.tag === 'script' || el.tag === 'style' + } + + function isForbiddenTag (el) { + return ( + el.tag === 'style' || + (el.tag === 'script' && ( + !el.attrsMap.type || + el.attrsMap.type === 'text/javascript' + )) + ) + } + + var ieNSBug = /^xmlns:NS\d+/; + var ieNSPrefix = /^NS\d+:/; + + /* istanbul ignore next */ + function guardIESVGBug (attrs) { + var res = []; + for (var i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + if (!ieNSBug.test(attr.name)) { + attr.name = attr.name.replace(ieNSPrefix, ''); + res.push(attr); + } + } + return res + } + + function checkForAliasModel (el, value) { + var _el = el; + while (_el) { + if (_el.for && _el.alias === value) { + warn$2( + "<" + (el.tag) + " v-model=\"" + value + "\">: " + + "You are binding v-model directly to a v-for iteration alias. " + + "This will not be able to modify the v-for source array because " + + "writing to the alias is like modifying a function local variable. " + + "Consider using an array of objects and use v-model on an object property instead.", + el.rawAttrsMap['v-model'] + ); + } + _el = _el.parent; + } + } + + /* */ + + function preTransformNode (el, options) { + if (el.tag === 'input') { + var map = el.attrsMap; + if (!map['v-model']) { + return + } + + var typeBinding; + if (map[':type'] || map['v-bind:type']) { + typeBinding = getBindingAttr(el, 'type'); + } + if (!map.type && !typeBinding && map['v-bind']) { + typeBinding = "(" + (map['v-bind']) + ").type"; + } + + if (typeBinding) { + var ifCondition = getAndRemoveAttr(el, 'v-if', true); + var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : ""; + var hasElse = getAndRemoveAttr(el, 'v-else', true) != null; + var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); + // 1. checkbox + var branch0 = cloneASTElement(el); + // process for on the main node + processFor(branch0); + addRawAttr(branch0, 'type', 'checkbox'); + processElement(branch0, options); + branch0.processed = true; // prevent it from double-processed + branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra; + addIfCondition(branch0, { + exp: branch0.if, + block: branch0 + }); + // 2. add radio else-if condition + var branch1 = cloneASTElement(el); + getAndRemoveAttr(branch1, 'v-for', true); + addRawAttr(branch1, 'type', 'radio'); + processElement(branch1, options); + addIfCondition(branch0, { + exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra, + block: branch1 + }); + // 3. other + var branch2 = cloneASTElement(el); + getAndRemoveAttr(branch2, 'v-for', true); + addRawAttr(branch2, ':type', typeBinding); + processElement(branch2, options); + addIfCondition(branch0, { + exp: ifCondition, + block: branch2 + }); + + if (hasElse) { + branch0.else = true; + } else if (elseIfCondition) { + branch0.elseif = elseIfCondition; + } + + return branch0 + } + } + } + + function cloneASTElement (el) { + return createASTElement(el.tag, el.attrsList.slice(), el.parent) + } + + var model$1 = { + preTransformNode: preTransformNode + }; + + var modules$1 = [ + klass$1, + style$1, + model$1 + ]; + + /* */ + + function text (el, dir) { + if (dir.value) { + addProp(el, 'textContent', ("_s(" + (dir.value) + ")"), dir); + } + } + + /* */ + + function html (el, dir) { + if (dir.value) { + addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"), dir); + } + } + + var directives$1 = { + model: model, + text: text, + html: html + }; + + /* */ + + var baseOptions = { + expectHTML: true, + modules: modules$1, + directives: directives$1, + isPreTag: isPreTag, + isUnaryTag: isUnaryTag, + mustUseProp: mustUseProp, + canBeLeftOpenTag: canBeLeftOpenTag, + isReservedTag: isReservedTag, + getTagNamespace: getTagNamespace, + staticKeys: genStaticKeys(modules$1) + }; + + /* */ + + var isStaticKey; + var isPlatformReservedTag; + + var genStaticKeysCached = cached(genStaticKeys$1); + + /** + * Goal of the optimizer: walk the generated template AST tree + * and detect sub-trees that are purely static, i.e. parts of + * the DOM that never needs to change. + * + * Once we detect these sub-trees, we can: + * + * 1. Hoist them into constants, so that we no longer need to + * create fresh nodes for them on each re-render; + * 2. Completely skip them in the patching process. + */ + function optimize (root, options) { + if (!root) { return } + isStaticKey = genStaticKeysCached(options.staticKeys || ''); + isPlatformReservedTag = options.isReservedTag || no; + // first pass: mark all non-static nodes. + markStatic$1(root); + // second pass: mark static roots. + markStaticRoots(root, false); + } + + function genStaticKeys$1 (keys) { + return makeMap( + 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' + + (keys ? ',' + keys : '') + ) + } + + function markStatic$1 (node) { + node.static = isStatic(node); + if (node.type === 1) { + // do not make component slot content static. this avoids + // 1. components not able to mutate slot nodes + // 2. static slot content fails for hot-reloading + if ( + !isPlatformReservedTag(node.tag) && + node.tag !== 'slot' && + node.attrsMap['inline-template'] == null + ) { + return + } + for (var i = 0, l = node.children.length; i < l; i++) { + var child = node.children[i]; + markStatic$1(child); + if (!child.static) { + node.static = false; + } + } + if (node.ifConditions) { + for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) { + var block = node.ifConditions[i$1].block; + markStatic$1(block); + if (!block.static) { + node.static = false; + } + } + } + } + } + + function markStaticRoots (node, isInFor) { + if (node.type === 1) { + if (node.static || node.once) { + node.staticInFor = isInFor; + } + // For a node to qualify as a static root, it should have children that + // are not just static text. Otherwise the cost of hoisting out will + // outweigh the benefits and it's better off to just always render it fresh. + if (node.static && node.children.length && !( + node.children.length === 1 && + node.children[0].type === 3 + )) { + node.staticRoot = true; + return + } else { + node.staticRoot = false; + } + if (node.children) { + for (var i = 0, l = node.children.length; i < l; i++) { + markStaticRoots(node.children[i], isInFor || !!node.for); + } + } + if (node.ifConditions) { + for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) { + markStaticRoots(node.ifConditions[i$1].block, isInFor); + } + } + } + } + + function isStatic (node) { + if (node.type === 2) { // expression + return false + } + if (node.type === 3) { // text + return true + } + return !!(node.pre || ( + !node.hasBindings && // no dynamic bindings + !node.if && !node.for && // not v-if or v-for or v-else + !isBuiltInTag(node.tag) && // not a built-in + isPlatformReservedTag(node.tag) && // not a component + !isDirectChildOfTemplateFor(node) && + Object.keys(node).every(isStaticKey) + )) + } + + function isDirectChildOfTemplateFor (node) { + while (node.parent) { + node = node.parent; + if (node.tag !== 'template') { + return false + } + if (node.for) { + return true + } + } + return false + } + + /* */ + + var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/; + var fnInvokeRE = /\([^)]*?\);*$/; + var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; + + // KeyboardEvent.keyCode aliases + var keyCodes = { + esc: 27, + tab: 9, + enter: 13, + space: 32, + up: 38, + left: 37, + right: 39, + down: 40, + 'delete': [8, 46] + }; + + // KeyboardEvent.key aliases + var keyNames = { + // #7880: IE11 and Edge use `Esc` for Escape key name. + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + // #9112: IE11 uses `Spacebar` for Space key name. + space: [' ', 'Spacebar'], + // #7806: IE11 uses key names without `Arrow` prefix for arrow keys. + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + // #9112: IE11 uses `Del` for Delete key name. + 'delete': ['Backspace', 'Delete', 'Del'] + }; + + // #4868: modifiers that prevent the execution of the listener + // need to explicitly return null so that we can determine whether to remove + // the listener for .once + var genGuard = function (condition) { return ("if(" + condition + ")return null;"); }; + + var modifierCode = { + stop: '$event.stopPropagation();', + prevent: '$event.preventDefault();', + self: genGuard("$event.target !== $event.currentTarget"), + ctrl: genGuard("!$event.ctrlKey"), + shift: genGuard("!$event.shiftKey"), + alt: genGuard("!$event.altKey"), + meta: genGuard("!$event.metaKey"), + left: genGuard("'button' in $event && $event.button !== 0"), + middle: genGuard("'button' in $event && $event.button !== 1"), + right: genGuard("'button' in $event && $event.button !== 2") + }; + + function genHandlers ( + events, + isNative + ) { + var prefix = isNative ? 'nativeOn:' : 'on:'; + var staticHandlers = ""; + var dynamicHandlers = ""; + for (var name in events) { + var handlerCode = genHandler(events[name]); + if (events[name] && events[name].dynamic) { + dynamicHandlers += name + "," + handlerCode + ","; + } else { + staticHandlers += "\"" + name + "\":" + handlerCode + ","; + } + } + staticHandlers = "{" + (staticHandlers.slice(0, -1)) + "}"; + if (dynamicHandlers) { + return prefix + "_d(" + staticHandlers + ",[" + (dynamicHandlers.slice(0, -1)) + "])" + } else { + return prefix + staticHandlers + } + } + + function genHandler (handler) { + if (!handler) { + return 'function(){}' + } + + if (Array.isArray(handler)) { + return ("[" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + "]") + } + + var isMethodPath = simplePathRE.test(handler.value); + var isFunctionExpression = fnExpRE.test(handler.value); + var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, '')); + + if (!handler.modifiers) { + if (isMethodPath || isFunctionExpression) { + return handler.value + } + return ("function($event){" + (isFunctionInvocation ? ("return " + (handler.value)) : handler.value) + "}") // inline statement + } else { + var code = ''; + var genModifierCode = ''; + var keys = []; + for (var key in handler.modifiers) { + if (modifierCode[key]) { + genModifierCode += modifierCode[key]; + // left/right + if (keyCodes[key]) { + keys.push(key); + } + } else if (key === 'exact') { + var modifiers = (handler.modifiers); + genModifierCode += genGuard( + ['ctrl', 'shift', 'alt', 'meta'] + .filter(function (keyModifier) { return !modifiers[keyModifier]; }) + .map(function (keyModifier) { return ("$event." + keyModifier + "Key"); }) + .join('||') + ); + } else { + keys.push(key); + } + } + if (keys.length) { + code += genKeyFilter(keys); + } + // Make sure modifiers like prevent and stop get executed after key filtering + if (genModifierCode) { + code += genModifierCode; + } + var handlerCode = isMethodPath + ? ("return " + (handler.value) + ".apply(null, arguments)") + : isFunctionExpression + ? ("return (" + (handler.value) + ").apply(null, arguments)") + : isFunctionInvocation + ? ("return " + (handler.value)) + : handler.value; + return ("function($event){" + code + handlerCode + "}") + } + } + + function genKeyFilter (keys) { + return ( + // make sure the key filters only apply to KeyboardEvents + // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake + // key events that do not have keyCode property... + "if(!$event.type.indexOf('key')&&" + + (keys.map(genFilterCode).join('&&')) + ")return null;" + ) + } + + function genFilterCode (key) { + var keyVal = parseInt(key, 10); + if (keyVal) { + return ("$event.keyCode!==" + keyVal) + } + var keyCode = keyCodes[key]; + var keyName = keyNames[key]; + return ( + "_k($event.keyCode," + + (JSON.stringify(key)) + "," + + (JSON.stringify(keyCode)) + "," + + "$event.key," + + "" + (JSON.stringify(keyName)) + + ")" + ) + } + + /* */ + + function on (el, dir) { + if (dir.modifiers) { + warn("v-on without argument does not support modifiers."); + } + el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); }; + } + + /* */ + + function bind$1 (el, dir) { + el.wrapData = function (code) { + return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")") + }; + } + + /* */ + + var baseDirectives = { + on: on, + bind: bind$1, + cloak: noop + }; + + /* */ + + + + + + var CodegenState = function CodegenState (options) { + this.options = options; + this.warn = options.warn || baseWarn; + this.transforms = pluckModuleFunction(options.modules, 'transformCode'); + this.dataGenFns = pluckModuleFunction(options.modules, 'genData'); + this.directives = extend(extend({}, baseDirectives), options.directives); + var isReservedTag = options.isReservedTag || no; + this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); }; + this.onceId = 0; + this.staticRenderFns = []; + this.pre = false; + }; + + + + function generate ( + ast, + options + ) { + var state = new CodegenState(options); + // fix #11483, Root level <script> tags should not be rendered. + var code = ast ? (ast.tag === 'script' ? 'null' : genElement(ast, state)) : '_c("div")'; + return { + render: ("with(this){return " + code + "}"), + staticRenderFns: state.staticRenderFns + } + } + + function genElement (el, state) { + if (el.parent) { + el.pre = el.pre || el.parent.pre; + } + + if (el.staticRoot && !el.staticProcessed) { + return genStatic(el, state) + } else if (el.once && !el.onceProcessed) { + return genOnce(el, state) + } else if (el.for && !el.forProcessed) { + return genFor(el, state) + } else if (el.if && !el.ifProcessed) { + return genIf(el, state) + } else if (el.tag === 'template' && !el.slotTarget && !state.pre) { + return genChildren(el, state) || 'void 0' + } else if (el.tag === 'slot') { + return genSlot(el, state) + } else { + // component or element + var code; + if (el.component) { + code = genComponent(el.component, el, state); + } else { + var data; + if (!el.plain || (el.pre && state.maybeComponent(el))) { + data = genData$2(el, state); + } + + var children = el.inlineTemplate ? null : genChildren(el, state, true); + code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")"; + } + // module transforms + for (var i = 0; i < state.transforms.length; i++) { + code = state.transforms[i](el, code); + } + return code + } + } + + // hoist static sub-trees out + function genStatic (el, state) { + el.staticProcessed = true; + // Some elements (templates) need to behave differently inside of a v-pre + // node. All pre nodes are static roots, so we can use this as a location to + // wrap a state change and reset it upon exiting the pre node. + var originalPreState = state.pre; + if (el.pre) { + state.pre = el.pre; + } + state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}")); + state.pre = originalPreState; + return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")") + } + + // v-once + function genOnce (el, state) { + el.onceProcessed = true; + if (el.if && !el.ifProcessed) { + return genIf(el, state) + } else if (el.staticInFor) { + var key = ''; + var parent = el.parent; + while (parent) { + if (parent.for) { + key = parent.key; + break + } + parent = parent.parent; + } + if (!key) { + state.warn( + "v-once can only be used inside v-for that is keyed. ", + el.rawAttrsMap['v-once'] + ); + return genElement(el, state) + } + return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")") + } else { + return genStatic(el, state) + } + } + + function genIf ( + el, + state, + altGen, + altEmpty + ) { + el.ifProcessed = true; // avoid recursion + return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty) + } + + function genIfConditions ( + conditions, + state, + altGen, + altEmpty + ) { + if (!conditions.length) { + return altEmpty || '_e()' + } + + var condition = conditions.shift(); + if (condition.exp) { + return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty))) + } else { + return ("" + (genTernaryExp(condition.block))) + } + + // v-if with v-once should generate code like (a)?_m(0):_m(1) + function genTernaryExp (el) { + return altGen + ? altGen(el, state) + : el.once + ? genOnce(el, state) + : genElement(el, state) + } + } + + function genFor ( + el, + state, + altGen, + altHelper + ) { + var exp = el.for; + var alias = el.alias; + var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : ''; + var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : ''; + + if (state.maybeComponent(el) && + el.tag !== 'slot' && + el.tag !== 'template' && + !el.key + ) { + state.warn( + "<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " + + "v-for should have explicit keys. " + + "See https://vuejs.org/guide/list.html#key for more info.", + el.rawAttrsMap['v-for'], + true /* tip */ + ); + } + + el.forProcessed = true; // avoid recursion + return (altHelper || '_l') + "((" + exp + ")," + + "function(" + alias + iterator1 + iterator2 + "){" + + "return " + ((altGen || genElement)(el, state)) + + '})' + } + + function genData$2 (el, state) { + var data = '{'; + + // directives first. + // directives may mutate the el's other properties before they are generated. + var dirs = genDirectives(el, state); + if (dirs) { data += dirs + ','; } + + // key + if (el.key) { + data += "key:" + (el.key) + ","; + } + // ref + if (el.ref) { + data += "ref:" + (el.ref) + ","; + } + if (el.refInFor) { + data += "refInFor:true,"; + } + // pre + if (el.pre) { + data += "pre:true,"; + } + // record original tag name for components using "is" attribute + if (el.component) { + data += "tag:\"" + (el.tag) + "\","; + } + // module data generation functions + for (var i = 0; i < state.dataGenFns.length; i++) { + data += state.dataGenFns[i](el); + } + // attributes + if (el.attrs) { + data += "attrs:" + (genProps(el.attrs)) + ","; + } + // DOM props + if (el.props) { + data += "domProps:" + (genProps(el.props)) + ","; + } + // event handlers + if (el.events) { + data += (genHandlers(el.events, false)) + ","; + } + if (el.nativeEvents) { + data += (genHandlers(el.nativeEvents, true)) + ","; + } + // slot target + // only for non-scoped slots + if (el.slotTarget && !el.slotScope) { + data += "slot:" + (el.slotTarget) + ","; + } + // scoped slots + if (el.scopedSlots) { + data += (genScopedSlots(el, el.scopedSlots, state)) + ","; + } + // component v-model + if (el.model) { + data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},"; + } + // inline-template + if (el.inlineTemplate) { + var inlineTemplate = genInlineTemplate(el, state); + if (inlineTemplate) { + data += inlineTemplate + ","; + } + } + data = data.replace(/,$/, '') + '}'; + // v-bind dynamic argument wrap + // v-bind with dynamic arguments must be applied using the same v-bind object + // merge helper so that class/style/mustUseProp attrs are handled correctly. + if (el.dynamicAttrs) { + data = "_b(" + data + ",\"" + (el.tag) + "\"," + (genProps(el.dynamicAttrs)) + ")"; + } + // v-bind data wrap + if (el.wrapData) { + data = el.wrapData(data); + } + // v-on data wrap + if (el.wrapListeners) { + data = el.wrapListeners(data); + } + return data + } + + function genDirectives (el, state) { + var dirs = el.directives; + if (!dirs) { return } + var res = 'directives:['; + var hasRuntime = false; + var i, l, dir, needRuntime; + for (i = 0, l = dirs.length; i < l; i++) { + dir = dirs[i]; + needRuntime = true; + var gen = state.directives[dir.name]; + if (gen) { + // compile-time directive that manipulates AST. + // returns true if it also needs a runtime counterpart. + needRuntime = !!gen(el, dir, state.warn); + } + if (needRuntime) { + hasRuntime = true; + res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:" + (dir.isDynamicArg ? dir.arg : ("\"" + (dir.arg) + "\""))) : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},"; + } + } + if (hasRuntime) { + return res.slice(0, -1) + ']' + } + } + + function genInlineTemplate (el, state) { + var ast = el.children[0]; + if (el.children.length !== 1 || ast.type !== 1) { + state.warn( + 'Inline-template components must have exactly one child element.', + { start: el.start } + ); + } + if (ast && ast.type === 1) { + var inlineRenderFns = generate(ast, state.options); + return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}") + } + } + + function genScopedSlots ( + el, + slots, + state + ) { + // by default scoped slots are considered "stable", this allows child + // components with only scoped slots to skip forced updates from parent. + // but in some cases we have to bail-out of this optimization + // for example if the slot contains dynamic names, has v-if or v-for on them... + var needsForceUpdate = el.for || Object.keys(slots).some(function (key) { + var slot = slots[key]; + return ( + slot.slotTargetDynamic || + slot.if || + slot.for || + containsSlotChild(slot) // is passing down slot from parent which may be dynamic + ) + }); + + // #9534: if a component with scoped slots is inside a conditional branch, + // it's possible for the same component to be reused but with different + // compiled slot content. To avoid that, we generate a unique key based on + // the generated code of all the slot contents. + var needsKey = !!el.if; + + // OR when it is inside another scoped slot or v-for (the reactivity may be + // disconnected due to the intermediate scope variable) + // #9438, #9506 + // TODO: this can be further optimized by properly analyzing in-scope bindings + // and skip force updating ones that do not actually use scope variables. + if (!needsForceUpdate) { + var parent = el.parent; + while (parent) { + if ( + (parent.slotScope && parent.slotScope !== emptySlotScopeToken) || + parent.for + ) { + needsForceUpdate = true; + break + } + if (parent.if) { + needsKey = true; + } + parent = parent.parent; + } + } + + var generatedSlots = Object.keys(slots) + .map(function (key) { return genScopedSlot(slots[key], state); }) + .join(','); + + return ("scopedSlots:_u([" + generatedSlots + "]" + (needsForceUpdate ? ",null,true" : "") + (!needsForceUpdate && needsKey ? (",null,false," + (hash(generatedSlots))) : "") + ")") + } + + function hash(str) { + var hash = 5381; + var i = str.length; + while(i) { + hash = (hash * 33) ^ str.charCodeAt(--i); + } + return hash >>> 0 + } + + function containsSlotChild (el) { + if (el.type === 1) { + if (el.tag === 'slot') { + return true + } + return el.children.some(containsSlotChild) + } + return false + } + + function genScopedSlot ( + el, + state + ) { + var isLegacySyntax = el.attrsMap['slot-scope']; + if (el.if && !el.ifProcessed && !isLegacySyntax) { + return genIf(el, state, genScopedSlot, "null") + } + if (el.for && !el.forProcessed) { + return genFor(el, state, genScopedSlot) + } + var slotScope = el.slotScope === emptySlotScopeToken + ? "" + : String(el.slotScope); + var fn = "function(" + slotScope + "){" + + "return " + (el.tag === 'template' + ? el.if && isLegacySyntax + ? ("(" + (el.if) + ")?" + (genChildren(el, state) || 'undefined') + ":undefined") + : genChildren(el, state) || 'undefined' + : genElement(el, state)) + "}"; + // reverse proxy v-slot without scope on this.$slots + var reverseProxy = slotScope ? "" : ",proxy:true"; + return ("{key:" + (el.slotTarget || "\"default\"") + ",fn:" + fn + reverseProxy + "}") + } + + function genChildren ( + el, + state, + checkSkip, + altGenElement, + altGenNode + ) { + var children = el.children; + if (children.length) { + var el$1 = children[0]; + // optimize single v-for + if (children.length === 1 && + el$1.for && + el$1.tag !== 'template' && + el$1.tag !== 'slot' + ) { + var normalizationType = checkSkip + ? state.maybeComponent(el$1) ? ",1" : ",0" + : ""; + return ("" + ((altGenElement || genElement)(el$1, state)) + normalizationType) + } + var normalizationType$1 = checkSkip + ? getNormalizationType(children, state.maybeComponent) + : 0; + var gen = altGenNode || genNode; + return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType$1 ? ("," + normalizationType$1) : '')) + } + } + + // determine the normalization needed for the children array. + // 0: no normalization needed + // 1: simple normalization needed (possible 1-level deep nested array) + // 2: full normalization needed + function getNormalizationType ( + children, + maybeComponent + ) { + var res = 0; + for (var i = 0; i < children.length; i++) { + var el = children[i]; + if (el.type !== 1) { + continue + } + if (needsNormalization(el) || + (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) { + res = 2; + break + } + if (maybeComponent(el) || + (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) { + res = 1; + } + } + return res + } + + function needsNormalization (el) { + return el.for !== undefined || el.tag === 'template' || el.tag === 'slot' + } + + function genNode (node, state) { + if (node.type === 1) { + return genElement(node, state) + } else if (node.type === 3 && node.isComment) { + return genComment(node) + } else { + return genText(node) + } + } + + function genText (text) { + return ("_v(" + (text.type === 2 + ? text.expression // no need for () because already wrapped in _s() + : transformSpecialNewlines(JSON.stringify(text.text))) + ")") + } + + function genComment (comment) { + return ("_e(" + (JSON.stringify(comment.text)) + ")") + } + + function genSlot (el, state) { + var slotName = el.slotName || '"default"'; + var children = genChildren(el, state); + var res = "_t(" + slotName + (children ? (",function(){return " + children + "}") : ''); + var attrs = el.attrs || el.dynamicAttrs + ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({ + // slot props are camelized + name: camelize(attr.name), + value: attr.value, + dynamic: attr.dynamic + }); })) + : null; + var bind$$1 = el.attrsMap['v-bind']; + if ((attrs || bind$$1) && !children) { + res += ",null"; + } + if (attrs) { + res += "," + attrs; + } + if (bind$$1) { + res += (attrs ? '' : ',null') + "," + bind$$1; + } + return res + ')' + } + + // componentName is el.component, take it as argument to shun flow's pessimistic refinement + function genComponent ( + componentName, + el, + state + ) { + var children = el.inlineTemplate ? null : genChildren(el, state, true); + return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")") + } + + function genProps (props) { + var staticProps = ""; + var dynamicProps = ""; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + var value = transformSpecialNewlines(prop.value); + if (prop.dynamic) { + dynamicProps += (prop.name) + "," + value + ","; + } else { + staticProps += "\"" + (prop.name) + "\":" + value + ","; + } + } + staticProps = "{" + (staticProps.slice(0, -1)) + "}"; + if (dynamicProps) { + return ("_d(" + staticProps + ",[" + (dynamicProps.slice(0, -1)) + "])") + } else { + return staticProps + } + } + + // #3895, #4268 + function transformSpecialNewlines (text) { + return text + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029') + } + + /* */ + + + + // these keywords should not appear inside expressions, but operators like + // typeof, instanceof and in are allowed + var prohibitedKeywordRE = new RegExp('\\b' + ( + 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + + 'super,throw,while,yield,delete,export,import,return,switch,default,' + + 'extends,finally,continue,debugger,function,arguments' + ).split(',').join('\\b|\\b') + '\\b'); + + // these unary operators should not be used as property/method names + var unaryOperatorsRE = new RegExp('\\b' + ( + 'delete,typeof,void' + ).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)'); + + // strip strings in expressions + var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; + + // detect problematic expressions in a template + function detectErrors (ast, warn) { + if (ast) { + checkNode(ast, warn); + } + } + + function checkNode (node, warn) { + if (node.type === 1) { + for (var name in node.attrsMap) { + if (dirRE.test(name)) { + var value = node.attrsMap[name]; + if (value) { + var range = node.rawAttrsMap[name]; + if (name === 'v-for') { + checkFor(node, ("v-for=\"" + value + "\""), warn, range); + } else if (name === 'v-slot' || name[0] === '#') { + checkFunctionParameterExpression(value, (name + "=\"" + value + "\""), warn, range); + } else if (onRE.test(name)) { + checkEvent(value, (name + "=\"" + value + "\""), warn, range); + } else { + checkExpression(value, (name + "=\"" + value + "\""), warn, range); + } + } + } + } + if (node.children) { + for (var i = 0; i < node.children.length; i++) { + checkNode(node.children[i], warn); + } + } + } else if (node.type === 2) { + checkExpression(node.expression, node.text, warn, node); + } + } + + function checkEvent (exp, text, warn, range) { + var stripped = exp.replace(stripStringRE, ''); + var keywordMatch = stripped.match(unaryOperatorsRE); + if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') { + warn( + "avoid using JavaScript unary operator as property name: " + + "\"" + (keywordMatch[0]) + "\" in expression " + (text.trim()), + range + ); + } + checkExpression(exp, text, warn, range); + } + + function checkFor (node, text, warn, range) { + checkExpression(node.for || '', text, warn, range); + checkIdentifier(node.alias, 'v-for alias', text, warn, range); + checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range); + checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range); + } + + function checkIdentifier ( + ident, + type, + text, + warn, + range + ) { + if (typeof ident === 'string') { + try { + new Function(("var " + ident + "=_")); + } catch (e) { + warn(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())), range); + } + } + } + + function checkExpression (exp, text, warn, range) { + try { + new Function(("return " + exp)); + } catch (e) { + var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE); + if (keywordMatch) { + warn( + "avoid using JavaScript keyword as property name: " + + "\"" + (keywordMatch[0]) + "\"\n Raw expression: " + (text.trim()), + range + ); + } else { + warn( + "invalid expression: " + (e.message) + " in\n\n" + + " " + exp + "\n\n" + + " Raw expression: " + (text.trim()) + "\n", + range + ); + } + } + } + + function checkFunctionParameterExpression (exp, text, warn, range) { + try { + new Function(exp, ''); + } catch (e) { + warn( + "invalid function parameter expression: " + (e.message) + " in\n\n" + + " " + exp + "\n\n" + + " Raw expression: " + (text.trim()) + "\n", + range + ); + } + } + + /* */ + + var range = 2; + + function generateCodeFrame ( + source, + start, + end + ) { + if ( start === void 0 ) start = 0; + if ( end === void 0 ) end = source.length; + + var lines = source.split(/\r?\n/); + var count = 0; + var res = []; + for (var i = 0; i < lines.length; i++) { + count += lines[i].length + 1; + if (count >= start) { + for (var j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) { continue } + res.push(("" + (j + 1) + (repeat$1(" ", 3 - String(j + 1).length)) + "| " + (lines[j]))); + var lineLength = lines[j].length; + if (j === i) { + // push underline + var pad = start - (count - lineLength) + 1; + var length = end > count ? lineLength - pad : end - start; + res.push(" | " + repeat$1(" ", pad) + repeat$1("^", length)); + } else if (j > i) { + if (end > count) { + var length$1 = Math.min(end - count, lineLength); + res.push(" | " + repeat$1("^", length$1)); + } + count += lineLength + 1; + } + } + break + } + } + return res.join('\n') + } + + function repeat$1 (str, n) { + var result = ''; + if (n > 0) { + while (true) { // eslint-disable-line + if (n & 1) { result += str; } + n >>>= 1; + if (n <= 0) { break } + str += str; + } + } + return result + } + + /* */ + + + + function createFunction (code, errors) { + try { + return new Function(code) + } catch (err) { + errors.push({ err: err, code: code }); + return noop + } + } + + function createCompileToFunctionFn (compile) { + var cache = Object.create(null); + + return function compileToFunctions ( + template, + options, + vm + ) { + options = extend({}, options); + var warn$$1 = options.warn || warn; + delete options.warn; + + /* istanbul ignore if */ + { + // detect possible CSP restriction + try { + new Function('return 1'); + } catch (e) { + if (e.toString().match(/unsafe-eval|CSP/)) { + warn$$1( + 'It seems you are using the standalone build of Vue.js in an ' + + 'environment with Content Security Policy that prohibits unsafe-eval. ' + + 'The template compiler cannot work in this environment. Consider ' + + 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + + 'templates into render functions.' + ); + } + } + } + + // check cache + var key = options.delimiters + ? String(options.delimiters) + template + : template; + if (cache[key]) { + return cache[key] + } + + // compile + var compiled = compile(template, options); + + // check compilation errors/tips + { + if (compiled.errors && compiled.errors.length) { + if (options.outputSourceRange) { + compiled.errors.forEach(function (e) { + warn$$1( + "Error compiling template:\n\n" + (e.msg) + "\n\n" + + generateCodeFrame(template, e.start, e.end), + vm + ); + }); + } else { + warn$$1( + "Error compiling template:\n\n" + template + "\n\n" + + compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n', + vm + ); + } + } + if (compiled.tips && compiled.tips.length) { + if (options.outputSourceRange) { + compiled.tips.forEach(function (e) { return tip(e.msg, vm); }); + } else { + compiled.tips.forEach(function (msg) { return tip(msg, vm); }); + } + } + } + + // turn code into functions + var res = {}; + var fnGenErrors = []; + res.render = createFunction(compiled.render, fnGenErrors); + res.staticRenderFns = compiled.staticRenderFns.map(function (code) { + return createFunction(code, fnGenErrors) + }); + + // check function generation errors. + // this should only happen if there is a bug in the compiler itself. + // mostly for codegen development use + /* istanbul ignore if */ + { + if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) { + warn$$1( + "Failed to generate render function:\n\n" + + fnGenErrors.map(function (ref) { + var err = ref.err; + var code = ref.code; + + return ((err.toString()) + " in\n\n" + code + "\n"); + }).join('\n'), + vm + ); + } + } + + return (cache[key] = res) + } + } + + /* */ + + function createCompilerCreator (baseCompile) { + return function createCompiler (baseOptions) { + function compile ( + template, + options + ) { + var finalOptions = Object.create(baseOptions); + var errors = []; + var tips = []; + + var warn = function (msg, range, tip) { + (tip ? tips : errors).push(msg); + }; + + if (options) { + if (options.outputSourceRange) { + // $flow-disable-line + var leadingSpaceLength = template.match(/^\s*/)[0].length; + + warn = function (msg, range, tip) { + var data = { msg: msg }; + if (range) { + if (range.start != null) { + data.start = range.start + leadingSpaceLength; + } + if (range.end != null) { + data.end = range.end + leadingSpaceLength; + } + } + (tip ? tips : errors).push(data); + }; + } + // merge custom modules + if (options.modules) { + finalOptions.modules = + (baseOptions.modules || []).concat(options.modules); + } + // merge custom directives + if (options.directives) { + finalOptions.directives = extend( + Object.create(baseOptions.directives || null), + options.directives + ); + } + // copy other options + for (var key in options) { + if (key !== 'modules' && key !== 'directives') { + finalOptions[key] = options[key]; + } + } + } + + finalOptions.warn = warn; + + var compiled = baseCompile(template.trim(), finalOptions); + { + detectErrors(compiled.ast, warn); + } + compiled.errors = errors; + compiled.tips = tips; + return compiled + } + + return { + compile: compile, + compileToFunctions: createCompileToFunctionFn(compile) + } + } + } + + /* */ + + // `createCompilerCreator` allows creating compilers that use alternative + // parser/optimizer/codegen, e.g the SSR optimizing compiler. + // Here we just export a default compiler using the default parts. + var createCompiler = createCompilerCreator(function baseCompile ( + template, + options + ) { + var ast = parse(template.trim(), options); + if (options.optimize !== false) { + optimize(ast, options); + } + var code = generate(ast, options); + return { + ast: ast, + render: code.render, + staticRenderFns: code.staticRenderFns + } + }); + + /* */ + + var ref$1 = createCompiler(baseOptions); + var compile = ref$1.compile; + var compileToFunctions = ref$1.compileToFunctions; + + /* */ + + // check whether current browser encodes a char inside attribute values + var div; + function getShouldDecode (href) { + div = div || document.createElement('div'); + div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>"; + return div.innerHTML.indexOf(' ') > 0 + } + + // #3663: IE encodes newlines inside attribute values while other browsers don't + var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false; + // #6828: chrome encodes content in a[href] + var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false; + + /* */ + + var idToTemplate = cached(function (id) { + var el = query(id); + return el && el.innerHTML + }); + + var mount = Vue.prototype.$mount; + Vue.prototype.$mount = function ( + el, + hydrating + ) { + el = el && query(el); + + /* istanbul ignore if */ + if (el === document.body || el === document.documentElement) { + warn( + "Do not mount Vue to <html> or <body> - mount to normal elements instead." + ); + return this + } + + var options = this.$options; + // resolve template/el and convert to render function + if (!options.render) { + var template = options.template; + if (template) { + if (typeof template === 'string') { + if (template.charAt(0) === '#') { + template = idToTemplate(template); + /* istanbul ignore if */ + if (!template) { + warn( + ("Template element not found or is empty: " + (options.template)), + this + ); + } + } + } else if (template.nodeType) { + template = template.innerHTML; + } else { + { + warn('invalid template option:' + template, this); + } + return this + } + } else if (el) { + template = getOuterHTML(el); + } + if (template) { + /* istanbul ignore if */ + if (config.performance && mark) { + mark('compile'); + } + + var ref = compileToFunctions(template, { + outputSourceRange: "development" !== 'production', + shouldDecodeNewlines: shouldDecodeNewlines, + shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref, + delimiters: options.delimiters, + comments: options.comments + }, this); + var render = ref.render; + var staticRenderFns = ref.staticRenderFns; + options.render = render; + options.staticRenderFns = staticRenderFns; + + /* istanbul ignore if */ + if (config.performance && mark) { + mark('compile end'); + measure(("vue " + (this._name) + " compile"), 'compile', 'compile end'); + } + } + } + return mount.call(this, el, hydrating) + }; + + /** + * Get outerHTML of elements, taking care + * of SVG elements in IE as well. + */ + function getOuterHTML (el) { + if (el.outerHTML) { + return el.outerHTML + } else { + var container = document.createElement('div'); + container.appendChild(el.cloneNode(true)); + return container.innerHTML + } + } + + Vue.compile = compileToFunctions; + + return Vue; + +})); diff --git a/js/vue@3.2.36.js b/js/vue@3.2.36.js new file mode 100644 index 0000000..faa2b30 --- /dev/null +++ b/js/vue@3.2.36.js @@ -0,0 +1,15929 @@ +var Vue = (function (exports) { + 'use strict'; + + /** + * Make a map and return a function for checking if a key + * is in that map. + * IMPORTANT: all calls of this function must be prefixed with + * \/\*#\_\_PURE\_\_\*\/ + * So that rollup can tree-shake them if necessary. + */ + function makeMap(str, expectsLowerCase) { + const map = Object.create(null); + const list = str.split(','); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; + } + + /** + * dev only flag -> name mapping + */ + const PatchFlagNames = { + [1 /* TEXT */]: `TEXT`, + [2 /* CLASS */]: `CLASS`, + [4 /* STYLE */]: `STYLE`, + [8 /* PROPS */]: `PROPS`, + [16 /* FULL_PROPS */]: `FULL_PROPS`, + [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`, + [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`, + [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`, + [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`, + [512 /* NEED_PATCH */]: `NEED_PATCH`, + [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`, + [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`, + [-1 /* HOISTED */]: `HOISTED`, + [-2 /* BAIL */]: `BAIL` + }; + + /** + * Dev only + */ + const slotFlagsText = { + [1 /* STABLE */]: 'STABLE', + [2 /* DYNAMIC */]: 'DYNAMIC', + [3 /* FORWARDED */]: 'FORWARDED' + }; + + const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' + + 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' + + 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt'; + const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED); + + const range = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + // Split the content into individual lines but capture the newline sequence + // that separated each line. This is important because the actual sequence is + // needed to properly take into account the full line length for offset + // comparison + let lines = source.split(/(\r?\n)/); + // Separate the lines and newline sequences into separate arrays for easier referencing + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += + lines[i].length + + ((newlineSequences[i] && newlineSequences[i].length) || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`); + const lineLength = lines[j].length; + const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0; + if (j === i) { + // push underline + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max(1, end > count ? lineLength - pad : end - start); + res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length)); + } + else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + '^'.repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join('\n'); + } + + /** + * On the client we only need to offer special cases for boolean attributes that + * have different names from their corresponding dom properties: + * - itemscope -> N/A + * - allowfullscreen -> allowFullscreen + * - formnovalidate -> formNoValidate + * - ismap -> isMap + * - nomodule -> noModule + * - novalidate -> noValidate + * - readonly -> readOnly + */ + const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; + const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs); + /** + * Boolean attributes should be included if the value is truthy or ''. + * e.g. `<select multiple>` compiles to `{ multiple: '' }` + */ + function includeBooleanAttr(value) { + return !!value || value === ''; + } + + function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) + ? parseStringStyle(item) + : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } + else if (isString(value)) { + return value; + } + else if (isObject(value)) { + return value; + } + } + const listDelimiterRE = /;(?![^(]*\))/g; + const propertyDelimiterRE = /:(.+)/; + function parseStringStyle(cssText) { + const ret = {}; + cssText.split(listDelimiterRE).forEach(item => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; + } + function normalizeClass(value) { + let res = ''; + if (isString(value)) { + res = value; + } + else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + ' '; + } + } + } + else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + ' '; + } + } + } + return res.trim(); + } + function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; + } + + // These tag configs are shared between compiler-dom and runtime-dom, so they + // https://developer.mozilla.org/en-US/docs/Web/HTML/Element + const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' + + 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' + + 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' + + 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' + + 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' + + 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' + + 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' + + 'option,output,progress,select,textarea,details,dialog,menu,' + + 'summary,template,blockquote,iframe,tfoot'; + // https://developer.mozilla.org/en-US/docs/Web/SVG/Element + const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' + + 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' + + 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' + + 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' + + 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' + + 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' + + 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' + + 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' + + 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' + + 'text,textPath,title,tspan,unknown,use,view'; + const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr'; + /** + * Compiler only. + * Do NOT use in runtime code paths unless behind `true` flag. + */ + const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS); + /** + * Compiler only. + * Do NOT use in runtime code paths unless behind `true` flag. + */ + const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS); + /** + * Compiler only. + * Do NOT use in runtime code paths unless behind `true` flag. + */ + const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS); + + function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; + } + function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + /* istanbul ignore if: this if will probably never be called */ + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if ((aHasKey && !bHasKey) || + (!aHasKey && bHasKey) || + !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); + } + function looseIndexOf(arr, val) { + return arr.findIndex(item => looseEqual(item, val)); + } + + /** + * For converting {{ interpolation }} values to displayed strings. + * @private + */ + const toDisplayString = (val) => { + return isString(val) + ? val + : val == null + ? '' + : isArray(val) || + (isObject(val) && + (val.toString === objectToString || !isFunction(val.toString))) + ? JSON.stringify(val, replacer, 2) + : String(val); + }; + const replacer = (_key, val) => { + // can't use isRef here since @vue/shared has no deps + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } + else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => { + entries[`${key} =>`] = val; + return entries; + }, {}) + }; + } + else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } + else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; + }; + + const EMPTY_OBJ = Object.freeze({}) + ; + const EMPTY_ARR = Object.freeze([]) ; + const NOOP = () => { }; + /** + * Always return false. + */ + const NO = () => false; + const onRE = /^on[^a-z]/; + const isOn = (key) => onRE.test(key); + const isModelListener = (key) => key.startsWith('onUpdate:'); + const extend = Object.assign; + const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } + }; + const hasOwnProperty = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty.call(val, key); + const isArray = Array.isArray; + const isMap = (val) => toTypeString(val) === '[object Map]'; + const isSet = (val) => toTypeString(val) === '[object Set]'; + const isDate = (val) => toTypeString(val) === '[object Date]'; + const isFunction = (val) => typeof val === 'function'; + const isString = (val) => typeof val === 'string'; + const isSymbol = (val) => typeof val === 'symbol'; + const isObject = (val) => val !== null && typeof val === 'object'; + const isPromise = (val) => { + return isObject(val) && isFunction(val.then) && isFunction(val.catch); + }; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const toRawType = (value) => { + // extract "RawType" from strings like "[object RawType]" + return toTypeString(value).slice(8, -1); + }; + const isPlainObject = (val) => toTypeString(val) === '[object Object]'; + const isIntegerKey = (key) => isString(key) && + key !== 'NaN' && + key[0] !== '-' && + '' + parseInt(key, 10) === key; + const isReservedProp = /*#__PURE__*/ makeMap( + // the leading comma is intentional so empty string "" is also included + ',key,ref,ref_for,ref_key,' + + 'onVnodeBeforeMount,onVnodeMounted,' + + 'onVnodeBeforeUpdate,onVnodeUpdated,' + + 'onVnodeBeforeUnmount,onVnodeUnmounted'); + const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo'); + const cacheStringFunction = (fn) => { + const cache = Object.create(null); + return ((str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }); + }; + const camelizeRE = /-(\w)/g; + /** + * @private + */ + const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); + }); + const hyphenateRE = /\B([A-Z])/g; + /** + * @private + */ + const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); + /** + * @private + */ + const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); + /** + * @private + */ + const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``); + // compare whether a value has changed, accounting for NaN. + const hasChanged = (value, oldValue) => !Object.is(value, oldValue); + const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } + }; + const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); + }; + const toNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; + }; + let _globalThis; + const getGlobalThis = () => { + return (_globalThis || + (_globalThis = + typeof globalThis !== 'undefined' + ? globalThis + : typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {})); + }; + + function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); + } + + let activeEffectScope; + class EffectScope { + constructor(detached = false) { + /** + * @internal + */ + this.active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + if (!detached && activeEffectScope) { + this.parent = activeEffectScope; + this.index = + (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; + } + } + run(fn) { + if (this.active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } + finally { + activeEffectScope = currentEffectScope; + } + } + else { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this.active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + // nested scope, dereference from parent to avoid memory leaks + if (this.parent && !fromParent) { + // optimized O(1) removal + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.active = false; + } + } + } + function effectScope(detached) { + return new EffectScope(detached); + } + function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } + } + function getCurrentScope() { + return activeEffectScope; + } + function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } + else { + warn(`onScopeDispose() is called when there is no active effect scope` + + ` to be associated with.`); + } + } + + const createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; + }; + const wasTracked = (dep) => (dep.w & trackOpBit) > 0; + const newTracked = (dep) => (dep.n & trackOpBit) > 0; + const initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; // set was tracked + } + } + }; + const finalizeDepMarkers = (effect) => { + const { deps } = effect; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } + else { + deps[ptr++] = dep; + } + // clear bits + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } + }; + + const targetMap = new WeakMap(); + // The number of effects currently being tracked recursively. + let effectTrackDepth = 0; + let trackOpBit = 1; + /** + * The bitwise track markers support at most 30 levels of recursion. + * This value is chosen to enable modern JS engines to use a SMI on all platforms. + * When recursion depth is greater, fall back to using a full cleanup. + */ + const maxMarkerBits = 30; + let activeEffect; + const ITERATE_KEY = Symbol('iterate' ); + const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' ); + class ReactiveEffect { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = undefined; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } + else { + cleanupEffect(this); + } + return this.fn(); + } + finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = undefined; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + // stopped while running itself - defer the cleanup + if (activeEffect === this) { + this.deferStop = true; + } + else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } + } + function cleanupEffect(effect) { + const { deps } = effect; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect); + } + deps.length = 0; + } + } + function effect(fn, options) { + if (fn.effect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; + } + function stop(runner) { + runner.effect.stop(); + } + let shouldTrack = true; + const trackStack = []; + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } + function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === undefined ? true : last; + } + function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, (depsMap = new Map())); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, (dep = createDep())); + } + const eventInfo = { effect: activeEffect, target, type, key } + ; + trackEffects(dep, eventInfo); + } + } + function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; // set newly tracked + shouldTrack = !wasTracked(dep); + } + } + else { + // Full cleanup mode. + shouldTrack = !dep.has(activeEffect); + } + if (shouldTrack) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + if (activeEffect.onTrack) { + activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo)); + } + } + } + function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + // never been tracked + return; + } + let deps = []; + if (type === "clear" /* CLEAR */) { + // collection being cleared + // trigger all effects for target + deps = [...depsMap.values()]; + } + else if (key === 'length' && isArray(target)) { + depsMap.forEach((dep, key) => { + if (key === 'length' || key >= newValue) { + deps.push(dep); + } + }); + } + else { + // schedule runs for SET | ADD | DELETE + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + // also run for iteration key on ADD | DELETE | Map.SET + switch (type) { + case "add" /* ADD */: + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + else if (isIntegerKey(key)) { + // new index added to array -> length changes + deps.push(depsMap.get('length')); + } + break; + case "delete" /* DELETE */: + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set" /* SET */: + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + const eventInfo = { target, type, key, newValue, oldValue, oldTarget } + ; + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0], eventInfo); + } + } + } + else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + { + triggerEffects(createDep(effects), eventInfo); + } + } + } + function triggerEffects(dep, debuggerEventExtraInfo) { + // spread into array for stabilization + const effects = isArray(dep) ? dep : [...dep]; + for (const effect of effects) { + if (effect.computed) { + triggerEffect(effect, debuggerEventExtraInfo); + } + } + for (const effect of effects) { + if (!effect.computed) { + triggerEffect(effect, debuggerEventExtraInfo); + } + } + } + function triggerEffect(effect, debuggerEventExtraInfo) { + if (effect !== activeEffect || effect.allowRecurse) { + if (effect.onTrigger) { + effect.onTrigger(extend({ effect }, debuggerEventExtraInfo)); + } + if (effect.scheduler) { + effect.scheduler(); + } + else { + effect.run(); + } + } + } + + const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`); + const builtInSymbols = new Set( + /*#__PURE__*/ + Object.getOwnPropertyNames(Symbol) + // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller' + // but accessing them on Symbol leads to TypeError because Symbol is a strict mode + // function + .filter(key => key !== 'arguments' && key !== 'caller') + .map(key => Symbol[key]) + .filter(isSymbol)); + const get = /*#__PURE__*/ createGetter(); + const shallowGet = /*#__PURE__*/ createGetter(false, true); + const readonlyGet = /*#__PURE__*/ createGetter(true); + const shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true); + const arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations(); + function createArrayInstrumentations() { + const instrumentations = {}; + ['includes', 'indexOf', 'lastIndexOf'].forEach(key => { + instrumentations[key] = function (...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get" /* GET */, i + ''); + } + // we run the method using the original args first (which may be reactive) + const res = arr[key](...args); + if (res === -1 || res === false) { + // if that didn't work, run it again using raw values. + return arr[key](...args.map(toRaw)); + } + else { + return res; + } + }; + }); + ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => { + instrumentations[key] = function (...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; + } + function createGetter(isReadonly = false, shallow = false) { + return function get(target, key, receiver) { + if (key === "__v_isReactive" /* IS_REACTIVE */) { + return !isReadonly; + } + else if (key === "__v_isReadonly" /* IS_READONLY */) { + return isReadonly; + } + else if (key === "__v_isShallow" /* IS_SHALLOW */) { + return shallow; + } + else if (key === "__v_raw" /* RAW */ && + receiver === + (isReadonly + ? shallow + ? shallowReadonlyMap + : readonlyMap + : shallow + ? shallowReactiveMap + : reactiveMap).get(target)) { + return target; + } + const targetIsArray = isArray(target); + if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly) { + track(target, "get" /* GET */, key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + // ref unwrapping - skip unwrap for Array + integer key. + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + // Convert returned value into a proxy as well. we do the isObject check + // here to avoid invalid value warning. Also need to lazy access readonly + // and reactive here to avoid circular dependency. + return isReadonly ? readonly(res) : reactive(res); + } + return res; + }; + } + const set = /*#__PURE__*/ createSetter(); + const shallowSet = /*#__PURE__*/ createSetter(true); + function createSetter(shallow = false) { + return function set(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!shallow && !isReadonly(value)) { + if (!isShallow(value)) { + value = toRaw(value); + oldValue = toRaw(oldValue); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = isArray(target) && isIntegerKey(key) + ? Number(key) < target.length + : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + // don't trigger if target is something up in the prototype chain of original + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add" /* ADD */, key, value); + } + else if (hasChanged(value, oldValue)) { + trigger(target, "set" /* SET */, key, value, oldValue); + } + } + return result; + }; + } + function deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete" /* DELETE */, key, undefined, oldValue); + } + return result; + } + function has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has" /* HAS */, key); + } + return result; + } + function ownKeys(target) { + track(target, "iterate" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY); + return Reflect.ownKeys(target); + } + const mutableHandlers = { + get, + set, + deleteProperty, + has, + ownKeys + }; + const readonlyHandlers = { + get: readonlyGet, + set(target, key) { + { + warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target); + } + return true; + }, + deleteProperty(target, key) { + { + warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); + } + return true; + } + }; + const shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, { + get: shallowGet, + set: shallowSet + }); + // Props handlers are special in the sense that it should not unwrap top-level + // refs (in order to allow refs to be explicitly passed down), but should + // retain the reactivity of the normal readonly object. + const shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, { + get: shallowReadonlyGet + }); + + const toShallow = (value) => value; + const getProto = (v) => Reflect.getPrototypeOf(v); + function get$1(target, key, isReadonly = false, isShallow = false) { + // #1772: readonly(reactive(Map)) should return readonly + reactive version + // of the value + target = target["__v_raw" /* RAW */]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (key !== rawKey) { + track(rawTarget, "get" /* GET */, key); + } + track(rawTarget, "get" /* GET */, rawKey); + } + const { has } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } + else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } + else if (target !== rawTarget) { + // #3602 readonly(reactive(Map)) + // ensure that the nested reactive `Map` can do tracking for itself + target.get(key); + } + } + function has$1(key, isReadonly = false) { + const target = this["__v_raw" /* RAW */]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (key !== rawKey) { + track(rawTarget, "has" /* HAS */, key); + } + track(rawTarget, "has" /* HAS */, rawKey); + } + return key === rawKey + ? target.has(key) + : target.has(key) || target.has(rawKey); + } + function size(target, isReadonly = false) { + target = target["__v_raw" /* RAW */]; + !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY); + return Reflect.get(target, 'size', target); + } + function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add" /* ADD */, value, value); + } + return this; + } + function set$1(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add" /* ADD */, key, value); + } + else if (hasChanged(value, oldValue)) { + trigger(target, "set" /* SET */, key, value, oldValue); + } + return this; + } + function deleteEntry(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : undefined; + // forward the operation before queueing reactions + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete" /* DELETE */, key, undefined, oldValue); + } + return result; + } + function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) + ? new Map(target) + : new Set(target) + ; + // forward the operation before queueing reactions + const result = target.clear(); + if (hadItems) { + trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget); + } + return result; + } + function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw" /* RAW */]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY); + return target.forEach((value, key) => { + // important: make sure the callback is + // 1. invoked with the reactive map as `this` and 3rd arg + // 2. the value received should be a corresponding reactive/readonly. + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; + } + function createIterableMethod(method, isReadonly, isShallow) { + return function (...args) { + const target = this["__v_raw" /* RAW */]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap); + const isKeyOnly = method === 'keys' && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && + track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); + // return a wrapped iterator which returns observed versions of the + // values emitted from the real iterator + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done + ? { value, done } + : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; + } + function createReadonlyMethod(type) { + return function (...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this)); + } + return type === "delete" /* DELETE */ ? false : this; + }; + } + function createInstrumentations() { + const mutableInstrumentations = { + get(key) { + return get$1(this, key); + }, + get size() { + return size(this); + }, + has: has$1, + add, + set: set$1, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations = { + get(key) { + return get$1(this, key, false, true); + }, + get size() { + return size(this); + }, + has: has$1, + add, + set: set$1, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations = { + get(key) { + return get$1(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has$1.call(this, key, true); + }, + add: createReadonlyMethod("add" /* ADD */), + set: createReadonlyMethod("set" /* SET */), + delete: createReadonlyMethod("delete" /* DELETE */), + clear: createReadonlyMethod("clear" /* CLEAR */), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations = { + get(key) { + return get$1(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has$1.call(this, key, true); + }, + add: createReadonlyMethod("add" /* ADD */), + set: createReadonlyMethod("set" /* SET */), + delete: createReadonlyMethod("delete" /* DELETE */), + clear: createReadonlyMethod("clear" /* CLEAR */), + forEach: createForEach(true, true) + }; + const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator]; + iteratorMethods.forEach(method => { + mutableInstrumentations[method] = createIterableMethod(method, false, false); + readonlyInstrumentations[method] = createIterableMethod(method, true, false); + shallowInstrumentations[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); + }); + return [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations + ]; + } + const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations(); + function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow + ? isReadonly + ? shallowReadonlyInstrumentations + : shallowInstrumentations + : isReadonly + ? readonlyInstrumentations + : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive" /* IS_REACTIVE */) { + return !isReadonly; + } + else if (key === "__v_isReadonly" /* IS_READONLY */) { + return isReadonly; + } + else if (key === "__v_raw" /* RAW */) { + return target; + } + return Reflect.get(hasOwn(instrumentations, key) && key in target + ? instrumentations + : target, key, receiver); + }; + } + const mutableCollectionHandlers = { + get: /*#__PURE__*/ createInstrumentationGetter(false, false) + }; + const shallowCollectionHandlers = { + get: /*#__PURE__*/ createInstrumentationGetter(false, true) + }; + const readonlyCollectionHandlers = { + get: /*#__PURE__*/ createInstrumentationGetter(true, false) + }; + const shallowReadonlyCollectionHandlers = { + get: /*#__PURE__*/ createInstrumentationGetter(true, true) + }; + function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + console.warn(`Reactive ${type} contains both the raw and reactive ` + + `versions of the same object${type === `Map` ? ` as keys` : ``}, ` + + `which can lead to inconsistencies. ` + + `Avoid differentiating between the raw and reactive versions ` + + `of an object and only use the reactive version if possible.`); + } + } + + const reactiveMap = new WeakMap(); + const shallowReactiveMap = new WeakMap(); + const readonlyMap = new WeakMap(); + const shallowReadonlyMap = new WeakMap(); + function targetTypeMap(rawType) { + switch (rawType) { + case 'Object': + case 'Array': + return 1 /* COMMON */; + case 'Map': + case 'Set': + case 'WeakMap': + case 'WeakSet': + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } + } + function getTargetType(value) { + return value["__v_skip" /* SKIP */] || !Object.isExtensible(value) + ? 0 /* INVALID */ + : targetTypeMap(toRawType(value)); + } + function reactive(target) { + // if trying to observe a readonly proxy, return the readonly version. + if (isReadonly(target)) { + return target; + } + return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); + } + /** + * Return a shallowly-reactive copy of the original object, where only the root + * level properties are reactive. It also does not auto-unwrap refs (even at the + * root level). + */ + function shallowReactive(target) { + return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); + } + /** + * Creates a readonly copy of the original object. Note the returned copy is not + * made reactive, but `readonly` can be called on an already reactive object. + */ + function readonly(target) { + return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); + } + /** + * Returns a reactive-copy of the original object, where only the root level + * properties are readonly, and does NOT unwrap refs nor recursively convert + * returned properties. + * This is used for creating the props proxy object for stateful components. + */ + function shallowReadonly(target) { + return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap); + } + function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + // target is already a Proxy, return it. + // exception: calling readonly() on a reactive object + if (target["__v_raw" /* RAW */] && + !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) { + return target; + } + // target already has corresponding Proxy + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + // only specific value types can be observed. + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers); + proxyMap.set(target, proxy); + return proxy; + } + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw" /* RAW */]); + } + return !!(value && value["__v_isReactive" /* IS_REACTIVE */]); + } + function isReadonly(value) { + return !!(value && value["__v_isReadonly" /* IS_READONLY */]); + } + function isShallow(value) { + return !!(value && value["__v_isShallow" /* IS_SHALLOW */]); + } + function isProxy(value) { + return isReactive(value) || isReadonly(value); + } + function toRaw(observed) { + const raw = observed && observed["__v_raw" /* RAW */]; + return raw ? toRaw(raw) : observed; + } + function markRaw(value) { + def(value, "__v_skip" /* SKIP */, true); + return value; + } + const toReactive = (value) => isObject(value) ? reactive(value) : value; + const toReadonly = (value) => isObject(value) ? readonly(value) : value; + + function trackRefValue(ref) { + if (shouldTrack && activeEffect) { + ref = toRaw(ref); + { + trackEffects(ref.dep || (ref.dep = createDep()), { + target: ref, + type: "get" /* GET */, + key: 'value' + }); + } + } + } + function triggerRefValue(ref, newVal) { + ref = toRaw(ref); + if (ref.dep) { + { + triggerEffects(ref.dep, { + target: ref, + type: "set" /* SET */, + key: 'value', + newValue: newVal + }); + } + } + } + function isRef(r) { + return !!(r && r.__v_isRef === true); + } + function ref(value) { + return createRef(value, false); + } + function shallowRef(value) { + return createRef(value, true); + } + function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); + } + class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = undefined; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + newVal = this.__v_isShallow ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = this.__v_isShallow ? newVal : toReactive(newVal); + triggerRefValue(this, newVal); + } + } + } + function triggerRef(ref) { + triggerRefValue(ref, ref.value ); + } + function unref(ref) { + return isRef(ref) ? ref.value : ref; + } + const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + else { + return Reflect.set(target, key, value, receiver); + } + } + }; + function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) + ? objectWithRefs + : new Proxy(objectWithRefs, shallowUnwrapHandlers); + } + class CustomRefImpl { + constructor(factory) { + this.dep = undefined; + this.__v_isRef = true; + const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this)); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } + } + function customRef(factory) { + return new CustomRefImpl(factory); + } + function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = toRef(object, key); + } + return ret; + } + class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === undefined ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + } + function toRef(object, key, defaultValue) { + const val = object[key]; + return isRef(val) + ? val + : new ObjectRefImpl(object, key, defaultValue); + } + + class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this._setter = _setter; + this.dep = undefined; + this.__v_isRef = true; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly" /* IS_READONLY */] = isReadonly; + } + get value() { + // the computed ref may get wrapped by other proxies e.g. readonly() #3376 + const self = toRaw(this); + trackRefValue(self); + if (self._dirty || !self._cacheable) { + self._dirty = false; + self._value = self.effect.run(); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + } + function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + console.warn('Write operation failed: computed value is readonly'); + } + ; + } + else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; + } + + const stack = []; + function pushWarningContext(vnode) { + stack.push(vnode); + } + function popWarningContext() { + stack.pop(); + } + function warn$1(msg, ...args) { + // avoid props formatting or warn handler tracking deps that might be mutated + // during patch, leading to infinite recursion. + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [ + msg + args.join(''), + instance && instance.proxy, + trace + .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`) + .join('\n'), + trace + ]); + } + else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + /* istanbul ignore if */ + if (trace.length && + // avoid spamming console during tests + !false) { + warnArgs.push(`\n`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + } + function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + // we can't just use the stack because it will be incomplete during updates + // that did not start from the root. Re-construct the parent chain using + // instance parent pointers. + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } + else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; + } + /* istanbul ignore next */ + function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...(i === 0 ? [] : [`\n`]), ...formatTraceEntry(entry)); + }); + return logs; + } + function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`; + const close = `>` + postfix; + return vnode.props + ? [open, ...formatProps(vnode.props), close] + : [open + close]; + } + /* istanbul ignore next */ + function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach(key => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; + } + /* istanbul ignore next */ + function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } + else if (typeof value === 'number' || + typeof value === 'boolean' || + value == null) { + return raw ? value : [`${key}=${value}`]; + } + else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } + else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } + else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } + } + + const ErrorTypeStrings = { + ["sp" /* SERVER_PREFETCH */]: 'serverPrefetch hook', + ["bc" /* BEFORE_CREATE */]: 'beforeCreate hook', + ["c" /* CREATED */]: 'created hook', + ["bm" /* BEFORE_MOUNT */]: 'beforeMount hook', + ["m" /* MOUNTED */]: 'mounted hook', + ["bu" /* BEFORE_UPDATE */]: 'beforeUpdate hook', + ["u" /* UPDATED */]: 'updated', + ["bum" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook', + ["um" /* UNMOUNTED */]: 'unmounted hook', + ["a" /* ACTIVATED */]: 'activated hook', + ["da" /* DEACTIVATED */]: 'deactivated hook', + ["ec" /* ERROR_CAPTURED */]: 'errorCaptured hook', + ["rtc" /* RENDER_TRACKED */]: 'renderTracked hook', + ["rtg" /* RENDER_TRIGGERED */]: 'renderTriggered hook', + [0 /* SETUP_FUNCTION */]: 'setup function', + [1 /* RENDER_FUNCTION */]: 'render function', + [2 /* WATCH_GETTER */]: 'watcher getter', + [3 /* WATCH_CALLBACK */]: 'watcher callback', + [4 /* WATCH_CLEANUP */]: 'watcher cleanup function', + [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler', + [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler', + [7 /* VNODE_HOOK */]: 'vnode hook', + [8 /* DIRECTIVE_HOOK */]: 'directive hook', + [9 /* TRANSITION_HOOK */]: 'transition hook', + [10 /* APP_ERROR_HANDLER */]: 'app errorHandler', + [11 /* APP_WARN_HANDLER */]: 'app warnHandler', + [12 /* FUNCTION_REF */]: 'ref function', + [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader', + [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' + + 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core' + }; + function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } + catch (err) { + handleError(err, instance, type); + } + return res; + } + function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch(err => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } + function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + // the exposed instance is the render proxy to keep it consistent with 2.x + const exposedInstance = instance.proxy; + // in production the hook receives only the error code + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + // app-level handling + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]); + return; + } + } + logError(err, type, contextVNode, throwInDev); + } + function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + // crash in dev by default so it's more noticeable + if (throwInDev) { + throw err; + } + else { + console.error(err); + } + } + } + + let isFlushing = false; + let isFlushPending = false; + const queue = []; + let flushIndex = 0; + const pendingPreFlushCbs = []; + let activePreFlushCbs = null; + let preFlushIndex = 0; + const pendingPostFlushCbs = []; + let activePostFlushCbs = null; + let postFlushIndex = 0; + const resolvedPromise = /*#__PURE__*/ Promise.resolve(); + let currentFlushPromise = null; + let currentPreFlushParentJob = null; + const RECURSION_LIMIT = 100; + function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; + } + // #2768 + // Use binary-search to find a suitable position in the queue, + // so that the queue maintains the increasing order of job's id, + // which can prevent the job from being skipped and also can avoid repeated patching. + function findInsertionIndex(id) { + // the start index should be `flushIndex + 1` + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = (start + end) >>> 1; + const middleJobId = getId(queue[middle]); + middleJobId < id ? (start = middle + 1) : (end = middle); + } + return start; + } + function queueJob(job) { + // the dedupe search uses the startIndex argument of Array.includes() + // by default the search index includes the current job that is being run + // so it cannot recursively trigger itself again. + // if the job is a watch() callback, the search will start with a +1 index to + // allow it recursively trigger itself - it is the user's responsibility to + // ensure it doesn't end up in an infinite loop. + if ((!queue.length || + !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && + job !== currentPreFlushParentJob) { + if (job.id == null) { + queue.push(job); + } + else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } + } + function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } + } + function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } + } + function queueCb(cb, activeQueue, pendingQueue, index) { + if (!isArray(cb)) { + if (!activeQueue || + !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) { + pendingQueue.push(cb); + } + } + else { + // if cb is an array, it is a component lifecycle hook which can only be + // triggered by a job, which is already deduped in the main queue, so + // we can skip duplicate check here to improve perf + pendingQueue.push(...cb); + } + queueFlush(); + } + function queuePreFlushCb(cb) { + queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex); + } + function queuePostFlushCb(cb) { + queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex); + } + function flushPreFlushCbs(seen, parentJob = null) { + if (pendingPreFlushCbs.length) { + currentPreFlushParentJob = parentJob; + activePreFlushCbs = [...new Set(pendingPreFlushCbs)]; + pendingPreFlushCbs.length = 0; + { + seen = seen || new Map(); + } + for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) { + if (checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) { + continue; + } + activePreFlushCbs[preFlushIndex](); + } + activePreFlushCbs = null; + preFlushIndex = 0; + currentPreFlushParentJob = null; + // recursively flush until it drains + flushPreFlushCbs(seen, parentJob); + } + } + function flushPostFlushCbs(seen) { + // flush any pre cbs queued during the flush (e.g. pre watchers) + flushPreFlushCbs(); + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + // #1947 already has active queue, nested flushPostFlushCbs call + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || new Map(); + } + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } + } + const getId = (job) => job.id == null ? Infinity : job.id; + function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || new Map(); + } + flushPreFlushCbs(seen); + // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child so its render effect will have smaller + // priority number) + // 2. If a component is unmounted during a parent component's update, + // its update can be skipped. + queue.sort((a, b) => getId(a) - getId(b)); + // conditional usage of checkRecursiveUpdate must be determined out of + // try ... catch block since Rollup by default de-optimizes treeshaking + // inside try-catch. This can leave all warning code unshaked. Although + // they would get eventually shaken by a minifier like terser, some minifiers + // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610) + const check = (job) => checkRecursiveUpdates(seen, job) + ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (true && check(job)) { + continue; + } + // console.log(`running:`, job.id) + callWithErrorHandling(job, null, 14 /* SCHEDULER */); + } + } + } + finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + // some postFlushCb queued jobs! + // keep flushing until it drains. + if (queue.length || + pendingPreFlushCbs.length || + pendingPostFlushCbs.length) { + flushJobs(seen); + } + } + } + function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } + else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + warn$1(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` + + `This means you have a reactive effect that is mutating its own ` + + `dependencies and thus recursively triggering itself. Possible sources ` + + `include component template, render function, updated hook or ` + + `watcher source function.`); + return true; + } + else { + seen.set(fn, count + 1); + } + } + } + + /* eslint-disable no-restricted-globals */ + let isHmrUpdating = false; + const hmrDirtyComponents = new Set(); + // Expose the HMR runtime on the global object + // This makes it entirely tree-shakable without polluting the exports and makes + // it easier to be used in toolings like vue-loader + // Note: for a component to be eligible for HMR it also needs the __hmrId option + // to be set so that its instances can be registered / removed. + { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; + } + const map = new Map(); + function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); + } + function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); + } + function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: new Set() + }); + return true; + } + function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; + } + function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + // update initial record (for not-yet-rendered component) + record.initialDef.render = newRender; + [...record.instances].forEach(instance => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + // this flag forces child components with slot content to update + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); + } + function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + // update initial def (for not-yet-rendered components) + updateComponentDef(record.initialDef, newComp); + // create a snapshot which avoids the set being mutated during updates + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + // 1. Update existing comp definition to match new one + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + // 2. mark definition dirty. This forces the renderer to replace the + // component on patch. + hmrDirtyComponents.add(oldComp); + } + // 3. invalidate options resolution cache + instance.appContext.optionsCache.delete(instance.type); + // 4. actually update + if (instance.ceReload) { + // custom element + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } + else if (instance.parent) { + // 4. Force the parent instance to re-render. This will cause all updated + // components to be unmounted and re-mounted. Queue the update so that we + // don't end up forcing the same parent to re-render multiple times. + queueJob(instance.parent.update); + // instance is the inner component of an async custom element + // invoke to reset styles + if (instance.parent.type.__asyncLoader && + instance.parent.ceReload) { + instance.parent.ceReload(newComp.styles); + } + } + else if (instance.appContext.reload) { + // root instance mounted via createApp() has a reload method + instance.appContext.reload(); + } + else if (typeof window !== 'undefined') { + // root instance inside tree created via raw render(). Force reload. + window.location.reload(); + } + else { + console.warn('[HMR] Root or manually mounted instance modified. Full reload required.'); + } + } + // 5. make sure to cleanup dirty hmr components after update + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete(normalizeClassComponent(instance.type)); + } + }); + } + function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== '__file' && !(key in newComp)) { + delete oldComp[key]; + } + } + } + function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } + catch (e) { + console.error(e); + console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` + + `Full reload required.`); + } + }; + } + + let buffer = []; + let devtoolsNotInstalled = false; + function emit(event, ...args) { + if (exports.devtools) { + exports.devtools.emit(event, ...args); + } + else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } + } + function setDevtoolsHook(hook, target) { + var _a, _b; + exports.devtools = hook; + if (exports.devtools) { + exports.devtools.enabled = true; + buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); + buffer = []; + } + else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== 'undefined' && + // some envs mock window but not fully + window.HTMLElement && + // also exclude jsdom + !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) { + const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ = + target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []); + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + // clear buffer after 3s - the user probably doesn't have devtools installed + // at all, and keeping the buffer will cause memory leaks (#4738) + setTimeout(() => { + if (!exports.devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3000); + } + else { + // non-browser env, assume not installed + devtoolsNotInstalled = true; + buffer = []; + } + } + function devtoolsInitApp(app, version) { + emit("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); + } + function devtoolsUnmountApp(app) { + emit("app:unmount" /* APP_UNMOUNT */, app); + } + const devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); + const devtoolsComponentUpdated = + /*#__PURE__*/ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); + const devtoolsComponentRemoved = + /*#__PURE__*/ createDevtoolsComponentHook("component:removed" /* COMPONENT_REMOVED */); + function createDevtoolsComponentHook(hook) { + return (component) => { + emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component); + }; + } + const devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); + const devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); + function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit(hook, component.appContext.app, component.uid, component, type, time); + }; + } + function devtoolsComponentEmit(component, event, params) { + emit("component:emit" /* COMPONENT_EMIT */, component.appContext.app, component, event, params); + } + + function emit$1(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { emitsOptions, propsOptions: [propsOptions] } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && + !(false )) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1(`Component emitted event "${event}" but it is neither declared in ` + + `the emits option nor as an "${toHandlerKey(event)}" prop.`); + } + } + else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1(`Invalid event arguments: event validation failed for event "${event}".`); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith('update:'); + // for v-model update:xxx events, apply modifiers on args + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map(a => a.trim()); + } + if (number) { + args = rawArgs.map(toNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1(`Event "${lowerCaseEvent}" is emitted in component ` + + `${formatComponentName(instance, instance.type)} but the handler is registered for "${event}". ` + + `Note that HTML attributes are case-insensitive and you cannot use ` + + `v-on to listen to camelCase events when using in-DOM templates. ` + + `You should probably use "${hyphenate(event)}" instead of "${event}".`); + } + } + let handlerName; + let handler = props[(handlerName = toHandlerKey(event))] || + // also try camelCase event handler (#2249) + props[(handlerName = toHandlerKey(camelize(event)))]; + // for v-model update:xxx events, also trigger kebab-case equivalent + // for props passed via kebab-case + if (!handler && isModelListener) { + handler = props[(handlerName = toHandlerKey(hyphenate(event)))]; + } + if (handler) { + callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } + else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args); + } + } + function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== undefined) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + // apply mixin/extends props + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw) => { + const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + cache.set(comp, null); + return null; + } + if (isArray(raw)) { + raw.forEach(key => (normalized[key] = null)); + } + else { + extend(normalized, raw); + } + cache.set(comp, normalized); + return normalized; + } + // Check if an incoming prop key is a declared emit event listener. + // e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are + // both considered matched listeners. + function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ''); + return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) || + hasOwn(options, hyphenate(key)) || + hasOwn(options, key)); + } + + /** + * mark the current rendering instance for asset resolution (e.g. + * resolveComponent, resolveDirective) during render + */ + let currentRenderingInstance = null; + let currentScopeId = null; + /** + * Note: rendering calls maybe nested. The function returns the parent rendering + * instance if present, which should be restored after the render is done: + * + * ```js + * const prev = setCurrentRenderingInstance(i) + * // ...render + * setCurrentRenderingInstance(prev) + * ``` + */ + function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = (instance && instance.type.__scopeId) || null; + return prev; + } + /** + * Set scope id when creating hoisted vnodes. + * @private compiler helper + */ + function pushScopeId(id) { + currentScopeId = id; + } + /** + * Technically we no longer need this after 3.0.8 but we need to keep the same + * API for backwards compat w/ code generated by compilers. + * @private + */ + function popScopeId() { + currentScopeId = null; + } + /** + * Only for backwards compat + * @private + */ + const withScopeId = (_id) => withCtx; + /** + * Wrap a slot function to memoize current rendering instance + * @private compiler helper + */ + function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only + ) { + if (!ctx) + return fn; + // already normalized + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + // If a user calls a compiled slot inside a template expression (#1745), it + // can mess up block tracking, so by default we disable block tracking and + // force bail out when invoking a compiled slot (indicated by the ._d flag). + // This isn't necessary if rendering a compiled `<slot>`, so we flip the + // ._d flag off when invoking the wrapped fn inside `renderSlot`. + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + const res = fn(...args); + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + // mark normalized to avoid duplicated wrapping + renderFnWithContext._n = true; + // mark this as compiled by default + // this is used in vnode.ts -> normalizeChildren() to set the slot + // rendering flag. + renderFnWithContext._c = true; + // disable block tracking by default + renderFnWithContext._d = true; + return renderFnWithContext; + } + + /** + * dev only flag to track whether $attrs was used during render. + * If $attrs was used during render then the warning for failed attrs + * fallthrough can be suppressed. + */ + let accessedAttrs = false; + function markAttrsAccessed() { + accessedAttrs = true; + } + function renderComponentRoot(instance) { + const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) { + // withProxy is a proxy with a different `has` trap only for + // runtime-compiled render functions using `with` block. + const proxyToUse = withProxy || proxy; + result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx)); + fallthroughAttrs = attrs; + } + else { + // functional + const render = Component; + // in dev, mark attrs accessed if optional props (attrs === props) + if (true && attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode(render.length > 1 + ? render(props, true + ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit + } + : { attrs, slots, emit }) + : render(props, null /* we know it doesn't need it */)); + fallthroughAttrs = Component.props + ? attrs + : getFunctionalFallthrough(attrs); + } + } + catch (err) { + blockStack.length = 0; + handleError(err, instance, 1 /* RENDER_FUNCTION */); + result = createVNode(Comment); + } + // attr merging + // in dev mode, comments are preserved, and it's possible for a template + // to have comments along side the root element which makes it a fragment + let root = result; + let setRoot = undefined; + if (result.patchFlag > 0 && + result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) { + if (propsOptions && keys.some(isModelListener)) { + // If a v-model listener (onUpdate:xxx) has a corresponding declared + // prop, it indicates this component expects to handle v-model and + // it should not fallthrough. + // related: #1543, #1643, #1989 + fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions); + } + root = cloneVNode(root, fallthroughAttrs); + } + else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + // ignore v-model handlers when they fail to fallthrough + if (!isModelListener(key)) { + // remove `on`, lowercase first letter to reflect event casing + // accurately + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } + else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1(`Extraneous non-props attributes (` + + `${extraAttrs.join(', ')}) ` + + `were passed to component but could not be automatically inherited ` + + `because component renders fragment or text root nodes.`); + } + if (eventAttrs.length) { + warn$1(`Extraneous non-emits event listeners (` + + `${eventAttrs.join(', ')}) ` + + `were passed to component but could not be automatically inherited ` + + `because component renders fragment or text root nodes. ` + + `If the listener is intended to be a component custom event listener only, ` + + `declare it using the "emits" option.`); + } + } + } + } + // inherit directives + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1(`Runtime directive used on component with non-element root node. ` + + `The directives will not function as intended.`); + } + // clone before mutating since the root may be a hoisted vnode + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + // inherit transition data + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1(`Component inside <Transition> renders non-element root node ` + + `that cannot be animated.`); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } + else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; + } + /** + * dev only + * In dev mode, template root level comments are rendered, which turns the + * template into a fragment root, but we need to locate the single element + * root for attrs and scope id processing. + */ + const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, undefined]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } + else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; + }; + function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + // ignore user comment + if (child.type !== Comment || child.children === 'v-if') { + if (singleRoot) { + // has more than 1 non-comment child, return now + return; + } + else { + singleRoot = child; + } + } + } + else { + return; + } + } + return singleRoot; + } + const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === 'class' || key === 'style' || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; + }; + const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; + }; + const isElementRoot = (vnode) => { + return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) || + vnode.type === Comment // potential v-if branch switch + ); + }; + function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + // Parent component's render function was hot-updated. Since this may have + // caused the child component's slots content to have changed, we need to + // force the child to update as well. + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + // force child update for runtime directive or transition on component vnode. + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024 /* DYNAMIC_SLOTS */) { + // slot content that references values that might have changed, + // e.g. in a v-for + return true; + } + if (patchFlag & 16 /* FULL_PROPS */) { + if (!prevProps) { + return !!nextProps; + } + // presence of this flag indicates props are always non-null + return hasPropsChanged(prevProps, nextProps, emits); + } + else if (patchFlag & 8 /* PROPS */) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && + !isEmitListener(emits, key)) { + return true; + } + } + } + } + else { + // this path is only taken by manually written render functions + // so presence of any children leads to a forced update + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; + } + function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && + !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; + } + function updateHOCHostEl({ vnode, parent }, el // HostNode + ) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } + } + + const isSuspense = (type) => type.__isSuspense; + // Suspense exposes a component-like API, and is treated like a component + // in the compiler, but internally it's a special built-in type that hooks + // directly into the renderer. + const SuspenseImpl = { + name: 'Suspense', + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, + // platform-specific impl passed from renderer + rendererInternals) { + if (n1 == null) { + mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals); + } + else { + patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren + }; + // Force-casted public typing for h and TSX props inference + const Suspense = (SuspenseImpl ); + function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } + } + function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { p: patch, o: { createElement } } = rendererInternals; + const hiddenContainer = createElement('div'); + const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals)); + // start mounting the content subtree in an off-dom container + patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds); + // now check if we have encountered any async deps + if (suspense.deps > 0) { + // has async + // invoke @fallback event + triggerEvent(vnode, 'onPending'); + triggerEvent(vnode, 'onFallback'); + // mount the fallback tree + patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context + isSVG, slotScopeIds); + setActiveBranch(suspense, vnode.ssFallback); + } + else { + // Suspense has no async deps. Just resolve. + suspense.resolve(); + } + } + function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = (n2.suspense = n1.suspense); + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + // same root type but content may have changed. + patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + if (suspense.deps <= 0) { + suspense.resolve(); + } + else if (isInFallback) { + patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context + isSVG, slotScopeIds, optimized); + setActiveBranch(suspense, newFallback); + } + } + else { + // toggled before pending tree is resolved + suspense.pendingId++; + if (isHydrating) { + // if toggled before hydration is finished, the current DOM tree is + // no longer valid. set it as the active branch so it will be unmounted + // when resolved + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } + else { + unmount(pendingBranch, parentComponent, suspense); + } + // increment pending ID. this is used to invalidate async callbacks + // reset suspense state + suspense.deps = 0; + // discard effects from pending branch + suspense.effects.length = 0; + // discard previous container + suspense.hiddenContainer = createElement('div'); + if (isInFallback) { + // already in fallback state + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + if (suspense.deps <= 0) { + suspense.resolve(); + } + else { + patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context + isSVG, slotScopeIds, optimized); + setActiveBranch(suspense, newFallback); + } + } + else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + // toggled "back" to current active branch + patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); + // force resolve + suspense.resolve(true); + } + else { + // switched to a 3rd branch + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } + else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + // root did not change, just normal patch + patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); + setActiveBranch(suspense, newBranch); + } + else { + // root node toggled + // invoke @pending event + triggerEvent(n2, 'onPending'); + // mount pending branch in off-dom container + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + if (suspense.deps <= 0) { + // incoming branch has no async deps, resolve now. + suspense.resolve(); + } + else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } + else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } + } + let hasWarned = false; + function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + /* istanbul ignore if */ + if (!hasWarned) { + hasWarned = true; + // @ts-ignore `console.info` cannot be null error + console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`); + } + const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals; + const timeout = toNumber(vnode.props && vnode.props.timeout); + const suspense = { + vnode, + parent, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === 'number' ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error(`suspense.resolve() is called without a pending branch.`); + } + if (suspense.isUnmounted) { + throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`); + } + } + const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } + else if (!resume) { + const delayEnter = activeBranch && + pendingBranch.transition && + pendingBranch.transition.mode === 'out-in'; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move(pendingBranch, container, anchor, 0 /* ENTER */); + } + }; + } + // this is initial anchor on mount + let { anchor } = suspense; + // unmount current active tree + if (activeBranch) { + // if the fallback tree was mounted, it may have been moved + // as part of a parent suspense. get the latest anchor for insertion + anchor = next(activeBranch); + unmount(activeBranch, parentComponent, suspense, true); + } + if (!delayEnter) { + // move content from off-dom container to actual container + move(pendingBranch, container, anchor, 0 /* ENTER */); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + // flush buffered effects + // check if there is a pending parent suspense + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + // found a pending parent suspense, merge buffered post jobs + // into that parent + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + // no pending parent suspense, flush all jobs + if (!hasUnresolvedAncestor) { + queuePostFlushCb(effects); + } + suspense.effects = []; + // invoke @resolve event + triggerEvent(vnode, 'onResolve'); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode, activeBranch, parentComponent, container, isSVG } = suspense; + // invoke @fallback event + triggerEvent(vnode, 'onFallback'); + const anchor = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + // mount the fallback tree + patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context + isSVG, slotScopeIds, optimized); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in'; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + // unmount current active branch + unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now + true // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container, anchor, type) { + suspense.activeBranch && + move(suspense.activeBranch, container, anchor, type); + suspense.container = container; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance + .asyncDep.catch(err => { + handleError(err, instance, 0 /* SETUP_FUNCTION */); + }) + .then(asyncSetupResult => { + // retry when the setup() promise resolves. + // component may have been unmounted before resolve. + if (instance.isUnmounted || + suspense.isUnmounted || + suspense.pendingId !== instance.suspenseId) { + return; + } + // retry from this component + instance.asyncResolved = true; + const { vnode } = instance; + { + pushWarningContext(vnode); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + // vnode may have been replaced if an update happened before the + // async dep is resolved. + vnode.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect(instance, vnode, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode.el); + { + popWarningContext(); + } + // only decrease deps count if suspense is not already resolved + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove); + } + if (suspense.pendingBranch) { + unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove); + } + } + }; + return suspense; + } + function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + /* eslint-disable no-restricted-globals */ + const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */)); + // there are two possible scenarios for server-rendered suspense: + // - success: ssr content should be fully resolved + // - failure: ssr content should be the fallback branch. + // however, on the client we don't really know if it has failed or not + // attempt to hydrate the DOM assuming it has succeeded, but we still + // need to construct a suspense boundary first + const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized); + if (suspense.deps === 0) { + suspense.resolve(); + } + return result; + /* eslint-enable no-restricted-globals */ + } + function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */; + vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children); + vnode.ssFallback = isSlotChildren + ? normalizeSuspenseSlot(children.fallback) + : createVNode(Comment); + } + function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + // disableTracking: false + // allow block tracking for compiled slots + // (see ./componentRenderContext.ts) + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild) { + warn$1(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter(c => c !== s); + } + return s; + } + function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } + else { + suspense.effects.push(fn); + } + } + else { + queuePostFlushCb(fn); + } + } + function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = (vnode.el = branch.el); + // in case suspense is the root node of a component, + // recursively update the HOC el + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } + } + + function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } + else { + let provides = currentInstance.provides; + // by default an instance inherits its parent's provides object + // but when it needs to provide values of its own, it creates its + // own provides object using parent provides object as prototype. + // this way in `inject` we can simply look up injections from direct + // parent and let the prototype chain do the work. + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + // TS doesn't allow symbol as index type + provides[key] = value; + } + } + function inject(key, defaultValue, treatDefaultAsFactory = false) { + // fallback to `currentRenderingInstance` so that this can be called in + // a functional component + const instance = currentInstance || currentRenderingInstance; + if (instance) { + // #2400 + // to support `app.use` plugins, + // fallback to appContext's `provides` if the instance is at root + const provides = instance.parent == null + ? instance.vnode.appContext && instance.vnode.appContext.provides + : instance.parent.provides; + if (provides && key in provides) { + // TS doesn't allow symbol as index type + return provides[key]; + } + else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) + ? defaultValue.call(instance.proxy) + : defaultValue; + } + else { + warn$1(`injection "${String(key)}" not found.`); + } + } + else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } + } + + // Simple effect. + function watchEffect(effect, options) { + return doWatch(effect, null, options); + } + function watchPostEffect(effect, options) { + return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) )); + } + function watchSyncEffect(effect, options) { + return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) )); + } + // initial value for watchers to trigger on undefined initial values + const INITIAL_WATCHER_VALUE = {}; + // implementation + function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1(`\`watch(fn, options?)\` signature has been moved to a separate API. ` + + `Use \`watchEffect(fn, options?)\` instead. \`watch\` now only ` + + `supports \`watch(source, cb, options?) signature.`); + } + return doWatch(source, cb, options); + } + function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) { + if (!cb) { + if (immediate !== undefined) { + warn$1(`watch() "immediate" option is only respected when using the ` + + `watch(source, callback, options?) signature.`); + } + if (deep !== undefined) { + warn$1(`watch() "deep" option is only respected when using the ` + + `watch(source, callback, options?) signature.`); + } + } + const warnInvalidSource = (s) => { + warn$1(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` + + `a reactive object, or an array of these types.`); + }; + const instance = currentInstance; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } + else if (isReactive(source)) { + getter = () => source; + deep = true; + } + else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some(s => isReactive(s) || isShallow(s)); + getter = () => source.map(s => { + if (isRef(s)) { + return s.value; + } + else if (isReactive(s)) { + return traverse(s); + } + else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */); + } + else { + warnInvalidSource(s); + } + }); + } + else if (isFunction(source)) { + if (cb) { + // getter with cb + getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */); + } + else { + // no cb -> simple effect + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onCleanup]); + }; + } + } + else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */); + }; + }; + let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active) { + return; + } + if (cb) { + // watch(source, cb) + const newValue = effect.run(); + if (deep || + forceTrigger || + (isMultiSource + ? newValue.some((v, i) => hasChanged(v, oldValue[i])) + : hasChanged(newValue, oldValue)) || + (false )) { + // cleanup before running cb again + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } + else { + // watchEffect + effect.run(); + } + }; + // important: mark the job as a watcher callback so that scheduler knows + // it is allowed to self-trigger (#1727) + job.allowRecurse = !!cb; + let scheduler; + if (flush === 'sync') { + scheduler = job; // the scheduler function gets called directly + } + else if (flush === 'post') { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } + else { + // default: 'pre' + scheduler = () => queuePreFlushCb(job); + } + const effect = new ReactiveEffect(getter, scheduler); + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + // initial run + if (cb) { + if (immediate) { + job(); + } + else { + oldValue = effect.run(); + } + } + else if (flush === 'post') { + queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense); + } + else { + effect.run(); + } + return () => { + effect.stop(); + if (instance && instance.scope) { + remove(instance.scope.effects, effect); + } + }; + } + // this.$watch + function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) + ? source.includes('.') + ? createPathGetter(publicThis, source) + : () => publicThis[source] + : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } + else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } + else { + unsetCurrentInstance(); + } + return res; + } + function createPathGetter(ctx, path) { + const segments = path.split('.'); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; + } + function traverse(value, seen) { + if (!isObject(value) || value["__v_skip" /* SKIP */]) { + return value; + } + seen = seen || new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, seen); + } + else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } + else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } + else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; + } + + function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; + } + const TransitionHookValidator = [Function, Array]; + const BaseTransitionImpl = { + name: `BaseTransition`, + props: { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + // locate first non-comment child + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + // warn more than one non-comment child + warn$1('<transition> can only be used on a single element or component. ' + + 'Use <transition-group> for lists.'); + break; + } + child = c; + hasFound = true; + } + } + } + // there's no need to track reactivity for these props so use the raw + // props for a bit better perf + const rawProps = toRaw(props); + const { mode } = rawProps; + // check mode + if (mode && + mode !== 'in-out' && + mode !== 'out-in' && + mode !== 'default') { + warn$1(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + // in the case of <transition><keep-alive/></transition>, we need to + // compare the type of the kept-alive children. + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === undefined) { + prevTransitionKey = key; + } + else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + // handle mode + if (oldInnerChild && + oldInnerChild.type !== Comment && + (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance); + // update old tree's hooks in case of dynamic transition + setTransitionHooks(oldInnerChild, leavingHooks); + // switching between different views + if (mode === 'out-in') { + state.isLeaving = true; + // return placeholder node and queue update when leave finishes + leavingHooks.afterLeave = () => { + state.isLeaving = false; + instance.update(); + }; + return emptyPlaceholder(child); + } + else if (mode === 'in-out' && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + // early removal callback + el._leaveCb = () => { + earlyRemove(); + el._leaveCb = undefined; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } + }; + // export the public type for h/tsx inference + // also to avoid inline import() in generated d.ts files + const BaseTransition = BaseTransitionImpl; + function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; + } + // The transition hooks are attached to the vnode as vnode.transition + // and will be called at appropriate timing in the renderer. + function resolveTransitionHooks(vnode, props, state, instance) { + const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && + callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every(hook => hook.length <= 1)) + done(); + } + else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } + else { + return; + } + } + // for same element (v-show) + if (el._leaveCb) { + el._leaveCb(true /* cancelled */); + } + // for toggled element with same key (v-if) + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && + isSameVNodeType(vnode, leavingVNode) && + leavingVNode.el._leaveCb) { + // force early removal (not cancelled) + leavingVNode.el._leaveCb(); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } + else { + return; + } + } + let called = false; + const done = (el._enterCb = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } + else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el._enterCb = undefined; + }); + if (hook) { + callAsyncHook(hook, [el, done]); + } + else { + done(); + } + }, + leave(el, remove) { + const key = String(vnode.key); + if (el._enterCb) { + el._enterCb(true /* cancelled */); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = (el._leaveCb = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } + else { + callHook(onAfterLeave, [el]); + } + el._leaveCb = undefined; + if (leavingVNodesCache[key] === vnode) { + delete leavingVNodesCache[key]; + } + }); + leavingVNodesCache[key] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } + else { + done(); + } + }, + clone(vnode) { + return resolveTransitionHooks(vnode, props, state, instance); + } + }; + return hooks; + } + // the placeholder really only handles one special case: KeepAlive + // in the case of a KeepAlive in a leave phase we need to return a KeepAlive + // placeholder with empty content to avoid the KeepAlive instance from being + // unmounted. + function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } + } + function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) + ? vnode.children + ? vnode.children[0] + : undefined + : vnode; + } + function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } + else if (vnode.shapeFlag & 128 /* SUSPENSE */) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } + else { + vnode.transition = hooks; + } + } + function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + // #5360 inherit parent key in case of <template v-for> + const key = parentKey == null + ? child.key + : String(parentKey) + String(child.key != null ? child.key : i); + // handle fragment children case, e.g. v-for + if (child.type === Fragment) { + if (child.patchFlag & 128 /* KEYED_FRAGMENT */) + keyedFragmentCount++; + ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key)); + } + // comment placeholders should be skipped, e.g. v-if + else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + // #1126 if a transition children list contains multiple sub fragments, these + // fragments will be merged into a flat children array. Since each v-for + // fragment may contain different static bindings inside, we need to de-op + // these children to force full diffs to ensure correct behavior. + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2 /* BAIL */; + } + } + return ret; + } + + // implementation, close to no-op + function defineComponent(options) { + return isFunction(options) ? { setup: options, name: options.name } : options; + } + + const isAsyncWrapper = (i) => !!i.type.__asyncLoader; + function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out + suspensible = true, onError: userOnError } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return (pendingRequest || + (thisRequest = pendingRequest = + loader() + .catch(err => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } + else { + throw err; + } + }) + .then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1(`Async component loader resolved to undefined. ` + + `If you are using retry(), make sure to return its return value.`); + } + // interop module default + if (comp && + (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + }))); + }; + return defineComponent({ + name: 'AsyncComponentWrapper', + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + // already resolved + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */); + }; + // suspense-controlled or SSR. + if ((suspensible && instance.suspense) || + (false )) { + return load() + .then(comp => { + return () => createInnerComp(comp, instance); + }) + .catch(err => { + onError(err); + return () => errorComponent + ? createVNode(errorComponent, { + error: err + }) + : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error(`Async component timed out after ${timeout}ms.`); + onError(err); + error.value = err; + } + }, timeout); + } + load() + .then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + // parent is keep-alive, force update so the loaded component's + // name is taken into account + queueJob(instance.parent.update); + } + }) + .catch(err => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } + else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } + else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); + } + function createInnerComp(comp, { vnode: { ref, props, children, shapeFlag }, parent }) { + const vnode = createVNode(comp, props, children); + // ensure inner component inherits the async wrapper's ref owner + vnode.ref = ref; + return vnode; + } + + const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; + const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + // KeepAlive communicates with the instantiated renderer via the + // ctx where the renderer passes in its internals, + // and the KeepAlive instance exposes activate/deactivate implementations. + // The whole point of this is to avoid importing KeepAlive directly in the + // renderer to facilitate tree-shaking. + const sharedContext = instance.ctx; + const cache = new Map(); + const keys = new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext; + const storageContainer = createElement('div'); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance = vnode.component; + move(vnode, container, anchor, 0 /* ENTER */, parentSuspense); + // in case props have changed + patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized); + queuePostRenderEffect(() => { + instance.isDeactivated = false; + if (instance.a) { + invokeArrayFns(instance.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance.parent, vnode); + } + }, parentSuspense); + { + // Update components tree + devtoolsComponentAdded(instance); + } + }; + sharedContext.deactivate = (vnode) => { + const instance = vnode.component; + move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense); + queuePostRenderEffect(() => { + if (instance.da) { + invokeArrayFns(instance.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance.parent, vnode); + } + instance.isDeactivated = true; + }, parentSuspense); + { + // Update components tree + devtoolsComponentAdded(instance); + } + }; + function unmount(vnode) { + // reset the shapeFlag so it can be properly unmounted + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || cached.type !== current.type) { + unmount(cached); + } + else if (current) { + // current active instance should no longer be kept-alive. + // we can't unmount it now but it might be later, so reset its flag now. + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + // prune cache on include/exclude prop change + watch(() => [props.include, props.exclude], ([include, exclude]) => { + include && pruneCache(name => matches(include, name)); + exclude && pruneCache(name => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: 'post', deep: true }); + // cache sub tree after render + let pendingCacheKey = null; + const cacheSubtree = () => { + // fix #1621, the pendingCacheKey could be 0 + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach(cached => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type) { + // current instance will be unmounted as part of keep-alive's unmount + resetShapeFlag(vnode); + // but invoke its deactivated hook here + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } + else if (!isVNode(rawVNode) || + (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) && + !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + // for async components, name check should be based in its loaded + // inner component if available + const name = getComponentName(isAsyncWrapper(vnode) + ? vnode.type.__asyncResolved || {} + : comp); + const { include, exclude, max } = props; + if ((include && (!name || !matches(include, name))) || + (exclude && name && matches(exclude, name))) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + // clone vnode if it's reused because we are going to mutate it + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128 /* SUSPENSE */) { + rawVNode.ssContent = vnode; + } + } + // #1513 it's possible for the returned vnode to be cloned due to attr + // fallthrough or scopeId, so the vnode here may not be the final vnode + // that is mounted. Instead of caching it directly, we store the pending + // key and cache `instance.subTree` (the normalized vnode) in + // beforeMount/beforeUpdate hooks. + pendingCacheKey = key; + if (cachedVNode) { + // copy over mounted state + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + // recursively update transition hooks on subTree + setTransitionHooks(vnode, vnode.transition); + } + // avoid vnode being mounted as fresh + vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */; + // make this key the freshest + keys.delete(key); + keys.add(key); + } + else { + keys.add(key); + // prune oldest entry + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + // avoid vnode being unmounted + vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } + }; + // export the public type for h/tsx inference + // also to avoid inline import() in generated d.ts files + const KeepAlive = KeepAliveImpl; + function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } + else if (isString(pattern)) { + return pattern.split(',').includes(name); + } + else if (pattern.test) { + return pattern.test(name); + } + /* istanbul ignore next */ + return false; + } + function onActivated(hook, target) { + registerKeepAliveHook(hook, "a" /* ACTIVATED */, target); + } + function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da" /* DEACTIVATED */, target); + } + function registerKeepAliveHook(hook, type, target = currentInstance) { + // cache the deactivate branch check wrapper for injected hooks so the same + // hook can be properly deduped by the scheduler. "__wdc" stands for "with + // deactivation check". + const wrappedHook = hook.__wdc || + (hook.__wdc = () => { + // only fire the hook if the target instance is NOT in a deactivated branch. + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + // In addition to registering it on the target instance, we walk up the parent + // chain and register it on all ancestor instances that are keep-alive roots. + // This avoids the need to walk the entire component tree when invoking these + // hooks, and more importantly, avoids the need to track child components in + // arrays. + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } + } + function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + // injectHook wraps the original for error handling, so make sure to remove + // the wrapped version. + const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); + } + function resetShapeFlag(vnode) { + let shapeFlag = vnode.shapeFlag; + if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) { + shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */; + } + if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) { + shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */; + } + vnode.shapeFlag = shapeFlag; + } + function getInnerChild(vnode) { + return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode; + } + + function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + // cache the error handling wrapper for injected hooks so the same hook + // can be properly deduped by the scheduler. "__weh" stands for "with error + // handling". + const wrappedHook = hook.__weh || + (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + // disable tracking inside all lifecycle hooks + // since they can potentially be called inside effects. + pauseTracking(); + // Set currentInstance during hook invocation. + // This assumes the hook does not synchronously trigger other hooks, which + // can only be false when the user does something really funky. + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } + else { + hooks.push(wrappedHook); + } + return wrappedHook; + } + else { + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, '')); + warn$1(`${apiName} is called when there is no active component instance to be ` + + `associated with. ` + + `Lifecycle injection APIs can only be used during execution of setup().` + + (` If you are using async setup(), make sure to register lifecycle ` + + `hooks before the first await statement.` + )); + } + } + const createHook = (lifecycle) => (hook, target = currentInstance) => + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp" /* SERVER_PREFETCH */) && + injectHook(lifecycle, hook, target); + const onBeforeMount = createHook("bm" /* BEFORE_MOUNT */); + const onMounted = createHook("m" /* MOUNTED */); + const onBeforeUpdate = createHook("bu" /* BEFORE_UPDATE */); + const onUpdated = createHook("u" /* UPDATED */); + const onBeforeUnmount = createHook("bum" /* BEFORE_UNMOUNT */); + const onUnmounted = createHook("um" /* UNMOUNTED */); + const onServerPrefetch = createHook("sp" /* SERVER_PREFETCH */); + const onRenderTriggered = createHook("rtg" /* RENDER_TRIGGERED */); + const onRenderTracked = createHook("rtc" /* RENDER_TRACKED */); + function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec" /* ERROR_CAPTURED */, hook, target); + } + + /** + Runtime helper for applying directives to a vnode. Example usage: + + const comp = resolveComponent('comp') + const foo = resolveDirective('foo') + const bar = resolveDirective('bar') + + return withDirectives(h(comp), [ + [foo, this.x], + [bar, this.y] + ]) + */ + function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1('Do not use built-in directive ids as custom directive id: ' + name); + } + } + /** + * Adds directives to a VNode. + */ + function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || + internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + return vnode; + } + function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + // disable tracking inside all lifecycle hooks + // since they can potentially be called inside effects. + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } + } + + const COMPONENTS = 'components'; + const DIRECTIVES = 'directives'; + /** + * @private + */ + function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; + } + const NULL_DYNAMIC_COMPONENT = Symbol(); + /** + * @private + */ + function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } + else { + // invalid types will fallthrough to createVNode and raise warning + return (component || NULL_DYNAMIC_COMPONENT); + } + } + /** + * @private + */ + function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); + } + // implementation + function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + // explicit self name has highest priority + if (type === COMPONENTS) { + const selfName = getComponentName(Component); + if (selfName && + (selfName === name || + selfName === camelize(name) || + selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || + // global registration + resolve(instance.appContext[type], name); + if (!res && maybeSelfReference) { + // fallback to implicit self-reference + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS + ? `\nIf this is a native custom element, make sure to exclude it from ` + + `component resolution via compilerOptions.isCustomElement.` + : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } + else { + warn$1(`resolve${capitalize(type.slice(0, -1))} ` + + `can only be used in render() or setup().`); + } + } + function resolve(registry, name) { + return (registry && + (registry[name] || + registry[camelize(name)] || + registry[capitalize(camelize(name))])); + } + + /** + * Actual implementation + */ + function renderList(source, renderItem, cache, index) { + let ret; + const cached = (cache && cache[index]); + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, undefined, cached && cached[i]); + } + } + else if (typeof source === 'number') { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]); + } + } + else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i])); + } + else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } + else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; + } + + /** + * Compiler runtime helper for creating dynamic slots object + * @private + */ + function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + // array of dynamic slot generated by <template v-for="..." #[...]> + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } + else if (slot) { + // conditional single slot generated by <template v-if="..." #foo> + slots[slot.name] = slot.fn; + } + } + return slots; + } + + /** + * Compiler runtime helper for rendering `<slot/>` + * @private + */ + function renderSlot(slots, name, props = {}, + // this is not a user-facing function, so the fallback is always generated by + // the compiler and guaranteed to be a function returning an array + fallback, noSlotted) { + if (currentRenderingInstance.isCE || + (currentRenderingInstance.parent && + isAsyncWrapper(currentRenderingInstance.parent) && + currentRenderingInstance.parent.isCE)) { + return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1(`SSR-optimized slot function detected in a non-SSR-optimized render ` + + `function. You need to mark this component with $dynamic-slots in the ` + + `parent template.`); + slot = () => []; + } + // a compiled slot disables block tracking by default to avoid manual + // invocation interfering with template-based block tracking, but in + // `renderSlot` we can be sure that it's template-based so we can force + // enable it. + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* STABLE */ + ? 64 /* STABLE_FRAGMENT */ + : -2 /* BAIL */); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + '-s']; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; + } + function ensureValidVNode(vnodes) { + return vnodes.some(child => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && + !ensureValidVNode(child.children)) + return false; + return true; + }) + ? vnodes + : null; + } + + /** + * For prefixing keys in v-on="obj" with "on" + * @private + */ + function toHandlers(obj) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[toHandlerKey(key)] = obj[key]; + } + return ret; + } + + /** + * #2437 In Vue 3, functional components do not have a public instance proxy but + * they exist in the internal parent chain. For code that relies on traversing + * public $parent chains, skip functional ones and go to the parent instead. + */ + const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); + }; + const publicPropertiesMap = + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /*#__PURE__*/ extend(Object.create(null), { + $: i => i, + $el: i => i.vnode.el, + $data: i => i.data, + $props: i => (shallowReadonly(i.props) ), + $attrs: i => (shallowReadonly(i.attrs) ), + $slots: i => (shallowReadonly(i.slots) ), + $refs: i => (shallowReadonly(i.refs) ), + $parent: i => getPublicInstance(i.parent), + $root: i => getPublicInstance(i.root), + $emit: i => i.emit, + $options: i => (resolveMergedOptions(i) ), + $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)), + $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: i => (instanceWatch.bind(i) ) + }); + const isReservedPrefix = (key) => key === '_' || key === '$'; + const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + // for internal formatters to know that this is a Vue instance + if (key === '__isVue') { + return true; + } + // prioritize <script setup> bindings during dev. + // this allows even properties that start with _ or $ to be used - so that + // it aligns with the production behavior where the render fn is inlined and + // indeed has access to all declared variables. + if (setupState !== EMPTY_OBJ && + setupState.__isScriptSetup && + hasOwn(setupState, key)) { + return setupState[key]; + } + // data / props / ctx + // This getter gets called for every property access on the render context + // during render and is a major hotspot. The most expensive part of this + // is the multiple hasOwn() calls. It's much faster to do a simple property + // access on a plain object, so we use an accessCache object (with null + // prototype) to memoize what access type a key corresponds to. + let normalizedProps; + if (key[0] !== '$') { + const n = accessCache[key]; + if (n !== undefined) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + // default: just fallthrough + } + } + else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } + else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } + else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && + hasOwn(normalizedProps, key)) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } + else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } + else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + // public $xxx properties + if (publicGetter) { + if (key === '$attrs') { + track(instance, "get" /* GET */, key); + markAttrsAccessed(); + } + return publicGetter(instance); + } + else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && + (cssModule = cssModule[key])) { + return cssModule; + } + else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + // user may set custom properties to `this` that start with `$` + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } + else if ( + // global properties + ((globalProperties = appContext.config.globalProperties), + hasOwn(globalProperties, key))) { + { + return globalProperties[key]; + } + } + else if (currentRenderingInstance && + (!isString(key) || + // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf('__v') !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` + + `character ("$" or "_") and is not proxied on the render context.`); + } + else if (instance === currentRenderingInstance) { + warn$1(`Property ${JSON.stringify(key)} was accessed during render ` + + `but is not defined on instance.`); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) { + setupState[key] = value; + return true; + } + else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + data[key] = value; + return true; + } + else if (hasOwn(instance.props, key)) { + warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance); + return false; + } + if (key[0] === '$' && key.slice(1) in instance) { + warn$1(`Attempting to mutate public property "${key}". ` + + `Properties starting with $ are reserved and readonly.`, instance); + return false; + } + else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } + else { + ctx[key] = value; + } + } + return true; + }, + has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) { + let normalizedProps; + return (!!accessCache[key] || + (data !== EMPTY_OBJ && hasOwn(data, key)) || + (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) || + ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) || + hasOwn(ctx, key) || + hasOwn(publicPropertiesMap, key) || + hasOwn(appContext.config.globalProperties, key)); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + // invalidate key cache of a getter based property #5417 + target._.accessCache[key] = 0; + } + else if (hasOwn(descriptor, 'value')) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } + }; + { + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1(`Avoid app logic that relies on enumerating keys on a component instance. ` + + `The keys will be empty in production mode to avoid performance overhead.`); + return Reflect.ownKeys(target); + }; + } + const RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + // fast path for unscopables when using `with` block + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== '_' && !isGloballyWhitelisted(key); + if (!has && PublicInstanceProxyHandlers.has(_, key)) { + warn$1(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`); + } + return has; + } + }); + // dev only + // In dev mode, the proxy target exposes the same properties as seen on `this` + // for easier console inspection. In prod mode it will be an empty object so + // these properties definitions can be skipped. + function createDevRenderContext(instance) { + const target = {}; + // expose internal instance for proxy handlers + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + // expose public properties + Object.keys(publicPropertiesMap).forEach(key => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: NOOP + }); + }); + return target; + } + // dev only + function exposePropsOnRenderContext(instance) { + const { ctx, propsOptions: [propsOptions] } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach(key => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: NOOP + }); + }); + } + } + // dev only + function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(toRaw(setupState)).forEach(key => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1(`setup() return property ${JSON.stringify(key)} should not start with "$" or "_" ` + + `which are reserved prefixes for Vue internals.`); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: NOOP + }); + } + }); + } + + function createDuplicateChecker() { + const cache = Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } + else { + cache[key] = type; + } + }; + } + let shouldCacheAccess = true; + function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + // do not cache property access on public proxy during state initialization + shouldCacheAccess = false; + // call beforeCreate first before accessing other options since + // the hook may mutate resolved options (#2791) + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc" /* BEFORE_CREATE */); + } + const { + // state + data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, + // lifecycle + created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, + // public API + expose, inheritAttrs, + // assets + components, directives, filters } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + // options initialization order (to be consistent with Vue 2): + // - props (already done outside of this function) + // - inject + // - methods + // - data (deferred since it relies on `this` access) + // - computed + // - watch (deferred since it relies on `this` access) + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (isFunction(methodHandler)) { + // In dev mode, we use the `createRenderContext` function to define + // methods to the proxy target, and those are read-only but + // reconfigurable, so it needs to be redefined here + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } + else { + warn$1(`Method "${key}" has type "${typeof methodHandler}" in the component definition. ` + + `Did you reference the function correctly?`); + } + } + } + if (dataOptions) { + if (!isFunction(dataOptions)) { + warn$1(`The data option must be a function. ` + + `Plain object usage is no longer supported.`); + } + const data = dataOptions.call(publicThis, publicThis); + if (isPromise(data)) { + warn$1(`data() returned a Promise - note data() cannot be async; If you ` + + `intend to perform data fetching before component renders, use ` + + `async setup() + <Suspense>.`); + } + if (!isObject(data)) { + warn$1(`data() should return an object.`); + } + else { + instance.data = reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + // expose data on ctx during dev + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: NOOP + }); + } + } + } + } + } + // state initialization complete at this point - start caching access + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = isFunction(opt) + ? opt.bind(publicThis, publicThis) + : isFunction(opt.get) + ? opt.get.bind(publicThis, publicThis) + : NOOP; + if (get === NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !isFunction(opt) && isFunction(opt.set) + ? opt.set.bind(publicThis) + : () => { + warn$1(`Write operation failed: computed property "${key}" is readonly.`); + } + ; + const c = computed$1({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: v => (c.value = v) + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = isFunction(provideOptions) + ? provideOptions.call(publicThis) + : provideOptions; + Reflect.ownKeys(provides).forEach(key => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c" /* CREATED */); + } + function registerLifecycleHook(register, hook) { + if (isArray(hook)) { + hook.forEach(_hook => register(_hook.bind(publicThis))); + } + else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach(key => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: val => (publicThis[key] = val) + }); + }); + } + else if (!instance.exposed) { + instance.exposed = {}; + } + } + // options that are handled when creating the instance but also need to be + // applied from mixins + if (render && instance.render === NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + // asset options. + if (components) + instance.components = components; + if (directives) + instance.directives = directives; + } + function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) { + if (isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (isObject(opt)) { + if ('default' in opt) { + injected = inject(opt.from || key, opt.default, true /* treat default function as factory */); + } + else { + injected = inject(opt.from || key); + } + } + else { + injected = inject(opt); + } + if (isRef(injected)) { + // TODO remove the check in 3.3 + if (unwrapRef) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: v => (injected.value = v) + }); + } + else { + { + warn$1(`injected property "${key}" is a ref and will be auto-unwrapped ` + + `and no longer needs \`.value\` in the next minor release. ` + + `To opt-in to the new behavior now, ` + + `set \`app.config.unwrapInjectedRef = true\` (this config is ` + + `temporary and will not be needed in the future.)`); + } + ctx[key] = injected; + } + } + else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } + } + function callHook(hook, instance, type) { + callWithAsyncErrorHandling(isArray(hook) + ? hook.map(h => h.bind(instance.proxy)) + : hook.bind(instance.proxy), instance, type); + } + function createWatcher(raw, ctx, publicThis, key) { + const getter = key.includes('.') + ? createPathGetter(publicThis, key) + : () => publicThis[key]; + if (isString(raw)) { + const handler = ctx[raw]; + if (isFunction(handler)) { + watch(getter, handler); + } + else { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } + else if (isFunction(raw)) { + watch(getter, raw.bind(publicThis)); + } + else if (isObject(raw)) { + if (isArray(raw)) { + raw.forEach(r => createWatcher(r, ctx, publicThis, key)); + } + else { + const handler = isFunction(raw.handler) + ? raw.handler.bind(publicThis) + : ctx[raw.handler]; + if (isFunction(handler)) { + watch(getter, handler, raw); + } + else { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } + else { + warn$1(`Invalid watch option: "${key}"`, raw); + } + } + /** + * Resolve merged options and cache it on the component. + * This is done only once per-component since the merging does not involve + * instances. + */ + function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } + else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } + else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true)); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + cache.set(base, resolved); + return resolved; + } + function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach((m) => mergeOptions(to, m, strats, true)); + } + for (const key in from) { + if (asMixin && key === 'expose') { + warn$1(`"expose" option is ignored when declared in mixins or extends. ` + + `It should only be declared in the base component itself.`); + } + else { + const strat = internalOptionMergeStrats[key] || (strats && strats[key]); + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; + } + const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeObjectOptions, + emits: mergeObjectOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject + }; + function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from); + }; + } + function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); + } + function normalizeInject(raw) { + if (isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; + } + function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; + } + function mergeObjectOptions(to, from) { + return to ? extend(extend(Object.create(null), to), from) : from; + } + function mergeWatchOptions(to, from) { + if (!to) + return from; + if (!from) + return to; + const merged = extend(Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; + } + + function initProps(instance, rawProps, isStateful, // result of bitwise flag comparison + isSSR = false) { + const props = {}; + const attrs = {}; + def(attrs, InternalObjectKey, 1); + instance.propsDefaults = Object.create(null); + setFullProps(instance, rawProps, props, attrs); + // ensure all declared prop keys are present + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = undefined; + } + } + // validation + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + // stateful + instance.props = isSSR ? props : shallowReactive(props); + } + else { + if (!instance.type.props) { + // functional w/ optional props, props === attrs + instance.props = attrs; + } + else { + // functional w/ declared props + instance.props = props; + } + } + instance.attrs = attrs; + } + function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { props, attrs, vnode: { patchFlag } } = instance; + const rawCurrentProps = toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !((instance.type.__hmrId || + (instance.parent && instance.parent.type.__hmrId))) && + (optimized || patchFlag > 0) && + !(patchFlag & 16 /* FULL_PROPS */)) { + if (patchFlag & 8 /* PROPS */) { + // Compiler-generated props & no keys change, just set the updated + // the props. + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + // skip if the prop key is a declared emit event listener + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + // PROPS flag guarantees rawProps to be non-null + const value = rawProps[key]; + if (options) { + // attr / props separation was done on init and will be consistent + // in this code path, so just check if attrs have it. + if (hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + else { + const camelizedKey = camelize(key); + props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */); + } + } + else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } + else { + // full props update. + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + // in case of dynamic props, check if we need to delete keys from + // the props object + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || + // for camelCase + (!hasOwn(rawProps, key) && + // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) { + if (options) { + if (rawPrevProps && + // for camelCase + (rawPrevProps[key] !== undefined || + // for kebab-case + rawPrevProps[kebabKey] !== undefined)) { + props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */); + } + } + else { + delete props[key]; + } + } + } + // in the case of functional component w/o props declaration, props and + // attrs point to the same object so it should already have been updated. + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || + (!hasOwn(rawProps, key) && + (!false ))) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + // trigger updates for $attrs in case it's used in component slots + if (hasAttrsChanged) { + trigger(instance, "set" /* SET */, '$attrs'); + } + { + validateProps(rawProps || {}, props, instance); + } + } + function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + // key, ref are reserved and never passed down + if (isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + // prop option names are camelized during normalization, so to support + // kebab -> camel conversion here we need to camelize the key. + let camelKey; + if (options && hasOwn(options, (camelKey = camelize(key)))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } + else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } + else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = toRaw(props); + const castValues = rawCastValues || EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key)); + } + } + return hasAttrsChanged; + } + function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = hasOwn(opt, 'default'); + // default values + if (hasDefault && value === undefined) { + const defaultValue = opt.default; + if (opt.type !== Function && isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } + else { + setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call(null, props); + unsetCurrentInstance(); + } + } + else { + value = defaultValue; + } + } + // boolean casting + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } + else if (opt[1 /* shouldCastTrue */] && + (value === '' || value === hyphenate(key))) { + value = true; + } + } + } + return value; + } + function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + // apply mixin/extends props + let hasExtends = false; + if (!isFunction(comp)) { + const extendProps = (raw) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw, appContext, true); + extend(normalized, props); + if (keys) + needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + cache.set(comp, EMPTY_ARR); + return EMPTY_ARR; + } + if (isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = EMPTY_OBJ; + } + } + } + else if (raw) { + if (!isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = (normalized[normalizedKey] = + isArray(opt) || isFunction(opt) ? { type: opt } : opt); + if (prop) { + const booleanIndex = getTypeIndex(Boolean, prop.type); + const stringIndex = getTypeIndex(String, prop.type); + prop[0 /* shouldCast */] = booleanIndex > -1; + prop[1 /* shouldCastTrue */] = + stringIndex < 0 || booleanIndex < stringIndex; + // if the prop needs boolean casting or default value + if (booleanIndex > -1 || hasOwn(prop, 'default')) { + needCastKeys.push(normalizedKey); + } + } + } + } + } + const res = [normalized, needCastKeys]; + cache.set(comp, res); + return res; + } + function validatePropName(key) { + if (key[0] !== '$') { + return true; + } + else { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; + } + // use function string name to check type constructors + // so that it works across vms / iframes. + function getType(ctor) { + const match = ctor && ctor.toString().match(/^\s*function (\w+)/); + return match ? match[1] : ctor === null ? 'null' : ''; + } + function isSameType(a, b) { + return getType(a) === getType(b); + } + function getTypeIndex(type, expectedTypes) { + if (isArray(expectedTypes)) { + return expectedTypes.findIndex(t => isSameType(t, type)); + } + else if (isFunction(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1; + } + return -1; + } + /** + * dev only + */ + function validateProps(rawProps, props, instance) { + const resolvedValues = toRaw(props); + const options = instance.propsOptions[0]; + for (const key in options) { + let opt = options[key]; + if (opt == null) + continue; + validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))); + } + } + /** + * dev only + */ + function validateProp(name, value, prop, isAbsent) { + const { type, required, validator } = prop; + // required! + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + // missing but optional + if (value == null && !prop.required) { + return; + } + // type check + if (type != null && type !== true) { + let isValid = false; + const types = isArray(type) ? type : [type]; + const expectedTypes = []; + // value is valid as long as one of the specified types match + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ''); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + // custom validator + if (validator && !validator(value)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } + } + const isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt'); + /** + * dev only + */ + function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + // for primitive wrapper objects + if (!valid && t === 'object') { + valid = value instanceof type; + } + } + else if (expectedType === 'Object') { + valid = isObject(value); + } + else if (expectedType === 'Array') { + valid = isArray(value); + } + else if (expectedType === 'null') { + valid = value === null; + } + else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; + } + /** + * dev only + */ + function getInvalidTypeMessage(name, value, expectedTypes) { + let message = `Invalid prop: type check failed for prop "${name}".` + + ` Expected ${expectedTypes.map(capitalize).join(' | ')}`; + const expectedType = expectedTypes[0]; + const receivedType = toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + // check if we need to specify expected value + if (expectedTypes.length === 1 && + isExplicable(expectedType) && + !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + // check if we need to specify received value + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; + } + /** + * dev only + */ + function styleValue(value, type) { + if (type === 'String') { + return `"${value}"`; + } + else if (type === 'Number') { + return `${Number(value)}`; + } + else { + return `${value}`; + } + } + /** + * dev only + */ + function isExplicable(type) { + const explicitTypes = ['string', 'number', 'boolean']; + return explicitTypes.some(elem => type.toLowerCase() === elem); + } + /** + * dev only + */ + function isBoolean(...args) { + return args.some(elem => elem.toLowerCase() === 'boolean'); + } + + const isInternalKey = (key) => key[0] === '_' || key === '$stable'; + const normalizeSlotValue = (value) => isArray(value) + ? value.map(normalizeVNode) + : [normalizeVNode(value)]; + const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + // already normalized - #5353 + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance) { + warn$1(`Slot "${key}" invoked outside of the render function: ` + + `this will not track dependencies used in the slot. ` + + `Invoke the slot function inside the render function instead.`); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; + }; + const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) + continue; + const value = rawSlots[key]; + if (isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } + else if (value != null) { + { + warn$1(`Non-function value encountered for slot "${key}". ` + + `Prefer function slots for better performance.`); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } + }; + const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && + !(false )) { + warn$1(`Non-function value encountered for default slot. ` + + `Prefer function slots for better performance.`); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; + }; + const initSlots = (instance, children) => { + if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) { + const type = children._; + if (type) { + // users can get the shallow readonly version of the slots object through `this.$slots`, + // we should avoid the proxy object polluting the slots of the internal instance + instance.slots = toRaw(children); + // make compiler marker non-enumerable + def(children, '_', type); + } + else { + normalizeObjectSlots(children, (instance.slots = {})); + } + } + else { + instance.slots = {}; + if (children) { + normalizeVNodeSlots(instance, children); + } + } + def(instance.slots, InternalObjectKey, 1); + }; + const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = EMPTY_OBJ; + if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) { + const type = children._; + if (type) { + // compiled slots. + if (isHmrUpdating) { + // Parent was HMR updated so slot content may have changed. + // force update slots and mark instance for hmr as well + extend(slots, children); + } + else if (optimized && type === 1 /* STABLE */) { + // compiled AND stable. + // no need to update, and skip stale slots removal. + needDeletionCheck = false; + } + else { + // compiled but dynamic (v-if/v-for on slots) - update slots, but skip + // normalization. + extend(slots, children); + // #2893 + // when rendering the optimized slots by manually written render function, + // we need to delete the `slots._` flag if necessary to make subsequent updates reliable, + // i.e. let the `renderSlot` create the bailed Fragment + if (!optimized && type === 1 /* STABLE */) { + delete slots._; + } + } + } + else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } + else if (children) { + // non slot object children (direct value) passed to a component + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + // delete stale slots + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && !(key in deletionComparisonTarget)) { + delete slots[key]; + } + } + } + }; + + function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: undefined, + warnHandler: undefined, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: Object.create(null), + optionsCache: new WeakMap(), + propsCache: new WeakMap(), + emitsCache: new WeakMap() + }; + } + let uid = 0; + function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = Object.assign({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = new Set(); + let isMounted = false; + const app = (context.app = { + _uid: uid++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1(`app.config cannot be replaced. Modify individual options instead.`); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn$1(`Plugin has already been applied to target app.`); + } + else if (plugin && isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } + else if (isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } + else { + warn$1(`A plugin must either be a function or an object with an "install" ` + + `function.`); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } + else { + warn$1('Mixin has already been applied to target app' + + (mixin.name ? `: ${mixin.name}` : '')); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, isSVG) { + if (!isMounted) { + // #5571 + if (rootContainer.__vue_app__) { + warn$1(`There is already an app instance mounted on the host container.\n` + + ` If you want to mount another app on the same host container,` + + ` you need to unmount the previous app by calling \`app.unmount()\` first.`); + } + const vnode = createVNode(rootComponent, rootProps); + // store app context on the root VNode. + // this will be set on the root instance on initial mount. + vnode.appContext = context; + // HMR root reload + { + context.reload = () => { + render(cloneVNode(vnode), rootContainer, isSVG); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } + else { + render(vnode, rootContainer, isSVG); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getExposeProxy(vnode.component) || vnode.component.proxy; + } + else { + warn$1(`App has already been mounted.\n` + + `If you want to remount the same app, move your app creation logic ` + + `into a factory function and create fresh app instances for each ` + + `mount - e.g. \`const createMyApp = () => createApp(App)\``); + } + }, + unmount() { + if (isMounted) { + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } + else { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + warn$1(`App already provides property with key "${String(key)}". ` + + `It will be overwritten with the new value.`); + } + context.provides[key] = value; + return app; + } + }); + return app; + }; + } + + /** + * Function for handling a template ref + */ + function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount)); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + // when mounting async components, nothing needs to be done, + // because the template ref is forwarded to inner component + return; + } + const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */ + ? getExposeProxy(vnode.component) || vnode.component.proxy + : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn$1(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` + + `A vnode with ref must be created inside the render function.`); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs; + const setupState = owner.setupState; + // dynamic ref changed. unset old ref + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (hasOwn(setupState, oldRef)) { + setupState[oldRef] = null; + } + } + else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]); + } + else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } + else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (hasOwn(setupState, ref)) { + setupState[ref] = refs[ref]; + } + } + else { + ref.value = [refValue]; + if (rawRef.k) + refs[rawRef.k] = ref.value; + } + } + else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } + else if (_isString) { + refs[ref] = value; + if (hasOwn(setupState, ref)) { + setupState[ref] = value; + } + } + else if (isRef(ref)) { + ref.value = value; + if (rawRef.k) + refs[rawRef.k] = value; + } + else { + warn$1('Invalid template ref type:', ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } + else { + doSet(); + } + } + else { + warn$1('Invalid template ref type:', ref, `(${typeof ref})`); + } + } + } + + let hasMismatch = false; + const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject'; + const isComment = (node) => node.nodeType === 8 /* COMMENT */; + // Note: hydration is DOM-specific + // But we have to place it in core due to tight coupling with core - splitting + // it out creates a ton of unnecessary complexity. + // Hydration also depends on some renderer internal logic which needs to be + // passed in via arguments. + function createHydrationFunctions(rendererInternals) { + const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + warn$1(`Attempting to hydrate existing markup but container is empty. ` + + `Performing full mount instead.`); + patch(null, vnode, container); + flushPostFlushCbs(); + return; + } + hasMismatch = false; + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + if (hasMismatch && !false) { + // this error should show up in production + console.error(`Hydration completed but contains mismatches.`); + } + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + const isFragmentStart = isComment(node) && node.data === '['; + const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart); + const { type, ref, shapeFlag, patchFlag } = vnode; + const domType = node.nodeType; + vnode.el = node; + if (patchFlag === -2 /* BAIL */) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3 /* TEXT */) { + // #5728 empty text node inside a slot can cause hydration failure + // because the server rendered HTML won't contain a text node + if (vnode.children === '') { + insert((vnode.el = createText('')), parentNode(node), node); + nextNode = node; + } + else { + nextNode = onMismatch(); + } + } + else { + if (node.data !== vnode.children) { + hasMismatch = true; + warn$1(`Hydration text mismatch:` + + `\n- Client: ${JSON.stringify(node.data)}` + + `\n- Server: ${JSON.stringify(vnode.children)}`); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (domType !== 8 /* COMMENT */ || isFragmentStart) { + nextNode = onMismatch(); + } + else { + nextNode = nextSibling(node); + } + break; + case Static: + if (domType !== 1 /* ELEMENT */) { + nextNode = onMismatch(); + } + else { + // determine anchor, adopt content + nextNode = node; + // if the static vnode has its content stripped during build, + // adopt it from the server-rendered HTML. + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.outerHTML; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return nextNode; + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } + else { + nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); + } + break; + default: + if (shapeFlag & 1 /* ELEMENT */) { + if (domType !== 1 /* ELEMENT */ || + vnode.type.toLowerCase() !== + node.tagName.toLowerCase()) { + nextNode = onMismatch(); + } + else { + nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); + } + } + else if (shapeFlag & 6 /* COMPONENT */) { + // when setting up the render effect, if the initial vnode already + // has .el set, the component will perform hydration instead of mount + // on its sub-tree. + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized); + // component may be async, so in the case of fragments we cannot rely + // on component's rendered output to determine the end of the fragment + // instead, we do a lookahead to find the end anchor node. + nextNode = isFragmentStart + ? locateClosingAsyncAnchor(node) + : nextSibling(node); + // #4293 teleport as component root + if (nextNode && + isComment(nextNode) && + nextNode.data === 'teleport end') { + nextNode = nextSibling(nextNode); + } + // #3787 + // if component is async, it may get moved / unmounted before its + // inner component is loaded, so we need to give it a placeholder + // vnode that matches its adopted DOM. + if (isAsyncWrapper(vnode)) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode + ? nextNode.previousSibling + : container.lastChild; + } + else { + subTree = + node.nodeType === 3 ? createTextVNode('') : createVNode('div'); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } + else if (shapeFlag & 64 /* TELEPORT */) { + if (domType !== 8 /* COMMENT */) { + nextNode = onMismatch(); + } + else { + nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren); + } + } + else if (shapeFlag & 128 /* SUSPENSE */) { + nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode); + } + else { + warn$1('Invalid HostVNode type:', type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs } = vnode; + // #4006 for form elements with non-string v-model value bindings + // e.g. <option :value="obj">, <input type="checkbox" :true-value="1"> + const forcePatchValue = (type === 'input' && dirs) || type === 'option'; + // skip props & children if this is hoisted static nodes + // #5405 in dev, always hydrate children for HMR + { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, 'created'); + } + // props + if (props) { + if (forcePatchValue || + !optimized || + patchFlag & (16 /* FULL_PROPS */ | 32 /* HYDRATE_EVENTS */)) { + for (const key in props) { + if ((forcePatchValue && key.endsWith('value')) || + (isOn(key) && !isReservedProp(key))) { + patchProp(el, key, null, props[key], false, undefined, parentComponent); + } + } + } + else if (props.onClick) { + // Fast path for click listeners (which is most often) to avoid + // iterating through props. + patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent); + } + } + // vnode / directive hooks + let vnodeHooks; + if ((vnodeHooks = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount'); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted'); + }, parentSuspense); + } + // children + if (shapeFlag & 16 /* ARRAY_CHILDREN */ && + // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized); + let hasWarned = false; + while (next) { + hasMismatch = true; + if (!hasWarned) { + warn$1(`Hydration children mismatch in <${vnode.type}>: ` + + `server rendered element contains more child nodes than client vdom.`); + hasWarned = true; + } + // The SSRed DOM contains more nodes than it should. Remove them. + const cur = next; + next = next.nextSibling; + remove(cur); + } + } + else if (shapeFlag & 8 /* TEXT_CHILDREN */) { + if (el.textContent !== vnode.children) { + hasMismatch = true; + warn$1(`Hydration text content mismatch in <${vnode.type}>:\n` + + `- Client: ${el.textContent}\n` + + `- Server: ${vnode.children}`); + el.textContent = vnode.children; + } + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized + ? children[i] + : (children[i] = normalizeVNode(children[i])); + if (node) { + node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); + } + else if (vnode.type === Text && !vnode.children) { + continue; + } + else { + hasMismatch = true; + if (!hasWarned) { + warn$1(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` + + `server rendered element contains fewer child nodes than client vdom.`); + hasWarned = true; + } + // the SSRed DOM didn't contain enough nodes. Mount the missing ones. + patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds + ? slotScopeIds.concat(fragmentSlotScopeIds) + : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized); + if (next && isComment(next) && next.data === ']') { + return nextSibling((vnode.anchor = next)); + } + else { + // fragment didn't hydrate successfully, since we didn't get a end anchor + // back. This should have led to node/children mismatch warnings. + hasMismatch = true; + // since the anchor is missing, we need to create one and insert it + insert((vnode.anchor = createComment(`]`)), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + hasMismatch = true; + warn$1(`Hydration node mismatch:\n- Client vnode:`, vnode.type, `\n- Server rendered DOM:`, node, node.nodeType === 3 /* TEXT */ + ? `(text)` + : isComment(node) && node.data === '[' + ? `(start of fragment)` + : ``); + vnode.el = null; + if (isFragment) { + // remove excessive fragment nodes + const end = locateClosingAsyncAnchor(node); + while (true) { + const next = nextSibling(node); + if (next && next !== end) { + remove(next); + } + else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds); + return next; + }; + const locateClosingAsyncAnchor = (node) => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === '[') + match++; + if (node.data === ']') { + if (match === 0) { + return nextSibling(node); + } + else { + match--; + } + } + } + } + return node; + }; + return [hydrate, hydrateNode]; + } + + /* eslint-disable no-restricted-globals */ + let supported; + let perf; + function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } + } + function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } + } + function isSupported() { + if (supported !== undefined) { + return supported; + } + if (typeof window !== 'undefined' && window.performance) { + supported = true; + perf = window.performance; + } + else { + supported = false; + } + return supported; + } + + const queuePostRenderEffect = queueEffectWithSuspense + ; + /** + * The createRenderer function accepts two generic arguments: + * HostNode and HostElement, corresponding to Node and Element types in the + * host environment. For example, for runtime-dom, HostNode would be the DOM + * `Node` interface and HostElement would be the DOM `Element` interface. + * + * Custom renderers can pass in the platform specific types like this: + * + * ``` js + * const { render, createApp } = createRenderer<Node, Element>({ + * patchProp, + * ...nodeOps + * }) + * ``` + */ + function createRenderer(options) { + return baseCreateRenderer(options); + } + // Separate API for creating hydration-enabled renderer. + // Hydration logic is only used when calling this function, making it + // tree-shakable. + function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); + } + // implementation + function baseCreateRenderer(options, createHydrationFns) { + const target = getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options; + // Note: functions inside this closure should use `const xxx = () => {}` + // style in order to prevent being inlined by minifiers. + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + // patching & not same type, unmount old tree + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2 /* BAIL */) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, isSVG); + } + else { + patchStaticNode(n1, n2, container, isSVG); + } + break; + case Fragment: + processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + break; + default: + if (shapeFlag & 1 /* ELEMENT */) { + processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else if (shapeFlag & 6 /* COMPONENT */) { + processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else if (shapeFlag & 64 /* TELEPORT */) { + type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); + } + else if (shapeFlag & 128 /* SUSPENSE */) { + type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); + } + else { + warn$1('Invalid VNode type:', type, `(${typeof type})`); + } + } + // set ref + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert((n2.el = hostCreateText(n2.children)), container, anchor); + } + else { + const el = (n2.el = n1.el); + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor); + } + else { + // there's no support for dynamic comments + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, isSVG) => { + [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor); + }; + /** + * Dev / HMR only + */ + const patchStaticNode = (n1, n2, container, isSVG) => { + // static nodes are only patched during dev for HMR + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + // remove existing + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG); + } + else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + isSVG = isSVG || n2.type === 'svg'; + if (n1 == null) { + mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else { + patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode; + { + el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props); + // mount children first, since some props may rely on child content + // being already rendered, e.g. `<select value>` + if (shapeFlag & 8 /* TEXT_CHILDREN */) { + hostSetElementText(el, vnode.children); + } + else if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, 'created'); + } + // props + if (props) { + for (const key in props) { + if (key !== 'value' && !isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); + } + } + /** + * Special case for setting value on DOM elements: + * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024) + * - it needs to be forced (#1471) + * #2353 proposes adding another renderer option to configure this, but + * the properties affects are so finite it is worth special casing it + * here to reduce the complexity. (Special casing it also should not + * affect non-DOM renderers) + */ + if ('value' in props) { + hostPatchProp(el, 'value', null, props.value); + } + if ((vnodeHook = props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + // scopeId + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + } + { + Object.defineProperty(el, '__vnode', { + value: vnode, + enumerable: false + }); + Object.defineProperty(el, '__vueParentComponent', { + value: parentComponent, + enumerable: false + }); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount'); + } + // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved + // #1689 For inside suspense + suspense resolved case, just call it + const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) && + transition && + !transition.persisted; + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || + needCallTransitionHooks || + dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted'); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && + subTree.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) { + subTree = + filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree) { + const parentVNode = parentComponent.vnode; + setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = (children[i] = optimized + ? cloneIfMounted(children[i]) + : normalizeVNode(children[i])); + patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const el = (n2.el = n1.el); + let { patchFlag, dynamicChildren, dirs } = n2; + // #1426 take the old vnode's patch flag into account since user may clone a + // compiler-generated vnode, which de-opts to FULL_PROPS + patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */; + const oldProps = n1.props || EMPTY_OBJ; + const newProps = n2.props || EMPTY_OBJ; + let vnodeHook; + // disable recurse in beforeUpdate hooks + parentComponent && toggleRecurse(parentComponent, false); + if ((vnodeHook = newProps.onVnodeBeforeUpdate)) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate'); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + // HMR updated, force full diff + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + const areChildrenSVG = isSVG && n2.type !== 'foreignObject'; + if (dynamicChildren) { + patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds); + if (parentComponent && parentComponent.type.__hmrId) { + traverseStaticChildren(n1, n2); + } + } + else if (!optimized) { + // full diff + patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false); + } + if (patchFlag > 0) { + // the presence of a patchFlag means this element's render code was + // generated by the compiler and can take the fast path. + // in this path old node and new node are guaranteed to have the same shape + // (i.e. at the exact same position in the source template) + if (patchFlag & 16 /* FULL_PROPS */) { + // element props contain dynamic keys, full diff needed + patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG); + } + else { + // class + // this flag is matched when the element has dynamic class bindings. + if (patchFlag & 2 /* CLASS */) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, 'class', null, newProps.class, isSVG); + } + } + // style + // this flag is matched when the element has dynamic style bindings + if (patchFlag & 4 /* STYLE */) { + hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG); + } + // props + // This flag is matched when the element has dynamic prop/attr bindings + // other than class and style. The keys of dynamic prop/attrs are saved for + // faster iteration. + // Note dynamic keys like :[foo]="bar" will cause this optimization to + // bail out and go through a full diff because we need to unset the old key + if (patchFlag & 8 /* PROPS */) { + // if the flag is present then dynamicProps must be non-null + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + // #1471 force patch value + if (next !== prev || key === 'value') { + hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren); + } + } + } + } + // text + // This flag is matched when the element has only dynamic text children. + if (patchFlag & 1 /* TEXT */) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } + else if (!optimized && dynamicChildren == null) { + // unoptimized, full diff + patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated'); + }, parentSuspense); + } + }; + // The fast path for blocks. + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + // Determine the container (parent element) for the patch. + const container = + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && + // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || + // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || + // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 /* COMPONENT */ | 64 /* TELEPORT */)) + ? hostParentNode(oldVNode.el) + : // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer; + patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true); + } + }; + const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { + if (oldProps !== newProps) { + for (const key in newProps) { + // empty string is not valid prop + if (isReservedProp(key)) + continue; + const next = newProps[key]; + const prev = oldProps[key]; + // defer patching value + if (next !== prev && key !== 'value') { + hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); + } + } + if (oldProps !== EMPTY_OBJ) { + for (const key in oldProps) { + if (!isReservedProp(key) && !(key in newProps)) { + hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); + } + } + } + if ('value' in newProps) { + hostPatchProp(el, 'value', oldProps.value, newProps.value); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText('')); + const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText('')); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if (// #5523 dev root fragment may inherit directives + (isHmrUpdating || patchFlag & 2048 /* DEV_ROOT_FRAGMENT */)) { + // HMR updated / Dev root fragment (w/ comments), force full diff + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + // check if this is a slot fragment with :slotted scope ids + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds + ? slotScopeIds.concat(fragmentSlotScopeIds) + : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + // a fragment can only have array children + // since they are either generated by the compiler, or implicitly created + // from arrays. + mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else { + if (patchFlag > 0 && + patchFlag & 64 /* STABLE_FRAGMENT */ && + dynamicChildren && + // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + // a stable fragment (template root or <template v-for>) doesn't need to + // patch children order, but it may contain dynamicChildren. + patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds); + if (parentComponent && parentComponent.type.__hmrId) { + traverseStaticChildren(n1, n2); + } + else if ( + // #2080 if the stable fragment has a key, it's a <template v-for> that may + // get moved around. Make sure all root level vnodes inherit el. + // #2134 or if it's a component root, it may also get moved around + // as the component is being moved. + n2.key != null || + (parentComponent && n2 === parentComponent.subTree)) { + traverseStaticChildren(n1, n2, true /* shallow */); + } + } + else { + // keyed / unkeyed, or manual fragments. + // for keyed & unkeyed, since they are compiler generated from v-for, + // each child is guaranteed to be a block so the fragment will never + // have dynamicChildren. + patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) { + parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized); + } + else { + mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized); + } + } + else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { + const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense)); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + // inject renderer internals for keepAlive + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + // resolve props and slots for setup context + { + { + startMeasure(instance, `init`); + } + setupComponent(instance); + { + endMeasure(instance, `init`); + } + } + // setup() is async. This component relies on async logic to be resolved + // before proceeding + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); + // Give it a placeholder if this is not hydration + // TODO handle self-defined fallback + if (!initialVNode.el) { + const placeholder = (instance.subTree = createVNode(Comment)); + processCommentNode(null, placeholder, container, anchor); + } + return; + } + setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized); + { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = (n2.component = n1.component); + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && + !instance.asyncResolved) { + // async & still pending - just update props and slots + // since the component's reactive effect for render isn't set-up yet + { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext(); + } + return; + } + else { + // normal update + instance.next = n2; + // in case the child component is also queued, remove it to avoid + // double updating the same child component in the same flush. + invalidateJob(instance.update); + // instance.update is the reactive effect. + instance.update(); + } + } + else { + // no update needed. just copy over properties + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + // beforeMount hook + if (bm) { + invokeArrayFns(bm); + } + // onVnodeBeforeMount + if (!isAsyncWrapperVNode && + (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + // vnode has adopted host node - perform hydration instead of mount. + const hydrateSubTree = () => { + { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `hydrate`); + } + hydrateNode(el, instance.subTree, instance, parentSuspense, null); + { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode) { + initialVNode.type.__asyncLoader().then( + // note: we are moving the render call into an async callback, + // which means it won't track dependencies - but it's ok because + // a server-rendered async wrapper is already in resolved state + // and it will never need to change. + () => !instance.isUnmounted && hydrateSubTree()); + } + else { + hydrateSubTree(); + } + } + else { + { + startMeasure(instance, `render`); + } + const subTree = (instance.subTree = renderComponentRoot(instance)); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch(null, subTree, container, anchor, instance, parentSuspense, isSVG); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + // mounted hook + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + // onVnodeMounted + if (!isAsyncWrapperVNode && + (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense); + } + // activated hook for keep-alive roots. + // #1742 activated hook must be accessed after first render + // since the hook may be injected by a child keep-alive + if (initialVNode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */ || + (parent && + isAsyncWrapper(parent.vnode) && + parent.vnode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */)) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + // #2458: deference mount-only object parameters to prevent memleaks + initialVNode = container = anchor = null; + } + else { + // updateComponent + // This is triggered by mutation of component's own state (next: null) + // OR parent calling processComponent (next: VNode) + let { next, bu, u, parent, vnode } = instance; + let originNext = next; + let vnodeHook; + { + pushWarningContext(next || instance.vnode); + } + // Disallow component effect recursion during pre-lifecycle hooks. + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + else { + next = vnode; + } + // beforeUpdate hook + if (bu) { + invokeArrayFns(bu); + } + // onVnodeBeforeUpdate + if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + // render + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch(prevTree, nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), instance, parentSuspense, isSVG); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + // self-triggered update. In case of HOC, update parent component + // vnode el. HOC is indicated by parent instance's subTree pointing + // to child component's vnode + updateHOCHostEl(instance, nextTree.el); + } + // updated hook + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + // onVnodeUpdated + if ((vnodeHook = next.props && next.props.onVnodeUpdated)) { + queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext(); + } + } + }; + // create reactive effect for rendering + const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope + )); + const update = (instance.update = () => effect.run()); + update.id = instance.uid; + // allowRecurse + // #1801, #2043 component render effects should allow recursive updates + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc + ? e => invokeArrayFns(instance.rtc, e) + : void 0; + effect.onTrigger = instance.rtg + ? e => invokeArrayFns(instance.rtg, e) + : void 0; + update.ownerInstance = instance; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + pauseTracking(); + // props update may have triggered pre-flush watchers. + // flush them before the render update. + flushPreFlushCbs(undefined, instance.update); + resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + // fast path + if (patchFlag > 0) { + if (patchFlag & 128 /* KEYED_FRAGMENT */) { + // this could be either fully-keyed or mixed (some keyed some not) + // presence of patchFlag means children are guaranteed to be arrays + patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + return; + } + else if (patchFlag & 256 /* UNKEYED_FRAGMENT */) { + // unkeyed + patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + return; + } + } + // children has 3 possibilities: text, array or no children. + if (shapeFlag & 8 /* TEXT_CHILDREN */) { + // text children fast path + if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } + else { + if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) { + // prev children was array + if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + // two arrays, cannot assume anything, do full diff + patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else { + // no new children, just unmount old + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } + else { + // prev children was text OR null + // new children is array OR null + if (prevShapeFlag & 8 /* TEXT_CHILDREN */) { + hostSetElementText(container, ''); + } + // mount new if array + if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + c1 = c1 || EMPTY_ARR; + c2 = c2 || EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = (c2[i] = optimized + ? cloneIfMounted(c2[i]) + : normalizeVNode(c2[i])); + patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + if (oldLength > newLength) { + // remove old + unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength); + } + else { + // mount new + mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength); + } + }; + // can be all-keyed or mixed + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; // prev ending index + let e2 = l2 - 1; // next ending index + // 1. sync from start + // (a b) c + // (a b) d e + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = (c2[i] = optimized + ? cloneIfMounted(c2[i]) + : normalizeVNode(c2[i])); + if (isSameVNodeType(n1, n2)) { + patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else { + break; + } + i++; + } + // 2. sync from end + // a (b c) + // d e (b c) + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = (c2[e2] = optimized + ? cloneIfMounted(c2[e2]) + : normalizeVNode(c2[e2])); + if (isSameVNodeType(n1, n2)) { + patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else { + break; + } + e1--; + e2--; + } + // 3. common sequence + mount + // (a b) + // (a b) c + // i = 2, e1 = 1, e2 = 2 + // (a b) + // c (a b) + // i = 0, e1 = -1, e2 = 0 + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch(null, (c2[i] = optimized + ? cloneIfMounted(c2[i]) + : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + i++; + } + } + } + // 4. common sequence + unmount + // (a b) c + // (a b) + // i = 2, e1 = 2, e2 = 1 + // a (b c) + // (b c) + // i = 0, e1 = 0, e2 = -1 + else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } + // 5. unknown sequence + // [i ... e1 + 1]: a b [c d e] f g + // [i ... e2 + 1]: a b [e d c h] f g + // i = 2, e1 = 4, e2 = 5 + else { + const s1 = i; // prev starting index + const s2 = i; // next starting index + // 5.1 build key:index map for newChildren + const keyToNewIndexMap = new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = (c2[i] = optimized + ? cloneIfMounted(c2[i]) + : normalizeVNode(c2[i])); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn$1(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + // 5.2 loop through old children left to be patched and try to patch + // matching nodes & remove nodes that are no longer present + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + // used to track whether any node has moved + let maxNewIndexSoFar = 0; + // works as Map<newIndex, oldIndex> + // Note that oldIndex is offset by +1 + // and oldIndex = 0 is a special value indicating the new node has + // no corresponding old node. + // used for determining longest stable subsequence + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) + newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + // all new children have been patched so this can only be a removal + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } + else { + // key-less node, try to locate a key-less node of the same type + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && + isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === undefined) { + unmount(prevChild, parentComponent, parentSuspense, true); + } + else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } + else { + moved = true; + } + patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + patched++; + } + } + // 5.3 move and mount + // generate longest stable subsequence only when nodes have moved + const increasingNewIndexSequence = moved + ? getSequence(newIndexToOldIndexMap) + : EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + // looping backwards so that we can use last patched node as anchor + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + // mount new + patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + else if (moved) { + // move if: + // There is no stable subsequence (e.g. a reverse) + // OR current node is not among the stable sequence + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2 /* REORDER */); + } + else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6 /* COMPONENT */) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128 /* SUSPENSE */) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64 /* TELEPORT */) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + // single nodes + const needTransition = moveType !== 2 /* REORDER */ && + shapeFlag & 1 /* ELEMENT */ && + transition; + if (needTransition) { + if (moveType === 0 /* ENTER */) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } + else { + const { leave, delayLeave, afterLeave } = transition; + const remove = () => hostInsert(el, container, anchor); + const performLeave = () => { + leave(el, () => { + remove(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove, performLeave); + } + else { + performLeave(); + } + } + } + else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode; + // unset ref + if (ref != null) { + setRef(ref, null, parentSuspense, vnode, true); + } + if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 /* ELEMENT */ && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && + (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6 /* COMPONENT */) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } + else { + if (shapeFlag & 128 /* SUSPENSE */) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount'); + } + if (shapeFlag & 64 /* TELEPORT */) { + vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove); + } + else if (dynamicChildren && + // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || + (patchFlag > 0 && patchFlag & 64 /* STABLE_FRAGMENT */))) { + // fast path for block nodes: only need to unmount dynamic children. + unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true); + } + else if ((type === Fragment && + patchFlag & + (128 /* KEYED_FRAGMENT */ | 256 /* UNKEYED_FRAGMENT */)) || + (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if ((shouldInvokeVnodeHook && + (vnodeHook = props && props.onVnodeUnmounted)) || + shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && + invokeDirectiveHook(vnode, null, parentComponent, 'unmounted'); + }, parentSuspense); + } + }; + const remove = vnode => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && + vnode.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */ && + transition && + !transition.persisted) { + vnode.children.forEach(child => { + if (child.type === Comment) { + hostRemove(child.el); + } + else { + remove(child); + } + }); + } + else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 /* ELEMENT */ && + transition && + !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } + else { + performLeave(); + } + } + else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + // For fragments, directly remove all contained DOM nodes. + // (fragment child nodes cannot have transition) + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { bum, scope, update, subTree, um } = instance; + // beforeUnmount hook + if (bum) { + invokeArrayFns(bum); + } + // stop effects in component scope + scope.stop(); + // update may be null if a component is unmounted before its async + // setup has resolved. + if (update) { + // so that scheduler will no longer invoke it + update.active = false; + unmount(subTree, instance, parentSuspense, doRemove); + } + // unmounted hook + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + // A component with async dep inside a pending suspense is unmounted before + // its async dep resolves. This should remove the dep from the suspense, and + // cause the suspense to resolve immediately if that was the last dep. + if (parentSuspense && + parentSuspense.pendingBranch && + !parentSuspense.isUnmounted && + instance.asyncDep && + !instance.asyncResolved && + instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = vnode => { + if (vnode.shapeFlag & 6 /* COMPONENT */) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128 /* SUSPENSE */) { + return vnode.suspense.next(); + } + return hostNextSibling((vnode.anchor || vnode.el)); + }; + const render = (vnode, container, isSVG) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } + else { + patch(container._vnode || null, vnode, container, null, null, null, isSVG); + } + flushPostFlushCbs(); + container._vnode = vnode; + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns(internals); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; + } + function toggleRecurse({ effect, update }, allowed) { + effect.allowRecurse = update.allowRecurse = allowed; + } + /** + * #1156 + * When a component is HMR-enabled, we need to make sure that all static nodes + * inside a block also inherit the DOM element from the previous tree so that + * HMR updates (which are full updates) can retrieve the element for patching. + * + * #2080 + * Inside keyed `template` fragment static children, if a fragment is moved, + * the children will always be moved. Therefore, in order to ensure correct move + * position, el should be inherited from previous nodes. + */ + function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (isArray(ch1) && isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + // this is only called in the optimized path so array children are + // guaranteed to be vnodes + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow) + traverseStaticChildren(c1, c2); + } + // also inherit for comment nodes, but not placeholders (e.g. v-if which + // would have received .el during block patch) + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + } + } + } + // https://en.wikipedia.org/wiki/Longest_increasing_subsequence + function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = (u + v) >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } + else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; + } + + const isTeleport = (type) => type.__isTeleport; + const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ''); + const isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement; + const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (isString(targetSelector)) { + if (!select) { + warn$1(`Current renderer does not support string target for Teleports. ` + + `(missing querySelector renderer option)`); + return null; + } + else { + const target = select(targetSelector); + if (!target) { + warn$1(`Failed to locate Teleport target with selector "${targetSelector}". ` + + `Note the target element must exist before the component is mounted - ` + + `i.e. the target cannot be rendered by the component itself, and ` + + `ideally should be outside of the entire Vue component tree.`); + } + return target; + } + } + else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } + }; + const TeleportImpl = { + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) { + const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + // #3302 + // HMR updated, force full diff + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + // insert anchors in the main view + const placeholder = (n2.el = createComment('teleport start') + ); + const mainAnchor = (n2.anchor = createComment('teleport end') + ); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const target = (n2.target = resolveTarget(n2.props, querySelector)); + const targetAnchor = (n2.targetAnchor = createText('')); + if (target) { + insert(targetAnchor, target); + // #2652 we could be teleporting from a non-SVG tree into an SVG tree + isSVG = isSVG || isTargetSVG(target); + } + else if (!disabled) { + warn$1('Invalid Teleport target on mount:', target, `(${typeof target})`); + } + const mount = (container, anchor) => { + // Teleport *always* has Array children. This is enforced in both the + // compiler and vnode children normalization. + if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); + } + }; + if (disabled) { + mount(container, mainAnchor); + } + else if (target) { + mount(target, targetAnchor); + } + } + else { + // update content + n2.el = n1.el; + const mainAnchor = (n2.anchor = n1.anchor); + const target = (n2.target = n1.target); + const targetAnchor = (n2.targetAnchor = n1.targetAnchor); + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + isSVG = isSVG || isTargetSVG(target); + if (dynamicChildren) { + // fast path when the teleport happens to be a block root + patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds); + // even in block tree mode we need to make sure all root-level nodes + // in the teleport inherit previous DOM references so that they can + // be moved in future patches. + traverseStaticChildren(n1, n2, true); + } + else if (!optimized) { + patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false); + } + if (disabled) { + if (!wasDisabled) { + // enabled -> disabled + // move into main container + moveTeleport(n2, container, mainAnchor, internals, 1 /* TOGGLE */); + } + } + else { + // target changed + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = (n2.target = resolveTarget(n2.props, querySelector)); + if (nextTarget) { + moveTeleport(n2, nextTarget, null, internals, 0 /* TARGET_CHANGE */); + } + else { + warn$1('Invalid Teleport target on update:', target, `(${typeof target})`); + } + } + else if (wasDisabled) { + // disabled -> enabled + // move into teleport target + moveTeleport(n2, target, targetAnchor, internals, 1 /* TOGGLE */); + } + } + } + }, + remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode; + if (target) { + hostRemove(targetAnchor); + } + // an unmounted teleport should always remove its children if not disabled + if (doRemove || !isTeleportDisabled(props)) { + hostRemove(anchor); + if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren); + } + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport + }; + function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* REORDER */) { + // move target anchor if this is a target change. + if (moveType === 0 /* TARGET_CHANGE */) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2 /* REORDER */; + // move main view anchor if this is a re-order. + if (isReorder) { + insert(el, container, parentAnchor); + } + // if this is a re-order and teleport is enabled (content is in target) + // do not move children. So the opposite is: only move children if this + // is not a reorder, or the teleport is disabled + if (!isReorder || isTeleportDisabled(props)) { + // Teleport has either Array children or no children. + if (shapeFlag & 16 /* ARRAY_CHILDREN */) { + for (let i = 0; i < children.length; i++) { + move(children[i], container, parentAnchor, 2 /* REORDER */); + } + } + } + // move main view anchor if this is a re-order. + if (isReorder) { + insert(anchor, container, parentAnchor); + } + } + function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) { + const target = (vnode.target = resolveTarget(vnode.props, querySelector)); + if (target) { + // if multiple teleports rendered to the same target element, we need to + // pick up from where the last teleport finished instead of the first node + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16 /* ARRAY_CHILDREN */) { + if (isTeleportDisabled(vnode.props)) { + vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized); + vnode.targetAnchor = targetNode; + } + else { + vnode.anchor = nextSibling(node); + // lookahead until we find the target anchor + // we cannot rely on return value of hydrateChildren() because there + // could be nested teleports + let targetAnchor = targetNode; + while (targetAnchor) { + targetAnchor = nextSibling(targetAnchor); + if (targetAnchor && + targetAnchor.nodeType === 8 && + targetAnchor.data === 'teleport anchor') { + vnode.targetAnchor = targetAnchor; + target._lpa = + vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized); + } + } + } + return vnode.anchor && nextSibling(vnode.anchor); + } + // Force-casted public typing for h and TSX props inference + const Teleport = TeleportImpl; + + const Fragment = Symbol('Fragment' ); + const Text = Symbol('Text' ); + const Comment = Symbol('Comment' ); + const Static = Symbol('Static' ); + // Since v-if and v-for are the two possible ways node structure can dynamically + // change, once we consider v-if branches and each v-for fragment a block, we + // can divide a template into nested blocks, and within each block the node + // structure would be stable. This allows us to skip most children diffing + // and only worry about the dynamic nodes (indicated by patch flags). + const blockStack = []; + let currentBlock = null; + /** + * Open a block. + * This must be called before `createBlock`. It cannot be part of `createBlock` + * because the children of the block are evaluated before `createBlock` itself + * is called. The generated code typically looks like this: + * + * ```js + * function render() { + * return (openBlock(),createBlock('div', null, [...])) + * } + * ``` + * disableTracking is true when creating a v-for fragment block, since a v-for + * fragment always diffs its children. + * + * @private + */ + function openBlock(disableTracking = false) { + blockStack.push((currentBlock = disableTracking ? null : [])); + } + function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; + } + // Whether we should be tracking dynamic child nodes inside a block. + // Only tracks when this value is > 0 + // We are not using a simple boolean because this value may need to be + // incremented/decremented by nested usage of v-once (see below) + let isBlockTreeEnabled = 1; + /** + * Block tracking sometimes needs to be disabled, for example during the + * creation of a tree that needs to be cached by v-once. The compiler generates + * code like this: + * + * ``` js + * _cache[1] || ( + * setBlockTracking(-1), + * _cache[1] = createVNode(...), + * setBlockTracking(1), + * _cache[1] + * ) + * ``` + * + * @private + */ + function setBlockTracking(value) { + isBlockTreeEnabled += value; + } + function setupBlock(vnode) { + // save current block children on the block vnode + vnode.dynamicChildren = + isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; + // close block + closeBlock(); + // a block is always going to be patched, so track it as a child of its + // parent block + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; + } + /** + * @private + */ + function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */)); + } + /** + * Create a block root vnode. Takes the same exact arguments as `createVNode`. + * A block root keeps track of dynamic nodes within the block in the + * `dynamicChildren` array. + * + * @private + */ + function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */)); + } + function isVNode(value) { + return value ? value.__v_isVNode === true : false; + } + function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 /* COMPONENT */ && + hmrDirtyComponents.has(n2.type)) { + // HMR only: if the component has been hot-updated, force a reload. + return false; + } + return n1.type === n2.type && n1.key === n2.key; + } + let vnodeArgsTransformer; + /** + * Internal API for registering an arguments transform for createVNode + * used for creating stubs in the test-utils + * It is *internal* but needs to be exposed for test-utils to pick up proper + * typings + */ + function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; + } + const createVNodeWithArgsTransform = (...args) => { + return _createVNode(...(vnodeArgsTransformer + ? vnodeArgsTransformer(args, currentRenderingInstance) + : args)); + }; + const InternalObjectKey = `__vInternal`; + const normalizeKey = ({ key }) => key != null ? key : null; + const normalizeRef = ({ ref, ref_key, ref_for }) => { + return (ref != null + ? isString(ref) || isRef(ref) || isFunction(ref) + ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } + : ref + : null); + }; + function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + // normalize suspense children + if (shapeFlag & 128 /* SUSPENSE */) { + type.normalize(vnode); + } + } + else if (children) { + // compiled element vnode - if children is passed, only possible types are + // string or Array. + vnode.shapeFlag |= isString(children) + ? 8 /* TEXT_CHILDREN */ + : 16 /* ARRAY_CHILDREN */; + } + // validate key + if (vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + // track vnode for block tree + if (isBlockTreeEnabled > 0 && + // avoid a block node from tracking itself + !isBlockNode && + // has current parent block + currentBlock && + // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6 /* COMPONENT */) && + // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32 /* HYDRATE_EVENTS */) { + currentBlock.push(vnode); + } + return vnode; + } + const createVNode = (createVNodeWithArgsTransform ); + function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + // createVNode receiving an existing vnode. This happens in cases like + // <component :is="vnode"/> + // #2078 make sure to merge refs during the clone instead of overwriting it + const cloned = cloneVNode(type, props, true /* mergeRef: true */); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6 /* COMPONENT */) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } + else { + currentBlock.push(cloned); + } + } + cloned.patchFlag |= -2 /* BAIL */; + return cloned; + } + // class component normalization. + if (isClassComponent(type)) { + type = type.__vccOpts; + } + // class & style normalization. + if (props) { + // for reactive or proxy objects, we need to clone it to enable mutation. + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (isObject(style)) { + // reactive state objects need to be cloned since they are likely to be + // mutated + if (isProxy(style) && !isArray(style)) { + style = extend({}, style); + } + props.style = normalizeStyle(style); + } + } + // encode the vnode type information into a bitmap + const shapeFlag = isString(type) + ? 1 /* ELEMENT */ + : isSuspense(type) + ? 128 /* SUSPENSE */ + : isTeleport(type) + ? 64 /* TELEPORT */ + : isObject(type) + ? 4 /* STATEFUL_COMPONENT */ + : isFunction(type) + ? 2 /* FUNCTIONAL_COMPONENT */ + : 0; + if (shapeFlag & 4 /* STATEFUL_COMPONENT */ && isProxy(type)) { + type = toRaw(type); + warn$1(`Vue received a Component which was made a reactive object. This can ` + + `lead to unnecessary performance overhead, and should be avoided by ` + + `marking the component with \`markRaw\` or using \`shallowRef\` ` + + `instead of \`ref\`.`, `\nComponent that was made reactive: `, type); + } + return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true); + } + function guardReactiveProps(props) { + if (!props) + return null; + return isProxy(props) || InternalObjectKey in props + ? extend({}, props) + : props; + } + function cloneVNode(vnode, extraProps, mergeRef = false) { + // This is intentionally NOT using spread or extend to avoid the runtime + // key enumeration cost. + const { props, ref, patchFlag, children } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref + ? // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref + ? isArray(ref) + ? ref.concat(normalizeRef(extraProps)) + : [ref, normalizeRef(extraProps)] + : normalizeRef(extraProps) + : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 /* HOISTED */ && isArray(children) + ? children.map(deepCloneVNode) + : children, + target: vnode.target, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment + ? patchFlag === -1 // hoisted node + ? 16 /* FULL_PROPS */ + : patchFlag | 16 /* FULL_PROPS */ + : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition: vnode.transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + el: vnode.el, + anchor: vnode.anchor + }; + return cloned; + } + /** + * Dev only, for HMR of hoisted vnodes reused in v-for + * https://github.com/vitejs/vite/issues/2022 + */ + function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; + } + /** + * @private + */ + function createTextVNode(text = ' ', flag = 0) { + return createVNode(Text, null, text, flag); + } + /** + * @private + */ + function createStaticVNode(content, numberOfNodes) { + // A static vnode can contain multiple stringified elements, and the number + // of elements is necessary for hydration. + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; + } + /** + * @private + */ + function createCommentVNode(text = '', + // when used as the v-else branch, the comment node must be created as a + // block to ensure correct updates. + asBlock = false) { + return asBlock + ? (openBlock(), createBlock(Comment, null, text)) + : createVNode(Comment, null, text); + } + function normalizeVNode(child) { + if (child == null || typeof child === 'boolean') { + // empty placeholder + return createVNode(Comment); + } + else if (isArray(child)) { + // fragment + return createVNode(Fragment, null, + // #3666, avoid reference pollution when reusing vnode + child.slice()); + } + else if (typeof child === 'object') { + // already vnode, this should be the most common since compiled templates + // always produce all-vnode children arrays + return cloneIfMounted(child); + } + else { + // strings and numbers + return createVNode(Text, null, String(child)); + } + } + // optimized normalization for template-compiled render fns + function cloneIfMounted(child) { + return child.el === null || child.memo ? child : cloneVNode(child); + } + function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } + else if (isArray(children)) { + type = 16 /* ARRAY_CHILDREN */; + } + else if (typeof children === 'object') { + if (shapeFlag & (1 /* ELEMENT */ | 64 /* TELEPORT */)) { + // Normalize slot to plain children for plain element and Teleport + const slot = children.default; + if (slot) { + // _c marker is added by withCtx() indicating this is a compiled slot + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } + else { + type = 32 /* SLOTS_CHILDREN */; + const slotFlag = children._; + if (!slotFlag && !(InternalObjectKey in children)) { + children._ctx = currentRenderingInstance; + } + else if (slotFlag === 3 /* FORWARDED */ && currentRenderingInstance) { + // a child component receives forwarded slots from the parent. + // its slot type is determined by its parent's slot type. + if (currentRenderingInstance.slots._ === 1 /* STABLE */) { + children._ = 1 /* STABLE */; + } + else { + children._ = 2 /* DYNAMIC */; + vnode.patchFlag |= 1024 /* DYNAMIC_SLOTS */; + } + } + } + } + else if (isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32 /* SLOTS_CHILDREN */; + } + else { + children = String(children); + // force teleport children to array so it can be moved around + if (shapeFlag & 64 /* TELEPORT */) { + type = 16 /* ARRAY_CHILDREN */; + children = [createTextVNode(children)]; + } + else { + type = 8 /* TEXT_CHILDREN */; + } + } + vnode.children = children; + vnode.shapeFlag |= type; + } + function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === 'class') { + if (ret.class !== toMerge.class) { + ret.class = normalizeClass([ret.class, toMerge.class]); + } + } + else if (key === 'style') { + ret.style = normalizeStyle([ret.style, toMerge.style]); + } + else if (isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && + existing !== incoming && + !(isArray(existing) && existing.includes(incoming))) { + ret[key] = existing + ? [].concat(existing, incoming) + : incoming; + } + } + else if (key !== '') { + ret[key] = toMerge[key]; + } + } + } + return ret; + } + function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7 /* VNODE_HOOK */, [ + vnode, + prevVNode + ]); + } + + const emptyAppContext = createAppContext(); + let uid$1 = 0; + function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + // inherit parent app context - or - if root, adopt from root vnode + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid$1++, + vnode, + type, + parent, + appContext, + root: null, + next: null, + subTree: null, + effect: null, + update: null, + scope: new EffectScope(true /* detached */), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + emitted: null, + // props default value + propsDefaults: EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: EMPTY_OBJ, + data: EMPTY_OBJ, + props: EMPTY_OBJ, + attrs: EMPTY_OBJ, + slots: EMPTY_OBJ, + refs: EMPTY_OBJ, + setupState: EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit$1.bind(null, instance); + // apply custom element special handling + if (vnode.ce) { + vnode.ce(instance); + } + return instance; + } + let currentInstance = null; + const getCurrentInstance = () => currentInstance || currentRenderingInstance; + const setCurrentInstance = (instance) => { + currentInstance = instance; + instance.scope.on(); + }; + const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + currentInstance = null; + }; + const isBuiltInTag = /*#__PURE__*/ makeMap('slot,component'); + function validateComponentName(name, config) { + const appIsNativeTag = config.isNativeTag || NO; + if (isBuiltInTag(name) || appIsNativeTag(name)) { + warn$1('Do not use built-in or reserved HTML elements as component id: ' + name); + } + } + function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */; + } + let isInSSRComponentSetup = false; + function setupComponent(instance, isSSR = false) { + isInSSRComponentSetup = isSSR; + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children); + const setupResult = isStateful + ? setupStatefulComponent(instance, isSSR) + : undefined; + isInSSRComponentSetup = false; + return setupResult; + } + function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1(`"compilerOptions" is only supported when using a build of Vue that ` + + `includes the runtime compiler. Since you are using a runtime-only ` + + `build, the options should be passed via your build tool config instead.`); + } + } + // 0. create render proxy property access cache + instance.accessCache = Object.create(null); + // 1. create public instance / render proxy + // also mark it raw so it's never observed + instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); + { + exposePropsOnRenderContext(instance); + } + // 2. call setup() + const { setup } = Component; + if (setup) { + const setupContext = (instance.setupContext = + setup.length > 1 ? createSetupContext(instance) : null); + setCurrentInstance(instance); + pauseTracking(); + const setupResult = callWithErrorHandling(setup, instance, 0 /* SETUP_FUNCTION */, [shallowReadonly(instance.props) , setupContext]); + resetTracking(); + unsetCurrentInstance(); + if (isPromise(setupResult)) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + // return the promise so server-renderer can wait on it + return setupResult + .then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }) + .catch(e => { + handleError(e, instance, 0 /* SETUP_FUNCTION */); + }); + } + else { + // async setup returned Promise. + // bail here and wait for re-entry. + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous'; + warn$1(`Component <${name}>: setup function returned a promise, but no ` + + `<Suspense> boundary was found in the parent component tree. ` + + `A component with async setup() must be nested in a <Suspense> ` + + `in order to be rendered.`); + } + } + } + else { + handleSetupResult(instance, setupResult, isSSR); + } + } + else { + finishComponentSetup(instance, isSSR); + } + } + function handleSetupResult(instance, setupResult, isSSR) { + if (isFunction(setupResult)) { + // setup returned an inline render function + { + instance.render = setupResult; + } + } + else if (isObject(setupResult)) { + if (isVNode(setupResult)) { + warn$1(`setup() should not return VNodes directly - ` + + `return a render function instead.`); + } + // setup returned bindings. + // assuming a render function compiled from template is present. + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } + else if (setupResult !== undefined) { + warn$1(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`); + } + finishComponentSetup(instance, isSSR); + } + let compile; + let installWithProxy; + /** + * For runtime-dom to register the compiler. + * Note the exported method uses any to avoid d.ts relying on the compiler types. + */ + function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = i => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; + } + // dev only + const isRuntimeOnly = () => !compile; + function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + // template / render function normalization + // could be already set when returned from setup() + if (!instance.render) { + // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation + // is done by server-renderer + if (!isSSR && compile && !Component.render) { + const template = Component.template; + if (template) { + { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = extend(extend({ + isCustomElement, + delimiters + }, compilerOptions), componentCompilerOptions); + Component.render = compile(template, finalCompilerOptions); + { + endMeasure(instance, `compile`); + } + } + } + instance.render = (Component.render || NOOP); + // for runtime-compiled render functions using `with` blocks, the render + // proxy used needs a different `has` handler which is more performant and + // also only allows a whitelist of globals to fallthrough. + if (installWithProxy) { + installWithProxy(instance); + } + } + // support for 2.x options + { + setCurrentInstance(instance); + pauseTracking(); + applyOptions(instance); + resetTracking(); + unsetCurrentInstance(); + } + // warn missing template/render + // the runtime compilation of template in SSR is done by server-render + if (!Component.render && instance.render === NOOP && !isSSR) { + /* istanbul ignore if */ + if (!compile && Component.template) { + warn$1(`Component provided template option but ` + + `runtime compilation is not supported in this build of Vue.` + + (` Use "vue.global.js" instead.` + ) /* should not happen */); + } + else { + warn$1(`Component is missing template or render function.`); + } + } + } + function createAttrsProxy(instance) { + return new Proxy(instance.attrs, { + get(target, key) { + markAttrsAccessed(); + track(instance, "get" /* GET */, '$attrs'); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } + } + ); + } + function createSetupContext(instance) { + const expose = exposed => { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + instance.exposed = exposed || {}; + }; + let attrs; + { + // We use getters in dev in case libs like test-utils overwrite instance + // properties (overwrites should not be done in prod) + return Object.freeze({ + get attrs() { + return attrs || (attrs = createAttrsProxy(instance)); + }, + get slots() { + return shallowReadonly(instance.slots); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } + } + function getExposeProxy(instance) { + if (instance.exposed) { + return (instance.exposeProxy || + (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } + else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + } + }))); + } + } + const classifyRE = /(?:^|[-_])(\w)/g; + const classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, ''); + function getComponentName(Component) { + return isFunction(Component) + ? Component.displayName || Component.name + : Component.name; + } + /* istanbul ignore next */ + function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + // try to infer the name based on reverse resolution + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = + inferFromRegistry(instance.components || + instance.parent.type.components) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; + } + function isClassComponent(value) { + return isFunction(value) && '__vccOpts' in value; + } + + const computed$1 = ((getterOrOptions, debugOptions) => { + // @ts-ignore + return computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + }); + + // dev only + const warnRuntimeUsage = (method) => warn$1(`${method}() is a compiler-hint helper that is only usable inside ` + + `<script setup> of a single file component. Its arguments should be ` + + `compiled away and passing it at runtime has no effect.`); + // implementation + function defineProps() { + { + warnRuntimeUsage(`defineProps`); + } + return null; + } + // implementation + function defineEmits() { + { + warnRuntimeUsage(`defineEmits`); + } + return null; + } + /** + * Vue `<script setup>` compiler macro for declaring a component's exposed + * instance properties when it is accessed by a parent component via template + * refs. + * + * `<script setup>` components are closed by default - i.e. variables inside + * the `<script setup>` scope is not exposed to parent unless explicitly exposed + * via `defineExpose`. + * + * This is only usable inside `<script setup>`, is compiled away in the + * output and should **not** be actually called at runtime. + */ + function defineExpose(exposed) { + { + warnRuntimeUsage(`defineExpose`); + } + } + /** + * Vue `<script setup>` compiler macro for providing props default values when + * using type-based `defineProps` declaration. + * + * Example usage: + * ```ts + * withDefaults(defineProps<{ + * size?: number + * labels?: string[] + * }>(), { + * size: 3, + * labels: () => ['default label'] + * }) + * ``` + * + * This is only usable inside `<script setup>`, is compiled away in the output + * and should **not** be actually called at runtime. + */ + function withDefaults(props, defaults) { + { + warnRuntimeUsage(`withDefaults`); + } + return null; + } + function useSlots() { + return getContext().slots; + } + function useAttrs() { + return getContext().attrs; + } + function getContext() { + const i = getCurrentInstance(); + if (!i) { + warn$1(`useContext() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); + } + /** + * Runtime helper for merging default declarations. Imported by compiled code + * only. + * @internal + */ + function mergeDefaults(raw, defaults) { + const props = isArray(raw) + ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {}) + : raw; + for (const key in defaults) { + const opt = props[key]; + if (opt) { + if (isArray(opt) || isFunction(opt)) { + props[key] = { type: opt, default: defaults[key] }; + } + else { + opt.default = defaults[key]; + } + } + else if (opt === null) { + props[key] = { default: defaults[key] }; + } + else { + warn$1(`props default key "${key}" has no corresponding declaration.`); + } + } + return props; + } + /** + * Used to create a proxy for the rest element when destructuring props with + * defineProps(). + * @internal + */ + function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; + } + /** + * `<script setup>` helper for persisting the current instance context over + * async/await flows. + * + * `@vue/compiler-sfc` converts the following: + * + * ```ts + * const x = await foo() + * ``` + * + * into: + * + * ```ts + * let __temp, __restore + * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp) + * ``` + * @internal + */ + function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!ctx) { + warn$1(`withAsyncContext called without active current instance. ` + + `This is likely a bug.`); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (isPromise(awaitable)) { + awaitable = awaitable.catch(e => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; + } + + // Actual implementation + function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (isObject(propsOrChildren) && !isArray(propsOrChildren)) { + // single vnode without props + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + // props without children + return createVNode(type, propsOrChildren); + } + else { + // omit props + return createVNode(type, null, propsOrChildren); + } + } + else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } + else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } + } + + const ssrContextKey = Symbol(`ssrContext` ); + const useSSRContext = () => { + { + warn$1(`useSSRContext() is not supported in the global build.`); + } + }; + + function initCustomFormatter() { + /* eslint-disable no-restricted-globals */ + if (typeof window === 'undefined') { + return; + } + const vueStyle = { style: 'color:#3ba776' }; + const numberStyle = { style: 'color:#0b1bc9' }; + const stringStyle = { style: 'color:#b62e24' }; + const keywordStyle = { style: 'color:#9d288c' }; + // custom formatter for Chrome + // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html + const formatter = { + header(obj) { + // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup + if (!isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ['div', vueStyle, `VueInstance`]; + } + else if (isRef(obj)) { + return [ + 'div', + {}, + ['span', vueStyle, genRefFlag(obj)], + '<', + formatValue(obj.value), + `>` + ]; + } + else if (isReactive(obj)) { + return [ + 'div', + {}, + ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'], + '<', + formatValue(obj), + `>${isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } + else if (isReadonly(obj)) { + return [ + 'div', + {}, + ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'], + '<', + formatValue(obj), + '>' + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + 'div', + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock('props', toRaw(instance.props))); + } + if (instance.setupState !== EMPTY_OBJ) { + blocks.push(createInstanceBlock('setup', instance.setupState)); + } + if (instance.data !== EMPTY_OBJ) { + blocks.push(createInstanceBlock('data', toRaw(instance.data))); + } + const computed = extractKeys(instance, 'computed'); + if (computed) { + blocks.push(createInstanceBlock('computed', computed)); + } + const injected = extractKeys(instance, 'inject'); + if (injected) { + blocks.push(createInstanceBlock('injected', injected)); + } + blocks.push([ + 'div', + {}, + [ + 'span', + { + style: keywordStyle.style + ';opacity:0.66' + }, + '$ (internal): ' + ], + ['object', { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = extend({}, target); + if (!Object.keys(target).length) { + return ['span', {}]; + } + return [ + 'div', + { style: 'line-height:1.25em;margin-bottom:0.6em' }, + [ + 'div', + { + style: 'color:#476582' + }, + type + ], + [ + 'div', + { + style: 'padding-left:1.25em' + }, + ...Object.keys(target).map(key => { + return [ + 'div', + {}, + ['span', keywordStyle, key + ': '], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === 'number') { + return ['span', numberStyle, v]; + } + else if (typeof v === 'string') { + return ['span', stringStyle, JSON.stringify(v)]; + } + else if (typeof v === 'boolean') { + return ['span', keywordStyle, v]; + } + else if (isObject(v)) { + return ['object', { object: asRaw ? toRaw(v) : v }]; + } + else { + return ['span', stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if ((isArray(opts) && opts.includes(key)) || + (isObject(opts) && key in opts)) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } + else { + window.devtoolsFormatters = [formatter]; + } + } + + function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + // shallow clone + ret.memo = memo.slice(); + return (cache[index] = ret); + } + function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (hasChanged(prev[i], memo[i])) { + return false; + } + } + // make sure to let parent block track it when returning cached + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; + } + + // Core API ------------------------------------------------------------------ + const version = "3.2.36"; + /** + * SSR utils for \@vue/server-renderer. Only exposed in cjs builds. + * @internal + */ + const ssrUtils = (null); + /** + * @internal only exposed in compat builds + */ + const resolveFilter = null; + /** + * @internal only exposed in compat builds. + */ + const compatUtils = (null); + + const svgNS = 'http://www.w3.org/2000/svg'; + const doc = (typeof document !== 'undefined' ? document : null); + const templateContainer = doc && /*#__PURE__*/ doc.createElement('template'); + const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: child => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, isSVG, is, props) => { + const el = isSVG + ? doc.createElementNS(svgNS, tag) + : doc.createElement(tag, is ? { is } : undefined); + if (tag === 'select' && props && props.multiple != null) { + el.setAttribute('multiple', props.multiple); + } + return el; + }, + createText: text => doc.createTextNode(text), + createComment: text => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: node => node.parentNode, + nextSibling: node => node.nextSibling, + querySelector: selector => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ''); + }, + cloneNode(el) { + const cloned = el.cloneNode(true); + // #3072 + // - in `patchDOMProp`, we store the actual value in the `el._value` property. + // - normally, elements using `:value` bindings will not be hoisted, but if + // the bound value is a constant, e.g. `:value="true"` - they do get + // hoisted. + // - in production, hoisted nodes are cloned when subsequent inserts, but + // cloneNode() does not copy the custom property we attached. + // - This may need to account for other custom DOM properties we attach to + // elements in addition to `_value` in the future. + if (`_value` in el) { + cloned._value = el._value; + } + return cloned; + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, isSVG, start, end) { + // <parent> before | first ... last | anchor </parent> + const before = anchor ? anchor.previousSibling : parent.lastChild; + // #5308 can only take cached path if: + // - has a single root node + // - nextSibling info is still available + if (start && (start === end || start.nextSibling)) { + // cached + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) + break; + } + } + else { + // fresh insert + templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content; + const template = templateContainer.content; + if (isSVG) { + // remove outer svg wrapper + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } + }; + + // compiler should normalize class + :class bindings on the same element + // into a single binding ['staticClass', dynamic] + function patchClass(el, value, isSVG) { + // directly setting className should be faster than setAttribute in theory + // if this is an element during a transition, take the temporary transition + // classes into account. + const transitionClasses = el._vtc; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' '); + } + if (value == null) { + el.removeAttribute('class'); + } + else if (isSVG) { + el.setAttribute('class', value); + } + else { + el.className = value; + } + } + + function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = isString(next); + if (next && !isCssString) { + for (const key in next) { + setStyle(style, key, next[key]); + } + if (prev && !isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ''); + } + } + } + } + else { + const currentDisplay = style.display; + if (isCssString) { + if (prev !== next) { + style.cssText = next; + } + } + else if (prev) { + el.removeAttribute('style'); + } + // indicates that the `display` of the element is controlled by `v-show`, + // so we always keep the current `display` value regardless of the `style` + // value, thus handing over control to `v-show`. + if ('_vod' in el) { + style.display = currentDisplay; + } + } + } + const importantRE = /\s*!important$/; + function setStyle(style, name, val) { + if (isArray(val)) { + val.forEach(v => setStyle(style, name, v)); + } + else { + if (val == null) + val = ''; + if (name.startsWith('--')) { + // custom property definition + style.setProperty(name, val); + } + else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + // !important + style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important'); + } + else { + style[prefixed] = val; + } + } + } + } + const prefixes = ['Webkit', 'Moz', 'ms']; + const prefixCache = {}; + function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = camelize(rawName); + if (name !== 'filter' && name in style) { + return (prefixCache[rawName] = name); + } + name = capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return (prefixCache[rawName] = prefixed); + } + } + return rawName; + } + + const xlinkNS = 'http://www.w3.org/1999/xlink'; + function patchAttr(el, key, value, isSVG, instance) { + if (isSVG && key.startsWith('xlink:')) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } + else { + el.setAttributeNS(xlinkNS, key, value); + } + } + else { + // note we are only checking boolean attributes that don't have a + // corresponding dom prop of the same name here. + const isBoolean = isSpecialBooleanAttr(key); + if (value == null || (isBoolean && !includeBooleanAttr(value))) { + el.removeAttribute(key); + } + else { + el.setAttribute(key, isBoolean ? '' : value); + } + } + } + + // __UNSAFE__ + // functions. The user is responsible for using them with only trusted content. + function patchDOMProp(el, key, value, + // the following args are passed only due to potential innerHTML/textContent + // overriding existing VNodes, in which case the old tree must be properly + // unmounted. + prevChildren, parentComponent, parentSuspense, unmountChildren) { + if (key === 'innerHTML' || key === 'textContent') { + if (prevChildren) { + unmountChildren(prevChildren, parentComponent, parentSuspense); + } + el[key] = value == null ? '' : value; + return; + } + if (key === 'value' && + el.tagName !== 'PROGRESS' && + // custom elements may use _value internally + !el.tagName.includes('-')) { + // store value as _value as well since + // non-string values will be stringified. + el._value = value; + const newValue = value == null ? '' : value; + if (el.value !== newValue || + // #4956: always set for OPTION elements because its value falls back to + // textContent if no value attribute is present. And setting .value for + // OPTION has no side effect + el.tagName === 'OPTION') { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + return; + } + let needRemove = false; + if (value === '' || value == null) { + const type = typeof el[key]; + if (type === 'boolean') { + // e.g. <select multiple> compiles to { multiple: '' } + value = includeBooleanAttr(value); + } + else if (value == null && type === 'string') { + // e.g. <div :id="null"> + value = ''; + needRemove = true; + } + else if (type === 'number') { + // e.g. <img :width="null"> + // the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error + value = 0; + needRemove = true; + } + } + // some properties perform value validation and throw, + // some properties has getter, no setter, will error in 'use strict' + // eg. <select :type="null"></select> <select :willValidate="null"></select> + try { + el[key] = value; + } + catch (e) { + { + warn$1(`Failed setting prop "${key}" on <${el.tagName.toLowerCase()}>: ` + + `value ${value} is invalid.`, e); + } + } + needRemove && el.removeAttribute(key); + } + + // Async edge case fix requires storing an event listener's attach timestamp. + const [_getNow, skipTimestampCheck] = /*#__PURE__*/ (() => { + let _getNow = Date.now; + let skipTimestampCheck = false; + if (typeof window !== 'undefined') { + // Determine what event timestamp the browser is using. Annoyingly, the + // timestamp can either be hi-res (relative to page load) or low-res + // (relative to UNIX epoch), so in order to compare time we have to use the + // same timestamp type when saving the flush timestamp. + if (Date.now() > document.createEvent('Event').timeStamp) { + // if the low-res timestamp which is bigger than the event timestamp + // (which is evaluated AFTER) it means the event is using a hi-res timestamp, + // and we need to use the hi-res version for event listeners as well. + _getNow = performance.now.bind(performance); + } + // #3485: Firefox <= 53 has incorrect Event.timeStamp implementation + // and does not fire microtasks in between event propagation, so safe to exclude. + const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i); + skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53); + } + return [_getNow, skipTimestampCheck]; + })(); + // To avoid the overhead of repeatedly calling performance.now(), we cache + // and use the same timestamp for all event listeners attached in the same tick. + let cachedNow = 0; + const p = /*#__PURE__*/ Promise.resolve(); + const reset = () => { + cachedNow = 0; + }; + const getNow = () => cachedNow || (p.then(reset), (cachedNow = _getNow())); + function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); + } + function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); + } + function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + // vei = vue event invokers + const invokers = el._vei || (el._vei = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + // patch + existingInvoker.value = nextValue; + } + else { + const [name, options] = parseName(rawName); + if (nextValue) { + // add + const invoker = (invokers[rawName] = createInvoker(nextValue, instance)); + addEventListener(el, name, invoker, options); + } + else if (existingInvoker) { + // remove + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = undefined; + } + } + } + const optionsModifierRE = /(?:Once|Passive|Capture)$/; + function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while ((m = name.match(optionsModifierRE))) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + return [hyphenate(name.slice(2)), options]; + } + function createInvoker(initialValue, instance) { + const invoker = (e) => { + // async edge case #6566: inner click event triggers patch, event handler + // attached to outer element during patch, and triggered again. This + // happens because browsers fire microtask ticks between event propagation. + // the solution is simple: we save the timestamp when a handler is attached, + // and the handler would only fire if the event passed to it was fired + // AFTER it was attached. + const timeStamp = e.timeStamp || _getNow(); + if (skipTimestampCheck || timeStamp >= invoker.attached - 1) { + callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* NATIVE_EVENT_HANDLER */, [e]); + } + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; + } + function patchStopImmediatePropagation(e, value) { + if (isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map(fn => (e) => !e._stopped && fn && fn(e)); + } + else { + return value; + } + } + + const nativeOnRE = /^on[a-z]/; + const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { + if (key === 'class') { + patchClass(el, nextValue, isSVG); + } + else if (key === 'style') { + patchStyle(el, prevValue, nextValue); + } + else if (isOn(key)) { + // ignore v-model listeners + if (!isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } + else if (key[0] === '.' + ? ((key = key.slice(1)), true) + : key[0] === '^' + ? ((key = key.slice(1)), false) + : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren); + } + else { + // special case for <input v-model type="checkbox"> with + // :true-value & :false-value + // store value as dom properties since non-string values will be + // stringified. + if (key === 'true-value') { + el._trueValue = nextValue; + } + else if (key === 'false-value') { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } + }; + function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + // most keys must be set as attribute on svg elements to work + // ...except innerHTML & textContent + if (key === 'innerHTML' || key === 'textContent') { + return true; + } + // or native onclick with function values + if (key in el && nativeOnRE.test(key) && isFunction(value)) { + return true; + } + return false; + } + // these are enumerated attrs, however their corresponding DOM properties + // are actually booleans - this leads to setting it with a string "false" + // value leading it to be coerced to `true`, so we need to always treat + // them as attributes. + // Note that `contentEditable` doesn't have this problem: its DOM + // property is also enumerated string values. + if (key === 'spellcheck' || key === 'draggable' || key === 'translate') { + return false; + } + // #1787, #2840 form property on form elements is readonly and must be set as + // attribute. + if (key === 'form') { + return false; + } + // #1526 <input list> must be set as attribute + if (key === 'list' && el.tagName === 'INPUT') { + return false; + } + // #2766 <textarea type> must be set as attribute + if (key === 'type' && el.tagName === 'TEXTAREA') { + return false; + } + // native onclick with string value, must be set as attribute + if (nativeOnRE.test(key) && isString(value)) { + return false; + } + return key in el; + } + + function defineCustomElement(options, hydrate) { + const Comp = defineComponent(options); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, hydrate); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; + } + const defineSSRCustomElement = ((options) => { + // @ts-ignore + return defineCustomElement(options, hydrate); + }); + const BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class { + }); + class VueElement extends BaseClass { + constructor(_def, _props = {}, hydrate) { + super(); + this._def = _def; + this._props = _props; + /** + * @internal + */ + this._instance = null; + this._connected = false; + this._resolved = false; + this._numberProps = null; + if (this.shadowRoot && hydrate) { + hydrate(this._createVNode(), this.shadowRoot); + } + else { + if (this.shadowRoot) { + warn$1(`Custom element has pre-rendered declarative shadow root but is not ` + + `defined as hydratable. Use \`defineSSRCustomElement\`.`); + } + this.attachShadow({ mode: 'open' }); + } + } + connectedCallback() { + this._connected = true; + if (!this._instance) { + this._resolveDef(); + } + } + disconnectedCallback() { + this._connected = false; + nextTick(() => { + if (!this._connected) { + render(null, this.shadowRoot); + this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._resolved) { + return; + } + this._resolved = true; + // set initial attrs + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + // watch future attr changes + new MutationObserver(mutations => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }).observe(this, { attributes: true }); + const resolve = (def) => { + const { props, styles } = def; + const hasOptions = !isArray(props); + const rawKeys = props ? (hasOptions ? Object.keys(props) : props) : []; + // cast Number-type props set before resolve + let numberProps; + if (hasOptions) { + for (const key in this._props) { + const opt = props[key]; + if (opt === Number || (opt && opt.type === Number)) { + this._props[key] = toNumber(this._props[key]); + (numberProps || (numberProps = Object.create(null)))[key] = true; + } + } + } + this._numberProps = numberProps; + // check if there are props set pre-upgrade or connect + for (const key of Object.keys(this)) { + if (key[0] !== '_') { + this._setProp(key, this[key], true, false); + } + } + // defining getter/setters on prototype + for (const key of rawKeys.map(camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val); + } + }); + } + // apply CSS + this._applyStyles(styles); + // initial render + this._update(); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + asyncDef().then(resolve); + } + else { + resolve(this._def); + } + } + _setAttr(key) { + let value = this.getAttribute(key); + if (this._numberProps && this._numberProps[key]) { + value = toNumber(value); + } + this._setProp(camelize(key), value, false); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = true) { + if (val !== this._props[key]) { + this._props[key] = val; + if (shouldUpdate && this._instance) { + this._update(); + } + // reflect + if (shouldReflect) { + if (val === true) { + this.setAttribute(hyphenate(key), ''); + } + else if (typeof val === 'string' || typeof val === 'number') { + this.setAttribute(hyphenate(key), val + ''); + } + else if (!val) { + this.removeAttribute(hyphenate(key)); + } + } + } + } + _update() { + render(this._createVNode(), this.shadowRoot); + } + _createVNode() { + const vnode = createVNode(this._def, extend({}, this._props)); + if (!this._instance) { + vnode.ce = instance => { + this._instance = instance; + instance.isCE = true; + // HMR + { + instance.ceReload = newStyles => { + // always reset styles + if (this._styles) { + this._styles.forEach(s => this.shadowRoot.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + // if this is an async component, ceReload is called from the inner + // component so no need to reload the async wrapper + if (!this._def.__asyncLoader) { + // reload + this._instance = null; + this._update(); + } + }; + } + // intercept emit + instance.emit = (event, ...args) => { + this.dispatchEvent(new CustomEvent(event, { + detail: args + })); + }; + // locate nearest Vue custom element parent for provide/inject + let parent = this; + while ((parent = + parent && (parent.parentNode || parent.host))) { + if (parent instanceof VueElement) { + instance.parent = parent._instance; + break; + } + } + }; + } + return vnode; + } + _applyStyles(styles) { + if (styles) { + styles.forEach(css => { + const s = document.createElement('style'); + s.textContent = css; + this.shadowRoot.appendChild(s); + // record for HMR + { + (this._styles || (this._styles = [])).push(s); + } + }); + } + } + } + + function useCssModule(name = '$style') { + /* istanbul ignore else */ + { + { + warn$1(`useCssModule() is not supported in the global build.`); + } + return EMPTY_OBJ; + } + } + + /** + * Runtime helper for SFC's CSS variable injection feature. + * @private + */ + function useCssVars(getter) { + const instance = getCurrentInstance(); + /* istanbul ignore next */ + if (!instance) { + warn$1(`useCssVars is called without current active component instance.`); + return; + } + const setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy)); + watchPostEffect(setVars); + onMounted(() => { + const ob = new MutationObserver(setVars); + ob.observe(instance.subTree.el.parentNode, { childList: true }); + onUnmounted(() => ob.disconnect()); + }); + } + function setVarsOnVNode(vnode, vars) { + if (vnode.shapeFlag & 128 /* SUSPENSE */) { + const suspense = vnode.suspense; + vnode = suspense.activeBranch; + if (suspense.pendingBranch && !suspense.isHydrating) { + suspense.effects.push(() => { + setVarsOnVNode(suspense.activeBranch, vars); + }); + } + } + // drill down HOCs until it's a non-component vnode + while (vnode.component) { + vnode = vnode.component.subTree; + } + if (vnode.shapeFlag & 1 /* ELEMENT */ && vnode.el) { + setVarsOnNode(vnode.el, vars); + } + else if (vnode.type === Fragment) { + vnode.children.forEach(c => setVarsOnVNode(c, vars)); + } + else if (vnode.type === Static) { + let { el, anchor } = vnode; + while (el) { + setVarsOnNode(el, vars); + if (el === anchor) + break; + el = el.nextSibling; + } + } + } + function setVarsOnNode(el, vars) { + if (el.nodeType === 1) { + const style = el.style; + for (const key in vars) { + style.setProperty(`--${key}`, vars[key]); + } + } + } + + const TRANSITION = 'transition'; + const ANIMATION = 'animation'; + // DOM Transition is a higher-order-component based on the platform-agnostic + // base Transition component, with DOM-specific logic. + const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots); + Transition.displayName = 'Transition'; + const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String + }; + const TransitionPropsValidators = (Transition.props = + /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators)); + /** + * #3227 Incoming hooks may be merged into arrays when wrapping Transition + * with custom HOCs. + */ + const callHook$1 = (hook, args = []) => { + if (isArray(hook)) { + hook.forEach(h => h(...args)); + } + else if (hook) { + hook(...args); + } + }; + /** + * Check if a hook expects a callback (2nd arg), which means the user + * intends to explicitly control the end of the transition. + */ + const hasExplicitCallback = (hook) => { + return hook + ? isArray(hook) + ? hook.some(h => h.length > 1) + : hook.length > 1 + : false; + }; + function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps; + const finishEnter = (el, isAppear, done) => { + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook$1(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return extend(baseProps, { + onBeforeEnter(el) { + callHook$1(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook$1(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + // force reflow so *-leave-from classes immediately take effect (#2593) + forceReflow(); + addTransitionClass(el, leaveActiveClass); + nextFrame(() => { + if (!el._isLeaving) { + // cancelled + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook$1(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false); + callHook$1(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true); + callHook$1(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook$1(onLeaveCancelled, [el]); + } + }); + } + function normalizeDuration(duration) { + if (duration == null) { + return null; + } + else if (isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } + else { + const n = NumberOf(duration); + return [n, n]; + } + } + function NumberOf(val) { + const res = toNumber(val); + validateDuration(res); + return res; + } + function validateDuration(val) { + if (typeof val !== 'number') { + warn$1(`<transition> explicit duration is not a valid number - ` + + `got ${JSON.stringify(val)}.`); + } + else if (isNaN(val)) { + warn$1(`<transition> explicit duration is NaN - ` + + 'the duration expression might be incorrect.'); + } + } + function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach(c => c && el.classList.add(c)); + (el._vtc || + (el._vtc = new Set())).add(cls); + } + function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach(c => c && el.classList.remove(c)); + const { _vtc } = el; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el._vtc = undefined; + } + } + } + function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); + } + let endId = 0; + function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = (el._endId = ++endId); + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + 'end'; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); + } + function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + // JSDOM may return undefined for transition properties + const getStyleProperties = (key) => (styles[key] || '').split(', '); + const transitionDelays = getStyleProperties(TRANSITION + 'Delay'); + const transitionDurations = getStyleProperties(TRANSITION + 'Duration'); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(ANIMATION + 'Delay'); + const animationDurations = getStyleProperties(ANIMATION + 'Duration'); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + /* istanbul ignore if */ + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } + else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } + else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = + timeout > 0 + ? transitionTimeout > animationTimeout + ? TRANSITION + : ANIMATION + : null; + propCount = type + ? type === TRANSITION + ? transitionDurations.length + : animationDurations.length + : 0; + } + const hasTransform = type === TRANSITION && + /\b(transform|all)(,|$)/.test(styles[TRANSITION + 'Property']); + return { + type, + timeout, + propCount, + hasTransform + }; + } + function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); + } + // Old versions of Chromium (below 61.0.3163.100) formats floating pointer + // numbers in a locale-dependent way, using a comma instead of a dot. + // If comma is not replaced with a dot, the input will be rounded down + // (i.e. acting as a floor function) causing unexpected behaviors + function toMs(s) { + return Number(s.slice(0, -1).replace(',', '.')) * 1000; + } + // synchronously force layout to put elements into a certain state + function forceReflow() { + return document.body.offsetHeight; + } + + const positionMap = new WeakMap(); + const newPositionMap = new WeakMap(); + const TransitionGroupImpl = { + name: 'TransitionGroup', + props: /*#__PURE__*/ extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevChildren; + let children; + onUpdated(() => { + // children is guaranteed to exist after initial render + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || 'v'}-move`; + if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) { + return; + } + // we divide the work into three loops to avoid mixing DOM reads and writes + // in each iteration - which helps prevent layout thrashing. + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + // force reflow to put everything in position + forceReflow(); + movedChildren.forEach(c => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ''; + const cb = (el._moveCb = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener('transitionend', cb); + el._moveCb = null; + removeTransitionClass(el, moveClass); + } + }); + el.addEventListener('transitionend', cb); + }); + }); + return () => { + const rawProps = toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || Fragment; + prevChildren = children; + children = slots.default ? getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance)); + } + else { + warn$1(`<TransitionGroup> children must be keyed.`); + } + } + if (prevChildren) { + for (let i = 0; i < prevChildren.length; i++) { + const child = prevChildren[i]; + setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance)); + positionMap.set(child, child.el.getBoundingClientRect()); + } + } + return createVNode(tag, null, children); + }; + } + }; + const TransitionGroup = TransitionGroupImpl; + function callPendingCbs(c) { + const el = c.el; + if (el._moveCb) { + el._moveCb(); + } + if (el._enterCb) { + el._enterCb(); + } + } + function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); + } + function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = '0s'; + return c; + } + } + function hasCSSTransform(el, root, moveClass) { + // Detect whether an element with the move class applied has + // CSS transitions. Since the element may be inside an entering + // transition at this very moment, we make a clone of it and remove + // all other transition classes applied to ensure only the move class + // is applied. + const clone = el.cloneNode(); + if (el._vtc) { + el._vtc.forEach(cls => { + cls.split(/\s+/).forEach(c => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach(c => c && clone.classList.add(c)); + clone.style.display = 'none'; + const container = (root.nodeType === 1 ? root : root.parentNode); + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; + } + + const getModelAssigner = (vnode) => { + const fn = vnode.props['onUpdate:modelValue'] || + (false ); + return isArray(fn) ? value => invokeArrayFns(fn, value) : fn; + }; + function onCompositionStart(e) { + e.target.composing = true; + } + function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event('input')); + } + } + // We are exporting the v-model runtime directly as vnode hooks so that it can + // be tree-shaken in case v-model is never used. + const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el._assign = getModelAssigner(vnode); + const castToNumber = number || (vnode.props && vnode.props.type === 'number'); + addEventListener(el, lazy ? 'change' : 'input', e => { + if (e.target.composing) + return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = toNumber(domValue); + } + el._assign(domValue); + }); + if (trim) { + addEventListener(el, 'change', () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, 'compositionstart', onCompositionStart); + addEventListener(el, 'compositionend', onCompositionEnd); + // Safari < 10.2 & UIWebView doesn't fire compositionend when + // switching focus before confirming composition choice + // this also fixes the issue where some browsers e.g. iOS Chrome + // fires "change" instead of "input" on autocomplete. + addEventListener(el, 'change', onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? '' : value; + }, + beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { + el._assign = getModelAssigner(vnode); + // avoid clearing unresolved text. #2302 + if (el.composing) + return; + if (document.activeElement === el && el.type !== 'range') { + if (lazy) { + return; + } + if (trim && el.value.trim() === value) { + return; + } + if ((number || el.type === 'number') && toNumber(el.value) === value) { + return; + } + } + const newValue = value == null ? '' : value; + if (el.value !== newValue) { + el.value = newValue; + } + } + }; + const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el._assign = getModelAssigner(vnode); + addEventListener(el, 'change', () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el._assign; + if (isArray(modelValue)) { + const index = looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } + else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } + else if (isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } + else { + cloned.delete(elementValue); + } + assign(cloned); + } + else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el._assign = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } + }; + function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + if (isArray(value)) { + el.checked = looseIndexOf(value, vnode.props.value) > -1; + } + else if (isSet(value)) { + el.checked = value.has(vnode.props.value); + } + else if (value !== oldValue) { + el.checked = looseEqual(value, getCheckboxValue(el, true)); + } + } + const vModelRadio = { + created(el, { value }, vnode) { + el.checked = looseEqual(value, vnode.props.value); + el._assign = getModelAssigner(vnode); + addEventListener(el, 'change', () => { + el._assign(getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el._assign = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = looseEqual(value, vnode.props.value); + } + } + }; + const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = isSet(value); + addEventListener(el, 'change', () => { + const selectedVal = Array.prototype.filter + .call(el.options, (o) => o.selected) + .map((o) => number ? toNumber(getValue(o)) : getValue(o)); + el._assign(el.multiple + ? isSetModel + ? new Set(selectedVal) + : selectedVal + : selectedVal[0]); + }); + el._assign = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el._assign = getModelAssigner(vnode); + }, + updated(el, { value }) { + setSelected(el, value); + } + }; + function setSelected(el, value) { + const isMultiple = el.multiple; + if (isMultiple && !isArray(value) && !isSet(value)) { + warn$1(`<select multiple v-model> expects an Array or Set value for its binding, ` + + `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArray(value)) { + option.selected = looseIndexOf(value, optionValue) > -1; + } + else { + option.selected = value.has(optionValue); + } + } + else { + if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) + el.selectedIndex = i; + return; + } + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } + } + // retrieve raw value set via :value bindings + function getValue(el) { + return '_value' in el ? el._value : el.value; + } + // retrieve raw value for true-value and false-value set via :true-value or :false-value bindings + function getCheckboxValue(el, checked) { + const key = checked ? '_trueValue' : '_falseValue'; + return key in el ? el[key] : checked; + } + const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, 'created'); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, 'mounted'); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate'); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, 'updated'); + } + }; + function resolveDynamicModel(tagName, type) { + switch (tagName) { + case 'SELECT': + return vModelSelect; + case 'TEXTAREA': + return vModelText; + default: + switch (type) { + case 'checkbox': + return vModelCheckbox; + case 'radio': + return vModelRadio; + default: + return vModelText; + } + } + } + function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); + } + + const systemModifiers = ['ctrl', 'shift', 'alt', 'meta']; + const modifierGuards = { + stop: e => e.stopPropagation(), + prevent: e => e.preventDefault(), + self: e => e.target !== e.currentTarget, + ctrl: e => !e.ctrlKey, + shift: e => !e.shiftKey, + alt: e => !e.altKey, + meta: e => !e.metaKey, + left: e => 'button' in e && e.button !== 0, + middle: e => 'button' in e && e.button !== 1, + right: e => 'button' in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m)) + }; + /** + * @private + */ + const withModifiers = (fn, modifiers) => { + return (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) + return; + } + return fn(event, ...args); + }; + }; + // Kept for 2.x compat. + // Note: IE11 compat for `spacebar` and `del` is removed for now. + const keyNames = { + esc: 'escape', + space: ' ', + up: 'arrow-up', + left: 'arrow-left', + right: 'arrow-right', + down: 'arrow-down', + delete: 'backspace' + }; + /** + * @private + */ + const withKeys = (fn, modifiers) => { + return (event) => { + if (!('key' in event)) { + return; + } + const eventKey = hyphenate(event.key); + if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) { + return fn(event); + } + }; + }; + + const vShow = { + beforeMount(el, { value }, { transition }) { + el._vod = el.style.display === 'none' ? '' : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } + else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) + return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } + else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } + else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } + }; + function setDisplay(el, value) { + el.style.display = value ? el._vod : 'none'; + } + + const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps); + // lazy create the renderer - this makes core renderer logic tree-shakable + // in case the user only imports reactivity utilities from Vue. + let renderer; + let enabledHydration = false; + function ensureRenderer() { + return (renderer || + (renderer = createRenderer(rendererOptions))); + } + function ensureHydrationRenderer() { + renderer = enabledHydration + ? renderer + : createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; + } + // use explicit type casts here to avoid import() calls in rolled-up d.ts + const render = ((...args) => { + ensureRenderer().render(...args); + }); + const hydrate = ((...args) => { + ensureHydrationRenderer().hydrate(...args); + }); + const createApp = ((...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) + return; + const component = app._component; + if (!isFunction(component) && !component.render && !component.template) { + // __UNSAFE__ + // Reason: potential execution of JS expressions in in-DOM template. + // The user must make sure the in-DOM template is trusted. If it's + // rendered by the server, the template should not contain any user data. + component.template = container.innerHTML; + } + // clear content before mounting + container.innerHTML = ''; + const proxy = mount(container, false, container instanceof SVGElement); + if (container instanceof Element) { + container.removeAttribute('v-cloak'); + container.setAttribute('data-v-app', ''); + } + return proxy; + }; + return app; + }); + const createSSRApp = ((...args) => { + const app = ensureHydrationRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, container instanceof SVGElement); + } + }; + return app; + }); + function injectNativeTagCheck(app) { + // Inject `isNativeTag` + // this is used for component name validation (dev only) + Object.defineProperty(app.config, 'isNativeTag', { + value: (tag) => isHTMLTag(tag) || isSVGTag(tag), + writable: false + }); + } + // dev only + function injectCompilerOptionsCheck(app) { + if (isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, 'isCustomElement', { + get() { + return isCustomElement; + }, + set() { + warn$1(`The \`isCustomElement\` config option is deprecated. Use ` + + `\`compilerOptions.isCustomElement\` instead.`); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using ` + + `a build of Vue.js that includes the runtime compiler (aka "full build"). ` + + `Since you are using the runtime-only build, \`compilerOptions\` ` + + `must be passed to \`@vue/compiler-dom\` in the build setup instead.\n` + + `- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option.\n` + + `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n` + + `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`; + Object.defineProperty(app.config, 'compilerOptions', { + get() { + warn$1(msg); + return compilerOptions; + }, + set() { + warn$1(msg); + } + }); + } + } + function normalizeContainer(container) { + if (isString(container)) { + const res = document.querySelector(container); + if (!res) { + warn$1(`Failed to mount app: mount target selector "${container}" returned null.`); + } + return res; + } + if (window.ShadowRoot && + container instanceof window.ShadowRoot && + container.mode === 'closed') { + warn$1(`mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`); + } + return container; + } + /** + * @internal + */ + const initDirectivesForSSR = NOOP; + + function initDev() { + { + { + console.info(`You are running a development build of Vue.\n` + + `Make sure to use the production build (*.prod.js) when deploying for production.`); + } + initCustomFormatter(); + } + } + + function defaultOnError(error) { + throw error; + } + function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); + } + function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) + ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; + } + const errorMessages = { + // parse errors + [0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */]: 'Illegal comment.', + [1 /* CDATA_IN_HTML_CONTENT */]: 'CDATA section is allowed only in XML context.', + [2 /* DUPLICATE_ATTRIBUTE */]: 'Duplicate attribute.', + [3 /* END_TAG_WITH_ATTRIBUTES */]: 'End tag cannot have attributes.', + [4 /* END_TAG_WITH_TRAILING_SOLIDUS */]: "Illegal '/' in tags.", + [5 /* EOF_BEFORE_TAG_NAME */]: 'Unexpected EOF in tag.', + [6 /* EOF_IN_CDATA */]: 'Unexpected EOF in CDATA section.', + [7 /* EOF_IN_COMMENT */]: 'Unexpected EOF in comment.', + [8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */]: 'Unexpected EOF in script.', + [9 /* EOF_IN_TAG */]: 'Unexpected EOF in tag.', + [10 /* INCORRECTLY_CLOSED_COMMENT */]: 'Incorrectly closed comment.', + [11 /* INCORRECTLY_OPENED_COMMENT */]: 'Incorrectly opened comment.', + [12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */]: "Illegal tag name. Use '<' to print '<'.", + [13 /* MISSING_ATTRIBUTE_VALUE */]: 'Attribute value was expected.', + [14 /* MISSING_END_TAG_NAME */]: 'End tag name was expected.', + [15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */]: 'Whitespace was expected.', + [16 /* NESTED_COMMENT */]: "Unexpected '<!--' in comment.", + [17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */]: 'Attribute name cannot contain U+0022 ("), U+0027 (\'), and U+003C (<).', + [18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */]: 'Unquoted attribute value cannot contain U+0022 ("), U+0027 (\'), U+003C (<), U+003D (=), and U+0060 (`).', + [19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */]: "Attribute name cannot start with '='.", + [21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */]: "'<?' is allowed only in XML context.", + [20 /* UNEXPECTED_NULL_CHARACTER */]: `Unexpected null character.`, + [22 /* UNEXPECTED_SOLIDUS_IN_TAG */]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23 /* X_INVALID_END_TAG */]: 'Invalid end tag.', + [24 /* X_MISSING_END_TAG */]: 'Element is missing end tag.', + [25 /* X_MISSING_INTERPOLATION_END */]: 'Interpolation end sign was not found.', + [27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */]: 'End bracket for dynamic directive argument was not found. ' + + 'Note that dynamic directive argument cannot contain spaces.', + [26 /* X_MISSING_DIRECTIVE_NAME */]: 'Legal directive name was expected.', + // transform errors + [28 /* X_V_IF_NO_EXPRESSION */]: `v-if/v-else-if is missing expression.`, + [29 /* X_V_IF_SAME_KEY */]: `v-if/else branches must use unique keys.`, + [30 /* X_V_ELSE_NO_ADJACENT_IF */]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31 /* X_V_FOR_NO_EXPRESSION */]: `v-for is missing expression.`, + [32 /* X_V_FOR_MALFORMED_EXPRESSION */]: `v-for has invalid expression.`, + [33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */]: `<template v-for> key should be placed on the <template> tag.`, + [34 /* X_V_BIND_NO_EXPRESSION */]: `v-bind is missing expression.`, + [35 /* X_V_ON_NO_EXPRESSION */]: `v-on is missing expression.`, + [36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */]: `Unexpected custom directive on <slot> outlet.`, + [37 /* X_V_SLOT_MIXED_SLOT_USAGE */]: `Mixed v-slot usage on both the component and nested <template>.` + + `When there are multiple named slots, all slots should use <template> ` + + `syntax to avoid scope ambiguity.`, + [38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */]: `Duplicate slot names found. `, + [39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */]: `Extraneous children found when component already has explicitly named ` + + `default slot. These children will be ignored.`, + [40 /* X_V_SLOT_MISPLACED */]: `v-slot can only be used on components or <template> tags.`, + [41 /* X_V_MODEL_NO_EXPRESSION */]: `v-model is missing expression.`, + [42 /* X_V_MODEL_MALFORMED_EXPRESSION */]: `v-model value must be a valid JavaScript member expression.`, + [43 /* X_V_MODEL_ON_SCOPE_VARIABLE */]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44 /* X_INVALID_EXPRESSION */]: `Error parsing JavaScript expression: `, + [45 /* X_KEEP_ALIVE_INVALID_CHILDREN */]: `<KeepAlive> expects exactly one child component.`, + // generic errors + [46 /* X_PREFIX_ID_NOT_SUPPORTED */]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [47 /* X_MODULE_MODE_NOT_SUPPORTED */]: `ES module mode is not supported in this build of compiler.`, + [48 /* X_CACHE_HANDLER_NOT_SUPPORTED */]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [49 /* X_SCOPE_ID_NOT_SUPPORTED */]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [50 /* __EXTEND_POINT__ */]: `` + }; + + const FRAGMENT = Symbol(`Fragment` ); + const TELEPORT = Symbol(`Teleport` ); + const SUSPENSE = Symbol(`Suspense` ); + const KEEP_ALIVE = Symbol(`KeepAlive` ); + const BASE_TRANSITION = Symbol(`BaseTransition` ); + const OPEN_BLOCK = Symbol(`openBlock` ); + const CREATE_BLOCK = Symbol(`createBlock` ); + const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` ); + const CREATE_VNODE = Symbol(`createVNode` ); + const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` ); + const CREATE_COMMENT = Symbol(`createCommentVNode` ); + const CREATE_TEXT = Symbol(`createTextVNode` ); + const CREATE_STATIC = Symbol(`createStaticVNode` ); + const RESOLVE_COMPONENT = Symbol(`resolveComponent` ); + const RESOLVE_DYNAMIC_COMPONENT = Symbol(`resolveDynamicComponent` ); + const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` ); + const RESOLVE_FILTER = Symbol(`resolveFilter` ); + const WITH_DIRECTIVES = Symbol(`withDirectives` ); + const RENDER_LIST = Symbol(`renderList` ); + const RENDER_SLOT = Symbol(`renderSlot` ); + const CREATE_SLOTS = Symbol(`createSlots` ); + const TO_DISPLAY_STRING = Symbol(`toDisplayString` ); + const MERGE_PROPS = Symbol(`mergeProps` ); + const NORMALIZE_CLASS = Symbol(`normalizeClass` ); + const NORMALIZE_STYLE = Symbol(`normalizeStyle` ); + const NORMALIZE_PROPS = Symbol(`normalizeProps` ); + const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` ); + const TO_HANDLERS = Symbol(`toHandlers` ); + const CAMELIZE = Symbol(`camelize` ); + const CAPITALIZE = Symbol(`capitalize` ); + const TO_HANDLER_KEY = Symbol(`toHandlerKey` ); + const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` ); + const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); + const POP_SCOPE_ID = Symbol(`popScopeId` ); + const WITH_CTX = Symbol(`withCtx` ); + const UNREF = Symbol(`unref` ); + const IS_REF = Symbol(`isRef` ); + const WITH_MEMO = Symbol(`withMemo` ); + const IS_MEMO_SAME = Symbol(`isMemoSame` ); + // Name mapping for runtime helpers that need to be imported from 'vue' in + // generated code. Make sure these are correctly exported in the runtime! + // Using `any` here because TS doesn't allow symbols as index type. + const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` + }; + function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach(s => { + helperNameMap[s] = helpers[s]; + }); + } + + // AST Utilities --------------------------------------------------------------- + // Some expressions, e.g. sequence and conditional expressions, are never + // associated with template nodes, so their source locations are just a stub. + // Container types like CompoundExpression also don't need a real location. + const locStub = { + source: '', + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 } + }; + function createRoot(children, loc = locStub) { + return { + type: 0 /* ROOT */, + children, + helpers: [], + components: [], + directives: [], + hoists: [], + imports: [], + cached: 0, + temps: 0, + codegenNode: undefined, + loc + }; + } + function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } + else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13 /* VNODE_CALL */, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; + } + function createArrayExpression(elements, loc = locStub) { + return { + type: 17 /* JS_ARRAY_EXPRESSION */, + loc, + elements + }; + } + function createObjectExpression(properties, loc = locStub) { + return { + type: 15 /* JS_OBJECT_EXPRESSION */, + loc, + properties + }; + } + function createObjectProperty(key, value) { + return { + type: 16 /* JS_PROPERTY */, + loc: locStub, + key: isString(key) ? createSimpleExpression(key, true) : key, + value + }; + } + function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0 /* NOT_CONSTANT */) { + return { + type: 4 /* SIMPLE_EXPRESSION */, + loc, + content, + isStatic, + constType: isStatic ? 3 /* CAN_STRINGIFY */ : constType + }; + } + function createCompoundExpression(children, loc = locStub) { + return { + type: 8 /* COMPOUND_EXPRESSION */, + loc, + children + }; + } + function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14 /* JS_CALL_EXPRESSION */, + loc, + callee, + arguments: args + }; + } + function createFunctionExpression(params, returns = undefined, newline = false, isSlot = false, loc = locStub) { + return { + type: 18 /* JS_FUNCTION_EXPRESSION */, + params, + returns, + newline, + isSlot, + loc + }; + } + function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19 /* JS_CONDITIONAL_EXPRESSION */, + test, + consequent, + alternate, + newline, + loc: locStub + }; + } + function createCacheExpression(index, value, isVNode = false) { + return { + type: 20 /* JS_CACHE_EXPRESSION */, + index, + value, + isVNode, + loc: locStub + }; + } + function createBlockStatement(body) { + return { + type: 21 /* JS_BLOCK_STATEMENT */, + body, + loc: locStub + }; + } + + const isStaticExp = (p) => p.type === 4 /* SIMPLE_EXPRESSION */ && p.isStatic; + const isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected); + function isCoreComponent(tag) { + if (isBuiltInType(tag, 'Teleport')) { + return TELEPORT; + } + else if (isBuiltInType(tag, 'Suspense')) { + return SUSPENSE; + } + else if (isBuiltInType(tag, 'KeepAlive')) { + return KEEP_ALIVE; + } + else if (isBuiltInType(tag, 'BaseTransition')) { + return BASE_TRANSITION; + } + } + const nonIdentifierRE = /^\d|[^\$\w]/; + const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); + const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; + const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; + const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; + /** + * Simple lexer to check if an expression is a member expression. This is + * lax and only checks validity at the root level (i.e. does not validate exps + * inside square brackets), but it's ok since these are only used on template + * expressions and false positives are invalid expressions in the first place. + */ + const isMemberExpressionBrowser = (path) => { + // remove whitespaces around . or [ first + path = path.trim().replace(whitespaceRE, s => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === '[') { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } + else if (char === '(') { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } + else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === '`') { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } + else if (char === `[`) { + currentOpenBracketCount++; + } + else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === '`') { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } + else if (char === `(`) { + currentOpenParensCount++; + } + else if (char === `)`) { + // if the exp ends as a call then it should not be considered valid + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; + }; + const isMemberExpression = isMemberExpressionBrowser + ; + function getInnerRange(loc, offset, length) { + const source = loc.source.slice(offset, offset + length); + const newLoc = { + source, + start: advancePositionWithClone(loc.start, loc.source, offset), + end: loc.end + }; + if (length != null) { + newLoc.end = advancePositionWithClone(loc.start, loc.source, offset + length); + } + return newLoc; + } + function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation(extend({}, pos), source, numberOfCharacters); + } + // advance by mutation without cloning (for performance reasons), since this + // gets called a lot in the parser + function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10 /* newline char code */) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = + lastNewLinePos === -1 + ? pos.column + numberOfCharacters + : numberOfCharacters - lastNewLinePos; + return pos; + } + function assert(condition, msg) { + /* istanbul ignore if */ + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } + } + function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 /* DIRECTIVE */ && + (allowEmpty || p.exp) && + (isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } + } + function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6 /* ATTRIBUTE */) { + if (dynamicOnly) + continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } + else if (p.name === 'bind' && + (p.exp || allowEmpty) && + isStaticArgOf(p.arg, name)) { + return p; + } + } + } + function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); + } + function hasDynamicKeyVBind(node) { + return node.props.some(p => p.type === 7 /* DIRECTIVE */ && + p.name === 'bind' && + (!p.arg || // v-bind="obj" + p.arg.type !== 4 /* SIMPLE_EXPRESSION */ || // v-bind:[_ctx.foo] + !p.arg.isStatic) // v-bind:[foo] + ); + } + function isText(node) { + return node.type === 5 /* INTERPOLATION */ || node.type === 2 /* TEXT */; + } + function isVSlot(p) { + return p.type === 7 /* DIRECTIVE */ && p.name === 'slot'; + } + function isTemplateNode(node) { + return (node.type === 1 /* ELEMENT */ && node.tagType === 3 /* TEMPLATE */); + } + function isSlotOutlet(node) { + return node.type === 1 /* ELEMENT */ && node.tagType === 2 /* SLOT */; + } + function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; + } + function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; + } + const propsHelperSet = new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); + function getUnnormalizedProps(props, callPath = []) { + if (props && + !isString(props) && + props.type === 14 /* JS_CALL_EXPRESSION */) { + const callee = props.callee; + if (!isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps(props.arguments[0], callPath.concat(props)); + } + } + return [props, callPath]; + } + function injectProp(node, prop, context) { + let propsWithInjection; + /** + * 1. mergeProps(...) + * 2. toHandlers(...) + * 3. normalizeProps(...) + * 4. normalizeProps(guardReactiveProps(...)) + * + * we need to get the real props before normalization + */ + let props = node.type === 13 /* VNODE_CALL */ ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && + !isString(props) && + props.type === 14 /* JS_CALL_EXPRESSION */) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } + else if (props.type === 14 /* JS_CALL_EXPRESSION */) { + // merged props... add ours + // only inject key to object literal if it's the first argument so that + // if doesn't override user provided keys + const first = props.arguments[0]; + if (!isString(first) && first.type === 15 /* JS_OBJECT_EXPRESSION */) { + first.properties.unshift(prop); + } + else { + if (props.callee === TO_HANDLERS) { + // #2366 + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } + else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } + else if (props.type === 15 /* JS_OBJECT_EXPRESSION */) { + let alreadyExists = false; + // check existing key to avoid overriding user provided keys + if (prop.key.type === 4 /* SIMPLE_EXPRESSION */) { + const propKeyName = prop.key.content; + alreadyExists = props.properties.some(p => p.key.type === 4 /* SIMPLE_EXPRESSION */ && + p.key.content === propKeyName); + } + if (!alreadyExists) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } + else { + // single v-bind with expression, return a merged replacement + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(props))`, + // it will be rewritten as `normalizeProps(mergeProps({ key: 0 }, props))`, + // the `guardReactiveProps` will no longer be needed + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13 /* VNODE_CALL */) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } + else { + node.props = propsWithInjection; + } + } + else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } + else { + node.arguments[2] = propsWithInjection; + } + } + } + function toValidAssetId(name, type) { + // see issue#4422, we need adding identifier on validAssetId if variable `name` has specific character + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === '-' ? '_' : name.charCodeAt(replaceValue).toString(); + })}`; + } + function getMemoedVNodeCall(node) { + if (node.type === 14 /* JS_CALL_EXPRESSION */ && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } + else { + return node; + } + } + function makeBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } + } + + const deprecationData = { + ["COMPILER_IS_ON_ELEMENT" /* COMPILER_IS_ON_ELEMENT */]: { + message: `Platform-native elements with "is" prop will no longer be ` + + `treated as components in Vue 3 unless the "is" value is explicitly ` + + `prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: { + message: key => `.sync modifier for v-bind has been removed. Use v-model with ` + + `argument instead. \`v-bind:${key}.sync\` should be changed to ` + + `\`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: { + message: `.prop modifier for v-bind has been removed and no longer necessary. ` + + `Vue 3 will automatically set a binding as DOM property when appropriate.` + }, + ["COMPILER_V_BIND_OBJECT_ORDER" /* COMPILER_V_BIND_OBJECT_ORDER */]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript ` + + `object spread: it will now overwrite an existing non-mergeable attribute ` + + `that appears before v-bind in the case of conflict. ` + + `To retain 2.x behavior, move v-bind to make it the first attribute. ` + + `You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: { + message: `v-if / v-for precedence when used on the same element has changed ` + + `in Vue 3: v-if now takes higher precedence and will no longer have ` + + `access to v-for scope variables. It is best to avoid the ambiguity ` + + `with <template> tags or use a computed property that filters v-for ` + + `data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: { + message: `<template> with no special directives will render as a native template ` + + `element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTER" /* COMPILER_FILTERS */]: { + message: `filters have been removed in Vue 3. ` + + `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` + + `Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } + }; + function getCompatValue(key, context) { + const config = context.options + ? context.options.compatConfig + : context.compatConfig; + const value = config && config[key]; + if (key === 'MODE') { + return value || 3; // compiler defaults to v3 behavior + } + else { + return value; + } + } + function isCompatEnabled(key, context) { + const mode = getCompatValue('MODE', context); + const value = getCompatValue(key, context); + // in v3 mode, only enable if explicitly set to true + // otherwise enable for any non-false value + return mode === 3 ? value === true : value !== false; + } + function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; + } + function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === 'suppress-warning') { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === 'function' ? message(...args) : message}${link ? `\n Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) + err.loc = loc; + context.onWarn(err); + } + + // The default decoder only provides escapes for characters reserved as part of + // the template syntax, and is only used if the custom renderer did not provide + // a platform-specific decoder. + const decodeRE = /&(gt|lt|amp|apos|quot);/g; + const decodeMap = { + gt: '>', + lt: '<', + amp: '&', + apos: "'", + quot: '"' + }; + const defaultParserOptions = { + delimiters: [`{{`, `}}`], + getNamespace: () => 0 /* HTML */, + getTextMode: () => 0 /* DATA */, + isVoidTag: NO, + isPreTag: NO, + isCustomElement: NO, + decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]), + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true + }; + function baseParse(content, options = {}) { + const context = createParserContext(content, options); + const start = getCursor(context); + return createRoot(parseChildren(context, 0 /* DATA */, []), getSelection(context, start)); + } + function createParserContext(content, rawOptions) { + const options = extend({}, defaultParserOptions); + let key; + for (key in rawOptions) { + // @ts-ignore + options[key] = + rawOptions[key] === undefined + ? defaultParserOptions[key] + : rawOptions[key]; + } + return { + options, + column: 1, + line: 1, + offset: 0, + originalSource: content, + source: content, + inPre: false, + inVPre: false, + onWarn: options.onWarn + }; + } + function parseChildren(context, mode, ancestors) { + const parent = last(ancestors); + const ns = parent ? parent.ns : 0 /* HTML */; + const nodes = []; + while (!isEnd(context, mode, ancestors)) { + const s = context.source; + let node = undefined; + if (mode === 0 /* DATA */ || mode === 1 /* RCDATA */) { + if (!context.inVPre && startsWith(s, context.options.delimiters[0])) { + // '{{' + node = parseInterpolation(context, mode); + } + else if (mode === 0 /* DATA */ && s[0] === '<') { + // https://html.spec.whatwg.org/multipage/parsing.html#tag-open-state + if (s.length === 1) { + emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 1); + } + else if (s[1] === '!') { + // https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state + if (startsWith(s, '<!--')) { + node = parseComment(context); + } + else if (startsWith(s, '<!DOCTYPE')) { + // Ignore DOCTYPE by a limitation. + node = parseBogusComment(context); + } + else if (startsWith(s, '<![CDATA[')) { + if (ns !== 0 /* HTML */) { + node = parseCDATA(context, ancestors); + } + else { + emitError(context, 1 /* CDATA_IN_HTML_CONTENT */); + node = parseBogusComment(context); + } + } + else { + emitError(context, 11 /* INCORRECTLY_OPENED_COMMENT */); + node = parseBogusComment(context); + } + } + else if (s[1] === '/') { + // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state + if (s.length === 2) { + emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 2); + } + else if (s[2] === '>') { + emitError(context, 14 /* MISSING_END_TAG_NAME */, 2); + advanceBy(context, 3); + continue; + } + else if (/[a-z]/i.test(s[2])) { + emitError(context, 23 /* X_INVALID_END_TAG */); + parseTag(context, 1 /* End */, parent); + continue; + } + else { + emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2); + node = parseBogusComment(context); + } + } + else if (/[a-z]/i.test(s[1])) { + node = parseElement(context, ancestors); + } + else if (s[1] === '?') { + emitError(context, 21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1); + node = parseBogusComment(context); + } + else { + emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1); + } + } + } + if (!node) { + node = parseText(context, mode); + } + if (isArray(node)) { + for (let i = 0; i < node.length; i++) { + pushNode(nodes, node[i]); + } + } + else { + pushNode(nodes, node); + } + } + // Whitespace handling strategy like v2 + let removedWhitespace = false; + if (mode !== 2 /* RAWTEXT */ && mode !== 1 /* RCDATA */) { + const shouldCondense = context.options.whitespace !== 'preserve'; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!context.inPre && node.type === 2 /* TEXT */) { + if (!/[^\t\r\n\f ]/.test(node.content)) { + const prev = nodes[i - 1]; + const next = nodes[i + 1]; + // Remove if: + // - the whitespace is the first or last node, or: + // - (condense mode) the whitespace is adjacent to a comment, or: + // - (condense mode) the whitespace is between two elements AND contains newline + if (!prev || + !next || + (shouldCondense && + (prev.type === 3 /* COMMENT */ || + next.type === 3 /* COMMENT */ || + (prev.type === 1 /* ELEMENT */ && + next.type === 1 /* ELEMENT */ && + /[\r\n]/.test(node.content))))) { + removedWhitespace = true; + nodes[i] = null; + } + else { + // Otherwise, the whitespace is condensed into a single space + node.content = ' '; + } + } + else if (shouldCondense) { + // in condense mode, consecutive whitespaces in text are condensed + // down to a single space. + node.content = node.content.replace(/[\t\r\n\f ]+/g, ' '); + } + } + // Remove comment nodes if desired by configuration. + else if (node.type === 3 /* COMMENT */ && !context.options.comments) { + removedWhitespace = true; + nodes[i] = null; + } + } + if (context.inPre && parent && context.options.isPreTag(parent.tag)) { + // remove leading newline per html spec + // https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element + const first = nodes[0]; + if (first && first.type === 2 /* TEXT */) { + first.content = first.content.replace(/^\r?\n/, ''); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; + } + function pushNode(nodes, node) { + if (node.type === 2 /* TEXT */) { + const prev = last(nodes); + // Merge if both this and the previous node are text and those are + // consecutive. This happens for cases like "a < b". + if (prev && + prev.type === 2 /* TEXT */ && + prev.loc.end.offset === node.loc.start.offset) { + prev.content += node.content; + prev.loc.end = node.loc.end; + prev.loc.source += node.loc.source; + return; + } + } + nodes.push(node); + } + function parseCDATA(context, ancestors) { + advanceBy(context, 9); + const nodes = parseChildren(context, 3 /* CDATA */, ancestors); + if (context.source.length === 0) { + emitError(context, 6 /* EOF_IN_CDATA */); + } + else { + advanceBy(context, 3); + } + return nodes; + } + function parseComment(context) { + const start = getCursor(context); + let content; + // Regular comment. + const match = /--(\!)?>/.exec(context.source); + if (!match) { + content = context.source.slice(4); + advanceBy(context, context.source.length); + emitError(context, 7 /* EOF_IN_COMMENT */); + } + else { + if (match.index <= 3) { + emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */); + } + if (match[1]) { + emitError(context, 10 /* INCORRECTLY_CLOSED_COMMENT */); + } + content = context.source.slice(4, match.index); + // Advancing with reporting nested comments. + const s = context.source.slice(0, match.index); + let prevIndex = 1, nestedIndex = 0; + while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) { + advanceBy(context, nestedIndex - prevIndex + 1); + if (nestedIndex + 4 < s.length) { + emitError(context, 16 /* NESTED_COMMENT */); + } + prevIndex = nestedIndex + 1; + } + advanceBy(context, match.index + match[0].length - prevIndex + 1); + } + return { + type: 3 /* COMMENT */, + content, + loc: getSelection(context, start) + }; + } + function parseBogusComment(context) { + const start = getCursor(context); + const contentStart = context.source[1] === '?' ? 1 : 2; + let content; + const closeIndex = context.source.indexOf('>'); + if (closeIndex === -1) { + content = context.source.slice(contentStart); + advanceBy(context, context.source.length); + } + else { + content = context.source.slice(contentStart, closeIndex); + advanceBy(context, closeIndex + 1); + } + return { + type: 3 /* COMMENT */, + content, + loc: getSelection(context, start) + }; + } + function parseElement(context, ancestors) { + // Start tag. + const wasInPre = context.inPre; + const wasInVPre = context.inVPre; + const parent = last(ancestors); + const element = parseTag(context, 0 /* Start */, parent); + const isPreBoundary = context.inPre && !wasInPre; + const isVPreBoundary = context.inVPre && !wasInVPre; + if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { + // #4030 self-closing <pre> tag + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; + } + // Children. + ancestors.push(element); + const mode = context.options.getTextMode(element, parent); + const children = parseChildren(context, mode, ancestors); + ancestors.pop(); + element.children = children; + // End tag. + if (startsWithEndTagOpen(context.source, element.tag)) { + parseTag(context, 1 /* End */, parent); + } + else { + emitError(context, 24 /* X_MISSING_END_TAG */, 0, element.loc.start); + if (context.source.length === 0 && element.tag.toLowerCase() === 'script') { + const first = children[0]; + if (first && startsWith(first.loc.source, '<!--')) { + emitError(context, 8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */); + } + } + } + element.loc = getSelection(context, element.loc.start); + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; + } + const isSpecialTemplateDirective = /*#__PURE__*/ makeMap(`if,else,else-if,for,slot`); + function parseTag(context, type, parent) { + // Tag open. + const start = getCursor(context); + const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source); + const tag = match[1]; + const ns = context.options.getNamespace(tag, parent); + advanceBy(context, match[0].length); + advanceSpaces(context); + // save current state in case we need to re-parse attributes with v-pre + const cursor = getCursor(context); + const currentSource = context.source; + // check <pre> tag + if (context.options.isPreTag(tag)) { + context.inPre = true; + } + // Attributes. + let props = parseAttributes(context, type); + // check v-pre + if (type === 0 /* Start */ && + !context.inVPre && + props.some(p => p.type === 7 /* DIRECTIVE */ && p.name === 'pre')) { + context.inVPre = true; + // reset context + extend(context, cursor); + context.source = currentSource; + // re-parse attrs and filter out v-pre itself + props = parseAttributes(context, type).filter(p => p.name !== 'v-pre'); + } + // Tag close. + let isSelfClosing = false; + if (context.source.length === 0) { + emitError(context, 9 /* EOF_IN_TAG */); + } + else { + isSelfClosing = startsWith(context.source, '/>'); + if (type === 1 /* End */ && isSelfClosing) { + emitError(context, 4 /* END_TAG_WITH_TRAILING_SOLIDUS */); + } + advanceBy(context, isSelfClosing ? 2 : 1); + } + if (type === 1 /* End */) { + return; + } + let tagType = 0 /* ELEMENT */; + if (!context.inVPre) { + if (tag === 'slot') { + tagType = 2 /* SLOT */; + } + else if (tag === 'template') { + if (props.some(p => p.type === 7 /* DIRECTIVE */ && isSpecialTemplateDirective(p.name))) { + tagType = 3 /* TEMPLATE */; + } + } + else if (isComponent(tag, props, context)) { + tagType = 1 /* COMPONENT */; + } + } + return { + type: 1 /* ELEMENT */, + ns, + tag, + tagType, + props, + isSelfClosing, + children: [], + loc: getSelection(context, start), + codegenNode: undefined // to be created during transform phase + }; + } + function isComponent(tag, props, context) { + const options = context.options; + if (options.isCustomElement(tag)) { + return false; + } + if (tag === 'component' || + /^[A-Z]/.test(tag) || + isCoreComponent(tag) || + (options.isBuiltInComponent && options.isBuiltInComponent(tag)) || + (options.isNativeTag && !options.isNativeTag(tag))) { + return true; + } + // at this point the tag should be a native tag, but check for potential "is" + // casting + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6 /* ATTRIBUTE */) { + if (p.name === 'is' && p.value) { + if (p.value.content.startsWith('vue:')) { + return true; + } + } + } + else { + // directive + // v-is (TODO Deprecate) + if (p.name === 'is') { + return true; + } + else if ( + // :is on plain element - only treat as component in compat mode + p.name === 'bind' && + isStaticArgOf(p.arg, 'is') && + false && + checkCompatEnabled("COMPILER_IS_ON_ELEMENT" /* COMPILER_IS_ON_ELEMENT */, context, p.loc)) { + return true; + } + } + } + } + function parseAttributes(context, type) { + const props = []; + const attributeNames = new Set(); + while (context.source.length > 0 && + !startsWith(context.source, '>') && + !startsWith(context.source, '/>')) { + if (startsWith(context.source, '/')) { + emitError(context, 22 /* UNEXPECTED_SOLIDUS_IN_TAG */); + advanceBy(context, 1); + advanceSpaces(context); + continue; + } + if (type === 1 /* End */) { + emitError(context, 3 /* END_TAG_WITH_ATTRIBUTES */); + } + const attr = parseAttribute(context, attributeNames); + // Trim whitespace between class + // https://github.com/vuejs/core/issues/4251 + if (attr.type === 6 /* ATTRIBUTE */ && + attr.value && + attr.name === 'class') { + attr.value.content = attr.value.content.replace(/\s+/g, ' ').trim(); + } + if (type === 0 /* Start */) { + props.push(attr); + } + if (/^[^\t\r\n\f />]/.test(context.source)) { + emitError(context, 15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */); + } + advanceSpaces(context); + } + return props; + } + function parseAttribute(context, nameSet) { + // Name. + const start = getCursor(context); + const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source); + const name = match[0]; + if (nameSet.has(name)) { + emitError(context, 2 /* DUPLICATE_ATTRIBUTE */); + } + nameSet.add(name); + if (name[0] === '=') { + emitError(context, 19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */); + } + { + const pattern = /["'<]/g; + let m; + while ((m = pattern.exec(name))) { + emitError(context, 17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */, m.index); + } + } + advanceBy(context, name.length); + // Value + let value = undefined; + if (/^[\t\r\n\f ]*=/.test(context.source)) { + advanceSpaces(context); + advanceBy(context, 1); + advanceSpaces(context); + value = parseAttributeValue(context); + if (!value) { + emitError(context, 13 /* MISSING_ATTRIBUTE_VALUE */); + } + } + const loc = getSelection(context, start); + if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) { + const match = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(name); + let isPropShorthand = startsWith(name, '.'); + let dirName = match[1] || + (isPropShorthand || startsWith(name, ':') + ? 'bind' + : startsWith(name, '@') + ? 'on' + : 'slot'); + let arg; + if (match[2]) { + const isSlot = dirName === 'slot'; + const startOffset = name.lastIndexOf(match[2]); + const loc = getSelection(context, getNewPosition(context, start, startOffset), getNewPosition(context, start, startOffset + match[2].length + ((isSlot && match[3]) || '').length)); + let content = match[2]; + let isStatic = true; + if (content.startsWith('[')) { + isStatic = false; + if (!content.endsWith(']')) { + emitError(context, 27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */); + content = content.slice(1); + } + else { + content = content.slice(1, content.length - 1); + } + } + else if (isSlot) { + // #1241 special case for v-slot: vuetify relies extensively on slot + // names containing dots. v-slot doesn't have any modifiers and Vue 2.x + // supports such usage so we are keeping it consistent with 2.x. + content += match[3] || ''; + } + arg = { + type: 4 /* SIMPLE_EXPRESSION */, + content, + isStatic, + constType: isStatic + ? 3 /* CAN_STRINGIFY */ + : 0 /* NOT_CONSTANT */, + loc + }; + } + if (value && value.isQuoted) { + const valueLoc = value.loc; + valueLoc.start.offset++; + valueLoc.start.column++; + valueLoc.end = advancePositionWithClone(valueLoc.start, value.content); + valueLoc.source = valueLoc.source.slice(1, -1); + } + const modifiers = match[3] ? match[3].slice(1).split('.') : []; + if (isPropShorthand) + modifiers.push('prop'); + return { + type: 7 /* DIRECTIVE */, + name: dirName, + exp: value && { + type: 4 /* SIMPLE_EXPRESSION */, + content: value.content, + isStatic: false, + // Treat as non-constant by default. This can be potentially set to + // other values by `transformExpression` to make it eligible for hoisting. + constType: 0 /* NOT_CONSTANT */, + loc: value.loc + }, + arg, + modifiers, + loc + }; + } + // missing directive name or illegal directive name + if (!context.inVPre && startsWith(name, 'v-')) { + emitError(context, 26 /* X_MISSING_DIRECTIVE_NAME */); + } + return { + type: 6 /* ATTRIBUTE */, + name, + value: value && { + type: 2 /* TEXT */, + content: value.content, + loc: value.loc + }, + loc + }; + } + function parseAttributeValue(context) { + const start = getCursor(context); + let content; + const quote = context.source[0]; + const isQuoted = quote === `"` || quote === `'`; + if (isQuoted) { + // Quoted value. + advanceBy(context, 1); + const endIndex = context.source.indexOf(quote); + if (endIndex === -1) { + content = parseTextData(context, context.source.length, 4 /* ATTRIBUTE_VALUE */); + } + else { + content = parseTextData(context, endIndex, 4 /* ATTRIBUTE_VALUE */); + advanceBy(context, 1); + } + } + else { + // Unquoted + const match = /^[^\t\r\n\f >]+/.exec(context.source); + if (!match) { + return undefined; + } + const unexpectedChars = /["'<=`]/g; + let m; + while ((m = unexpectedChars.exec(match[0]))) { + emitError(context, 18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */, m.index); + } + content = parseTextData(context, match[0].length, 4 /* ATTRIBUTE_VALUE */); + } + return { content, isQuoted, loc: getSelection(context, start) }; + } + function parseInterpolation(context, mode) { + const [open, close] = context.options.delimiters; + const closeIndex = context.source.indexOf(close, open.length); + if (closeIndex === -1) { + emitError(context, 25 /* X_MISSING_INTERPOLATION_END */); + return undefined; + } + const start = getCursor(context); + advanceBy(context, open.length); + const innerStart = getCursor(context); + const innerEnd = getCursor(context); + const rawContentLength = closeIndex - open.length; + const rawContent = context.source.slice(0, rawContentLength); + const preTrimContent = parseTextData(context, rawContentLength, mode); + const content = preTrimContent.trim(); + const startOffset = preTrimContent.indexOf(content); + if (startOffset > 0) { + advancePositionWithMutation(innerStart, rawContent, startOffset); + } + const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset); + advancePositionWithMutation(innerEnd, rawContent, endOffset); + advanceBy(context, close.length); + return { + type: 5 /* INTERPOLATION */, + content: { + type: 4 /* SIMPLE_EXPRESSION */, + isStatic: false, + // Set `isConstant` to false by default and will decide in transformExpression + constType: 0 /* NOT_CONSTANT */, + content, + loc: getSelection(context, innerStart, innerEnd) + }, + loc: getSelection(context, start) + }; + } + function parseText(context, mode) { + const endTokens = mode === 3 /* CDATA */ ? [']]>'] : ['<', context.options.delimiters[0]]; + let endIndex = context.source.length; + for (let i = 0; i < endTokens.length; i++) { + const index = context.source.indexOf(endTokens[i], 1); + if (index !== -1 && endIndex > index) { + endIndex = index; + } + } + const start = getCursor(context); + const content = parseTextData(context, endIndex, mode); + return { + type: 2 /* TEXT */, + content, + loc: getSelection(context, start) + }; + } + /** + * Get text data with a given length from the current location. + * This translates HTML entities in the text data. + */ + function parseTextData(context, length, mode) { + const rawText = context.source.slice(0, length); + advanceBy(context, length); + if (mode === 2 /* RAWTEXT */ || + mode === 3 /* CDATA */ || + !rawText.includes('&')) { + return rawText; + } + else { + // DATA or RCDATA containing "&"". Entity decoding required. + return context.options.decodeEntities(rawText, mode === 4 /* ATTRIBUTE_VALUE */); + } + } + function getCursor(context) { + const { column, line, offset } = context; + return { column, line, offset }; + } + function getSelection(context, start, end) { + end = end || getCursor(context); + return { + start, + end, + source: context.originalSource.slice(start.offset, end.offset) + }; + } + function last(xs) { + return xs[xs.length - 1]; + } + function startsWith(source, searchString) { + return source.startsWith(searchString); + } + function advanceBy(context, numberOfCharacters) { + const { source } = context; + advancePositionWithMutation(context, source, numberOfCharacters); + context.source = source.slice(numberOfCharacters); + } + function advanceSpaces(context) { + const match = /^[\t\r\n\f ]+/.exec(context.source); + if (match) { + advanceBy(context, match[0].length); + } + } + function getNewPosition(context, start, numberOfCharacters) { + return advancePositionWithClone(start, context.originalSource.slice(start.offset, numberOfCharacters), numberOfCharacters); + } + function emitError(context, code, offset, loc = getCursor(context)) { + if (offset) { + loc.offset += offset; + loc.column += offset; + } + context.options.onError(createCompilerError(code, { + start: loc, + end: loc, + source: '' + })); + } + function isEnd(context, mode, ancestors) { + const s = context.source; + switch (mode) { + case 0 /* DATA */: + if (startsWith(s, '</')) { + // TODO: probably bad performance + for (let i = ancestors.length - 1; i >= 0; --i) { + if (startsWithEndTagOpen(s, ancestors[i].tag)) { + return true; + } + } + } + break; + case 1 /* RCDATA */: + case 2 /* RAWTEXT */: { + const parent = last(ancestors); + if (parent && startsWithEndTagOpen(s, parent.tag)) { + return true; + } + break; + } + case 3 /* CDATA */: + if (startsWith(s, ']]>')) { + return true; + } + break; + } + return !s; + } + function startsWithEndTagOpen(source, tag) { + return (startsWith(source, '</') && + source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && + /[\t\r\n\f />]/.test(source[2 + tag.length] || '>')); + } + + function hoistStatic(root, context) { + walk(root, context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + isSingleElementRoot(root, root.children[0])); + } + function isSingleElementRoot(root, child) { + const { children } = root; + return (children.length === 1 && + child.type === 1 /* ELEMENT */ && + !isSlotOutlet(child)); + } + function walk(node, context, doNotHoistNode = false) { + const { children } = node; + const originalCount = children.length; + let hoistedCount = 0; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + // only plain elements & text calls are eligible for hoisting. + if (child.type === 1 /* ELEMENT */ && + child.tagType === 0 /* ELEMENT */) { + const constantType = doNotHoistNode + ? 0 /* NOT_CONSTANT */ + : getConstantType(child, context); + if (constantType > 0 /* NOT_CONSTANT */) { + if (constantType >= 2 /* CAN_HOIST */) { + child.codegenNode.patchFlag = + -1 /* HOISTED */ + (` /* HOISTED */` ); + child.codegenNode = context.hoist(child.codegenNode); + hoistedCount++; + continue; + } + } + else { + // node may contain dynamic children, but its props may be eligible for + // hoisting. + const codegenNode = child.codegenNode; + if (codegenNode.type === 13 /* VNODE_CALL */) { + const flag = getPatchFlag(codegenNode); + if ((!flag || + flag === 512 /* NEED_PATCH */ || + flag === 1 /* TEXT */) && + getGeneratedPropsConstantType(child, context) >= + 2 /* CAN_HOIST */) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } + else if (child.type === 12 /* TEXT_CALL */ && + getConstantType(child.content, context) >= 2 /* CAN_HOIST */) { + child.codegenNode = context.hoist(child.codegenNode); + hoistedCount++; + } + // walk further + if (child.type === 1 /* ELEMENT */) { + const isComponent = child.tagType === 1 /* COMPONENT */; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, context); + if (isComponent) { + context.scopes.vSlot--; + } + } + else if (child.type === 11 /* FOR */) { + // Do not hoist v-for single child because it has to be a block + walk(child, context, child.children.length === 1); + } + else if (child.type === 9 /* IF */) { + for (let i = 0; i < child.branches.length; i++) { + // Do not hoist v-if single child because it has to be a block + walk(child.branches[i], context, child.branches[i].children.length === 1); + } + } + } + if (hoistedCount && context.transformHoist) { + context.transformHoist(children, context, node); + } + // all children were hoisted - the entire children array is hoistable. + if (hoistedCount && + hoistedCount === originalCount && + node.type === 1 /* ELEMENT */ && + node.tagType === 0 /* ELEMENT */ && + node.codegenNode && + node.codegenNode.type === 13 /* VNODE_CALL */ && + isArray(node.codegenNode.children)) { + node.codegenNode.children = context.hoist(createArrayExpression(node.codegenNode.children)); + } + } + function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1 /* ELEMENT */: + if (node.tagType !== 0 /* ELEMENT */) { + return 0 /* NOT_CONSTANT */; + } + const cached = constantCache.get(node); + if (cached !== undefined) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13 /* VNODE_CALL */) { + return 0 /* NOT_CONSTANT */; + } + if (codegenNode.isBlock && + node.tag !== 'svg' && + node.tag !== 'foreignObject') { + return 0 /* NOT_CONSTANT */; + } + const flag = getPatchFlag(codegenNode); + if (!flag) { + let returnType = 3 /* CAN_STRINGIFY */; + // Element itself has no patch flag. However we still need to check: + // 1. Even for a node with no patch flag, it is possible for it to contain + // non-hoistable expressions that refers to scope variables, e.g. compiler + // injected keys or cached event handlers. Therefore we need to always + // check the codegenNode's props to be sure. + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0 /* NOT_CONSTANT */) { + constantCache.set(node, 0 /* NOT_CONSTANT */); + return 0 /* NOT_CONSTANT */; + } + if (generatedPropsType < returnType) { + returnType = generatedPropsType; + } + // 2. its children. + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0 /* NOT_CONSTANT */) { + constantCache.set(node, 0 /* NOT_CONSTANT */); + return 0 /* NOT_CONSTANT */; + } + if (childType < returnType) { + returnType = childType; + } + } + // 3. if the type is not already CAN_SKIP_PATCH which is the lowest non-0 + // type, check if any of the props can cause the type to be lowered + // we can skip can_patch because it's guaranteed by the absence of a + // patchFlag. + if (returnType > 1 /* CAN_SKIP_PATCH */) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 /* DIRECTIVE */ && p.name === 'bind' && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0 /* NOT_CONSTANT */) { + constantCache.set(node, 0 /* NOT_CONSTANT */); + return 0 /* NOT_CONSTANT */; + } + if (expType < returnType) { + returnType = expType; + } + } + } + } + // only svg/foreignObject could be block here, however if they are + // static then they don't need to be blocks since there will be no + // nested updates. + if (codegenNode.isBlock) { + // except set custom directives. + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 /* DIRECTIVE */) { + constantCache.set(node, 0 /* NOT_CONSTANT */); + return 0 /* NOT_CONSTANT */; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper(getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType); + return returnType; + } + else { + constantCache.set(node, 0 /* NOT_CONSTANT */); + return 0 /* NOT_CONSTANT */; + } + case 2 /* TEXT */: + case 3 /* COMMENT */: + return 3 /* CAN_STRINGIFY */; + case 9 /* IF */: + case 11 /* FOR */: + case 10 /* IF_BRANCH */: + return 0 /* NOT_CONSTANT */; + case 5 /* INTERPOLATION */: + case 12 /* TEXT_CALL */: + return getConstantType(node.content, context); + case 4 /* SIMPLE_EXPRESSION */: + return node.constType; + case 8 /* COMPOUND_EXPRESSION */: + let returnType = 3 /* CAN_STRINGIFY */; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child) || isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0 /* NOT_CONSTANT */) { + return 0 /* NOT_CONSTANT */; + } + else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + default: + return 0 /* NOT_CONSTANT */; + } + } + const allowHoistedHelperSet = new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS + ]); + function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 /* JS_CALL_EXPRESSION */ && + !isString(value.callee) && + allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4 /* SIMPLE_EXPRESSION */) { + return getConstantType(arg, context); + } + else if (arg.type === 14 /* JS_CALL_EXPRESSION */) { + // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(exp))` + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0 /* NOT_CONSTANT */; + } + function getGeneratedPropsConstantType(node, context) { + let returnType = 3 /* CAN_STRINGIFY */; + const props = getNodeProps(node); + if (props && props.type === 15 /* JS_OBJECT_EXPRESSION */) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0 /* NOT_CONSTANT */) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4 /* SIMPLE_EXPRESSION */) { + valueType = getConstantType(value, context); + } + else if (value.type === 14 /* JS_CALL_EXPRESSION */) { + // some helper calls can be hoisted, + // such as the `normalizeProps` generated by the compiler for pre-normalize class, + // in this case we need to respect the ConstantType of the helper's arguments + valueType = getConstantTypeOfHelperCall(value, context); + } + else { + valueType = 0 /* NOT_CONSTANT */; + } + if (valueType === 0 /* NOT_CONSTANT */) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; + } + function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13 /* VNODE_CALL */) { + return codegenNode.props; + } + } + function getPatchFlag(node) { + const flag = node.patchFlag; + return flag ? parseInt(flag, 10) : undefined; + } + + function createTransformContext(root, { filename = '', prefixIdentifiers = false, hoistStatic = false, cacheHandlers = false, nodeTransforms = [], directiveTransforms = {}, transformHoist = null, isBuiltInComponent = NOOP, isCustomElement = NOOP, expressionPlugins = [], scopeId = null, slotted = true, ssr = false, inSSR = false, ssrCssVars = ``, bindingMetadata = EMPTY_OBJ, inline = false, isTS = false, onError = defaultOnError, onWarn = defaultOnWarn, compatConfig }) { + const nameMatch = filename.replace(/\?.*$/, '').match(/([^/\\]+)\.\w+$/); + const context = { + // options + selfName: nameMatch && capitalize(camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: new Map(), + components: new Set(), + directives: new Set(), + hoists: [], + imports: [], + constantCache: new Map(), + temps: 0, + cached: 0, + identifiers: Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } + else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + /* istanbul ignore if */ + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node + ? list.indexOf(node) + : context.currentNode + ? context.childIndex + : -1; + /* istanbul ignore if */ + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + // current node removed + context.currentNode = null; + context.onNodeRemoved(); + } + else { + // sibling node removed + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: () => { }, + addIdentifiers(exp) { + }, + removeIdentifiers(exp) { + }, + hoist(exp) { + if (isString(exp)) + exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression(`_hoisted_${context.hoists.length}`, false, exp.loc, 2 /* CAN_HOIST */); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false) { + return createCacheExpression(context.cached++, exp, isVNode); + } + }; + return context; + } + function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + hoistStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + // finalize meta information + root.helpers = [...context.helpers.keys()]; + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + } + function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const child = children[0]; + // if the single child is an element, turn it into a block. + if (isSingleElementRoot(root, child) && child.codegenNode) { + // single element root is never hoisted so codegenNode will never be + // SimpleExpressionNode + const codegenNode = child.codegenNode; + if (codegenNode.type === 13 /* VNODE_CALL */) { + makeBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } + else { + // - single <slot/>, IfNode, ForNode: already blocks. + // - single text node: always patched. + // root codegen falls through via genNode() + root.codegenNode = child; + } + } + else if (children.length > 1) { + // root has multiple nodes - return a fragment block. + let patchFlag = 64 /* STABLE_FRAGMENT */; + let patchFlagText = PatchFlagNames[64 /* STABLE_FRAGMENT */]; + // check if the fragment actually contains a single valid child with + // the rest being comments + if (children.filter(c => c.type !== 3 /* COMMENT */).length === 1) { + patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */; + patchFlagText += `, ${PatchFlagNames[2048 /* DEV_ROOT_FRAGMENT */]}`; + } + root.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, root.children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, undefined, false /* isComponent */); + } + else ; + } + function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (isString(child)) + continue; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } + } + function traverseNode(node, context) { + context.currentNode = node; + // apply transform plugins + const { nodeTransforms } = context; + const exitFns = []; + for (let i = 0; i < nodeTransforms.length; i++) { + const onExit = nodeTransforms[i](node, context); + if (onExit) { + if (isArray(onExit)) { + exitFns.push(...onExit); + } + else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + // node was removed + return; + } + else { + // node may have been replaced + node = context.currentNode; + } + } + switch (node.type) { + case 3 /* COMMENT */: + if (!context.ssr) { + // inject import for the Comment symbol, which is needed for creating + // comment nodes with `createVNode` + context.helper(CREATE_COMMENT); + } + break; + case 5 /* INTERPOLATION */: + // no need to traverse, but we need to inject toString helper + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9 /* IF */: + for (let i = 0; i < node.branches.length; i++) { + traverseNode(node.branches[i], context); + } + break; + case 10 /* IF_BRANCH */: + case 11 /* FOR */: + case 1 /* ELEMENT */: + case 0 /* ROOT */: + traverseChildren(node, context); + break; + } + // exit transforms + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } + } + function createStructuralDirectiveTransform(name, fn) { + const matches = isString(name) + ? (n) => n === name + : (n) => name.test(n); + return (node, context) => { + if (node.type === 1 /* ELEMENT */) { + const { props } = node; + // structural directive transforms are not concerned with slots + // as they are handled separately in vSlot.ts + if (node.tagType === 3 /* TEMPLATE */ && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 /* DIRECTIVE */ && matches(prop.name)) { + // structural directives are removed to avoid infinite recursion + // also we remove them *before* applying so that it can further + // traverse itself in case it moves the node around + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) + exitFns.push(onExit); + } + } + return exitFns; + } + }; + } + + const PURE_ANNOTATION = `/*#__PURE__*/`; + const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; + function createCodegenContext(ast, { mode = 'function', prefixIdentifiers = mode === 'module', sourceMap = false, filename = `template.vue.html`, scopeId = null, optimizeImports = false, runtimeGlobalName = `Vue`, runtimeModuleName = `vue`, ssrRuntimeModuleName = 'vue/server-renderer', ssr = false, isTS = false, inSSR = false }) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.loc.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: undefined, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, node) { + context.code += code; + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } + else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push('\n' + ` `.repeat(n)); + } + return context; + } + function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) + options.onContextCreated(context); + const { mode, push, prefixIdentifiers, indent, deindent, newline, scopeId, ssr } = context; + const hasHelpers = ast.helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== 'module'; + // preambles + // in setup() inline mode, the preamble is generated in a sub context + // and returned separately. + const preambleContext = context; + { + genFunctionPreamble(ast, preambleContext); + } + // enter render function + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ['_ctx', '_push', '_parent', '_attrs'] : ['_ctx', '_cache']; + const signature = args.join(', '); + { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + // function mode const declarations should be inside with block + // also they should be renamed to avoid collision with user properties + if (hasHelpers) { + push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = _Vue`); + push(`\n`); + newline(); + } + } + // generate asset resolution statements + if (ast.components.length) { + genAssets(ast.components, 'component', context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, 'directive', context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(`\n`); + newline(); + } + // generate the VNode tree expression + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } + else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: ``, + // SourceMapGenerator does have toJSON() method but it's not in the types + map: context.map ? context.map.toJSON() : undefined + }; + } + function genFunctionPreamble(ast, context) { + const { ssr, prefixIdentifiers, push, newline, runtimeModuleName, runtimeGlobalName, ssrRuntimeModuleName } = context; + const VueBinding = runtimeGlobalName; + // Generate const declaration for helpers + // In prefix mode, we place the const declaration at top so it's done + // only once; But if we not prefixing, we place the declaration inside the + // with block so it doesn't incur the `in` check cost for every helper access. + if (ast.helpers.length > 0) { + { + // "with" mode. + // save Vue in a separate variable to avoid collision + push(`const _Vue = ${VueBinding}\n`); + // in "with" mode, helpers are declared inside the with block to avoid + // has check cost, but hoists are lifted out of the function - we need + // to provide the helper here. + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ] + .filter(helper => ast.helpers.includes(helper)) + .map(aliasHelper) + .join(', '); + push(`const { ${staticHelpers} } = _Vue\n`); + } + } + } + genHoists(ast.hoists, context); + newline(); + push(`return `); + } + function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper(type === 'component' + ? RESOLVE_COMPONENT + : RESOLVE_DIRECTIVE); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + // potential component implicit self-reference inferred from SFC filename + const maybeSelfReference = id.endsWith('__self'); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push(`const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`); + if (i < assets.length - 1) { + newline(); + } + } + } + function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline, helper, scopeId, mode } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = ${``}`); + genNode(exp, context); + newline(); + } + } + context.pure = false; + } + function isText$1(n) { + return (isString(n) || + n.type === 4 /* SIMPLE_EXPRESSION */ || + n.type === 2 /* TEXT */ || + n.type === 5 /* INTERPOLATION */ || + n.type === 8 /* COMPOUND_EXPRESSION */); + } + function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || + (nodes.some(n => isArray(n) || !isText$1(n))); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); + } + function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (isString(node)) { + push(node); + } + else if (isArray(node)) { + genNodeListAsArray(node, context); + } + else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(','); + newline(); + } + else { + comma && push(', '); + } + } + } + } + function genNode(node, context) { + if (isString(node)) { + context.push(node); + return; + } + if (isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1 /* ELEMENT */: + case 9 /* IF */: + case 11 /* FOR */: + assert(node.codegenNode != null, `Codegen node is missing for element/if/for node. ` + + `Apply appropriate transforms first.`); + genNode(node.codegenNode, context); + break; + case 2 /* TEXT */: + genText(node, context); + break; + case 4 /* SIMPLE_EXPRESSION */: + genExpression(node, context); + break; + case 5 /* INTERPOLATION */: + genInterpolation(node, context); + break; + case 12 /* TEXT_CALL */: + genNode(node.codegenNode, context); + break; + case 8 /* COMPOUND_EXPRESSION */: + genCompoundExpression(node, context); + break; + case 3 /* COMMENT */: + genComment(node, context); + break; + case 13 /* VNODE_CALL */: + genVNodeCall(node, context); + break; + case 14 /* JS_CALL_EXPRESSION */: + genCallExpression(node, context); + break; + case 15 /* JS_OBJECT_EXPRESSION */: + genObjectExpression(node, context); + break; + case 17 /* JS_ARRAY_EXPRESSION */: + genArrayExpression(node, context); + break; + case 18 /* JS_FUNCTION_EXPRESSION */: + genFunctionExpression(node, context); + break; + case 19 /* JS_CONDITIONAL_EXPRESSION */: + genConditionalExpression(node, context); + break; + case 20 /* JS_CACHE_EXPRESSION */: + genCacheExpression(node, context); + break; + case 21 /* JS_BLOCK_STATEMENT */: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22 /* JS_TEMPLATE_LITERAL */: + break; + case 23 /* JS_IF_STATEMENT */: + break; + case 24 /* JS_ASSIGNMENT_EXPRESSION */: + break; + case 25 /* JS_SEQUENCE_EXPRESSION */: + break; + case 26 /* JS_RETURN_STATEMENT */: + break; + /* istanbul ignore next */ + case 10 /* IF_BRANCH */: + // noop + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + // make sure we exhaust all possible types + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } + } + function genText(node, context) { + context.push(JSON.stringify(node.content), node); + } + function genExpression(node, context) { + const { content, isStatic } = node; + context.push(isStatic ? JSON.stringify(content) : content, node); + } + function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) + push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); + } + function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child)) { + context.push(child); + } + else { + genNode(child, context); + } + } + } + function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8 /* COMPOUND_EXPRESSION */) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } + else if (node.isStatic) { + // only quote keys if necessary + const text = isSimpleIdentifier(node.content) + ? node.content + : JSON.stringify(node.content); + push(text, node); + } + else { + push(`[${node.content}]`, node); + } + } + function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node); + } + function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { tag, props, children, patchFlag, dynamicProps, directives, isBlock, disableTracking, isComponent } = node; + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock + ? getVNodeBlockHelper(context.inSSR, isComponent) + : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, node); + genNodeList(genNullableArgs([tag, props, children, patchFlag, dynamicProps]), context); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } + } + function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) + break; + } + return args.slice(0, i + 1).map(arg => arg || `null`); + } + // JavaScript + function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, node); + genNodeList(node.arguments, context); + push(`)`); + } + function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, node); + return; + } + const multilines = properties.length > 1 || + (properties.some(p => p.value.type !== 4 /* SIMPLE_EXPRESSION */)); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + // key + genExpressionAsPropertyKey(key, context); + push(`: `); + // value + genNode(value, context); + if (i < properties.length - 1) { + // will only reach this if it's multilines + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); + } + function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); + } + function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + // wrap slot functions with owner context + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, node); + if (isArray(params)) { + genNodeList(params, context); + } + else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (isArray(returns)) { + genNodeListAsArray(returns, context); + } + else { + genNode(returns, context); + } + } + else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + push(`)`); + } + } + function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4 /* SIMPLE_EXPRESSION */) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } + else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent(true /* without newline */); + } + function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + push(`_cache[${node.index}] || (`); + if (node.isVNode) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1),`); + newline(); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (node.isVNode) { + push(`,`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + } + + // these keywords should not appear inside expressions, but operators like + // typeof, instanceof and in are allowed + const prohibitedKeywordRE = new RegExp('\\b' + + ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + + 'super,throw,while,yield,delete,export,import,return,switch,default,' + + 'extends,finally,continue,debugger,function,arguments,typeof,void') + .split(',') + .join('\\b|\\b') + + '\\b'); + // strip strings in expressions + const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; + /** + * Validate a non-prefixed expression. + * This is only called when using the in-browser runtime compiler since it + * doesn't prefix expressions. + */ + function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) { + const exp = node.content; + // empty expressions are validated per-directive since some directives + // do allow empty expressions. + if (!exp.trim()) { + return; + } + try { + new Function(asRawStatements + ? ` ${exp} ` + : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`); + } + catch (e) { + let message = e.message; + const keywordMatch = exp + .replace(stripStringRE, '') + .match(prohibitedKeywordRE); + if (keywordMatch) { + message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`; + } + context.onError(createCompilerError(44 /* X_INVALID_EXPRESSION */, node.loc, undefined, message)); + } + } + + const transformExpression = (node, context) => { + if (node.type === 5 /* INTERPOLATION */) { + node.content = processExpression(node.content, context); + } + else if (node.type === 1 /* ELEMENT */) { + // handle directives on element + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + // do not process for v-on & v-for since they are special handled + if (dir.type === 7 /* DIRECTIVE */ && dir.name !== 'for') { + const exp = dir.exp; + const arg = dir.arg; + // do not process exp if this is v-on:arg - we need special handling + // for wrapping inline statements. + if (exp && + exp.type === 4 /* SIMPLE_EXPRESSION */ && + !(dir.name === 'on' && arg)) { + dir.exp = processExpression(exp, context, + // slot args must be processed as function params + dir.name === 'slot'); + } + if (arg && arg.type === 4 /* SIMPLE_EXPRESSION */ && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } + }; + // Important: since this function uses Node.js only dependencies, it should + // always be used with a leading !true check so that it can be + // tree-shaken from the browser build. + function processExpression(node, context, + // some expressions like v-slot props & v-for aliases should be parsed as + // function params + asParams = false, + // v-on handler values may contain multiple statements + asRawStatements = false, localVars = Object.create(context.identifiers)) { + { + { + // simple in-browser validation (same logic in 2.x) + validateBrowserExpression(node, context, asParams, asRawStatements); + } + return node; + } + } + + const transformIf = createStructuralDirectiveTransform(/^(if|else|else-if)$/, (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + // #1587: We need to dynamically increment the key based on the current + // node's sibling nodes, since chained v-if/else branches are + // rendered at the same depth + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9 /* IF */) { + key += sibling.branches.length; + } + } + // Exit callback. Complete the codegenNode when all children have been + // transformed. + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch(branch, key, context); + } + else { + // attach this branch's codegen node to the v-if root. + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch(branch, key + ifNode.branches.length - 1, context); + } + }; + }); + }); + // target-agnostic transform used for both Client and SSR + function processIf(node, dir, context, processCodegen) { + if (dir.name !== 'else' && + (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError(createCompilerError(28 /* X_V_IF_NO_EXPRESSION */, dir.loc)); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (dir.exp) { + validateBrowserExpression(dir.exp, context); + } + if (dir.name === 'if') { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9 /* IF */, + loc: node.loc, + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } + else { + // locate the adjacent v-if + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3 /* COMMENT */) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && + sibling.type === 2 /* TEXT */ && + !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9 /* IF */) { + // Check if v-else was followed by v-else-if + if (dir.name === 'else-if' && + sibling.branches[sibling.branches.length - 1].condition === undefined) { + context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc)); + } + // move the node to the if node's branches + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && + // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && + context.parent.type === 1 /* ELEMENT */ && + isBuiltInType(context.parent.tag, 'transition'))) { + branch.children = [...comments, ...branch.children]; + } + // check if user is forcing same key on different branches + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError(createCompilerError(29 /* X_V_IF_SAME_KEY */, branch.userKey.loc)); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + // since the branch was removed, it will not be traversed. + // make sure to traverse here. + traverseNode(branch, context); + // call on exit + if (onExit) + onExit(); + // make sure to reset currentNode after traversal to indicate this + // node has been removed. + context.currentNode = null; + } + else { + context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc)); + } + break; + } + } + } + function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3 /* TEMPLATE */; + return { + type: 10 /* IF_BRANCH */, + loc: node.loc, + condition: dir.name === 'else' ? undefined : dir.exp, + children: isTemplateIf && !findDir(node, 'for') ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; + } + function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression(branch.condition, createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + 'true' + ])); + } + else { + return createChildrenCodegenNode(branch, keyIndex, context); + } + } + function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty(`key`, createSimpleExpression(`${keyIndex}`, false, locStub, 2 /* CAN_HOIST */)); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1 /* ELEMENT */; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11 /* FOR */) { + // optimize away nested fragments when child is a ForNode + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } + else { + let patchFlag = 64 /* STABLE_FRAGMENT */; + let patchFlagText = PatchFlagNames[64 /* STABLE_FRAGMENT */]; + // check if the fragment actually contains a single valid child with + // the rest being comments + if (!branch.isTemplateIf && + children.filter(c => c.type !== 3 /* COMMENT */).length === 1) { + patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */; + patchFlagText += `, ${PatchFlagNames[2048 /* DEV_ROOT_FRAGMENT */]}`; + } + return createVNodeCall(context, helper(FRAGMENT), createObjectExpression([keyProperty]), children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, false, false /* isComponent */, branch.loc); + } + } + else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + // Change createVNode to createBlock. + if (vnodeCall.type === 13 /* VNODE_CALL */) { + makeBlock(vnodeCall, context); + } + // inject branch key + injectProp(vnodeCall, keyProperty, context); + return ret; + } + } + function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6 /* ATTRIBUTE */) { + if (a.value.content !== b.value.content) { + return false; + } + } + else { + // directive + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 /* SIMPLE_EXPRESSION */ || + exp.isStatic !== branchExp.isStatic || + exp.content !== branchExp.content) { + return false; + } + } + return true; + } + function getParentCondition(node) { + while (true) { + if (node.type === 19 /* JS_CONDITIONAL_EXPRESSION */) { + if (node.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) { + node = node.alternate; + } + else { + return node; + } + } + else if (node.type === 20 /* JS_CACHE_EXPRESSION */) { + node = node.value; + } + } + } + + const transformFor = createStructuralDirectiveTransform('for', (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, forNode => { + // create the loop render function expression now, and add the + // iterator on exit after all children have been traversed + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, 'memo'); + const keyProp = findProp(node, `key`); + const keyExp = keyProp && + (keyProp.type === 6 /* ATTRIBUTE */ + ? createSimpleExpression(keyProp.value.content, true) + : keyProp.exp); + const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null; + const isStableFragment = forNode.source.type === 4 /* SIMPLE_EXPRESSION */ && + forNode.source.constType > 0 /* NOT_CONSTANT */; + const fragmentFlag = isStableFragment + ? 64 /* STABLE_FRAGMENT */ + : keyProp + ? 128 /* KEYED_FRAGMENT */ + : 256 /* UNKEYED_FRAGMENT */; + forNode.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, renderExp, fragmentFlag + + (` /* ${PatchFlagNames[fragmentFlag]} */` ), undefined, undefined, true /* isBlock */, !isStableFragment /* disableTracking */, false /* isComponent */, node.loc); + return () => { + // finish the codegen now that all children have been traversed + let childBlock; + const { children } = forNode; + // check <template v-for> key placement + if (isTemplate) { + node.children.some(c => { + if (c.type === 1 /* ELEMENT */) { + const key = findProp(c, 'key'); + if (key) { + context.onError(createCompilerError(33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */, key.loc)); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1 /* ELEMENT */; + const slotOutlet = isSlotOutlet(node) + ? node + : isTemplate && + node.children.length === 1 && + isSlotOutlet(node.children[0]) + ? node.children[0] // api-extractor somehow fails to infer this + : null; + if (slotOutlet) { + // <slot v-for="..."> or <template v-for="..."><slot/></template> + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + // <template v-for="..." :key="..."><slot/></template> + // we need to inject the key to the renderSlot() call. + // the props for renderSlot is passed as the 3rd argument. + injectProp(childBlock, keyProperty, context); + } + } + else if (needFragmentWrapper) { + // <template v-for="..."> with text or multi-elements + // should generate a fragment block for each loop + childBlock = createVNodeCall(context, helper(FRAGMENT), keyProperty ? createObjectExpression([keyProperty]) : undefined, node.children, 64 /* STABLE_FRAGMENT */ + + (` /* ${PatchFlagNames[64 /* STABLE_FRAGMENT */]} */` + ), undefined, undefined, true, undefined, false /* isComponent */); + } + else { + // Normal element v-for. Directly use the child's codegenNode + // but mark it as a block. + childBlock = children[0] + .codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + // switch from block to vnode + removeHelper(OPEN_BLOCK); + removeHelper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } + else { + // switch from vnode to block + removeHelper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } + else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression(createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ])); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...(keyExp ? [` && _cached.key === `, keyExp] : []), + ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push(loop, createSimpleExpression(`_cache`), createSimpleExpression(String(context.cached++))); + } + else { + renderExp.arguments.push(createFunctionExpression(createForLoopParams(forNode.parseResult), childBlock, true /* force newline */)); + } + }; + }); + }); + // target-agnostic transform used for both Client and SSR + function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError(createCompilerError(31 /* X_V_FOR_NO_EXPRESSION */, dir.loc)); + return; + } + const parseResult = parseForExpression( + // can only be simple expression because vFor transform is applied + // before expression transform. + dir.exp, context); + if (!parseResult) { + context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, dir.loc)); + return; + } + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11 /* FOR */, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + // bookkeeping + scopes.vFor++; + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (onExit) + onExit(); + }; + } + const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; + // This regex doesn't cover the case if key or index aliases have destructuring, + // but those do not make sense in the first place, so this works in practice. + const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; + const stripParensRE = /^\(|\)$/g; + function parseForExpression(input, context) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) + return; + const [, LHS, RHS] = inMatch; + const result = { + source: createAliasExpression(loc, RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: undefined, + key: undefined, + index: undefined + }; + { + validateBrowserExpression(result.source, context); + } + let valueContent = LHS.trim().replace(stripParensRE, '').trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, '').trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(loc, keyContent, keyOffset); + { + validateBrowserExpression(result.key, context, true); + } + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression(loc, indexContent, exp.indexOf(indexContent, result.key + ? keyOffset + keyContent.length + : trimmedOffset + valueContent.length)); + { + validateBrowserExpression(result.index, context, true); + } + } + } + } + if (valueContent) { + result.value = createAliasExpression(loc, valueContent, trimmedOffset); + { + validateBrowserExpression(result.value, context, true); + } + } + return result; + } + function createAliasExpression(range, content, offset) { + return createSimpleExpression(content, false, getInnerRange(range, offset, content.length)); + } + function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); + } + function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) + break; + } + return args + .slice(0, i + 1) + .map((arg, i) => arg || createSimpleExpression(`_`.repeat(i + 1), false)); + } + + const defaultFallback = createSimpleExpression(`undefined`, false); + // A NodeTransform that: + // 1. Tracks scope identifiers for scoped slots so that they don't get prefixed + // by transformExpression. This is only applied in non-browser builds with + // { prefixIdentifiers: true }. + // 2. Track v-slot depths so that we know a slot is inside another slot. + // Note the exit callback is executed before buildSlots() on the same node, + // so only nested slots see positive numbers. + const trackSlotScopes = (node, context) => { + if (node.type === 1 /* ELEMENT */ && + (node.tagType === 1 /* COMPONENT */ || + node.tagType === 3 /* TEMPLATE */)) { + // We are only checking non-empty v-slot here + // since we only care about slots that introduce scope variables. + const vSlot = findDir(node, 'slot'); + if (vSlot) { + vSlot.exp; + context.scopes.vSlot++; + return () => { + context.scopes.vSlot--; + }; + } + } + }; + const buildClientSlotFn = (props, children, loc) => createFunctionExpression(props, children, false /* newline */, true /* isSlot */, children.length ? children[0].loc : loc); + // Instead of being a DirectiveTransform, v-slot processing is called during + // transformElement to build the slots object for a component. + function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + // If the slot is inside a v-for or another v-slot, force it to be dynamic + // since it likely uses a scope variable. + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + // 1. Check for slot with slotProps on component itself. + // <Comp v-slot="{ prop }"/> + const onComponentSlot = findDir(node, 'slot', true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push(createObjectProperty(arg || createSimpleExpression('default', true), buildSlotFn(exp, children, loc))); + } + // 2. Iterate through children and check for template slots + // <template v-slot:foo="{ prop }"> + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = new Set(); + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || + !(slotDir = findDir(slotElement, 'slot', true))) { + // not a <template v-slot>, skip. + if (slotElement.type !== 3 /* COMMENT */) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + // already has on-component slot - this is incorrect usage. + context.onError(createCompilerError(37 /* X_V_SLOT_MIXED_SLOT_USAGE */, slotDir.loc)); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { arg: slotName = createSimpleExpression(`default`, true), exp: slotProps, loc: dirLoc } = slotDir; + // check if name is dynamic. + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } + else { + hasDynamicSlots = true; + } + const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc); + // check if this slot is conditional (v-if/v-for) + let vIf; + let vElse; + let vFor; + if ((vIf = findDir(slotElement, 'if'))) { + hasDynamicSlots = true; + dynamicSlots.push(createConditionalExpression(vIf.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback)); + } + else if ((vElse = findDir(slotElement, /^else(-if)?$/, true /* allowEmpty */))) { + // find adjacent v-if + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 /* COMMENT */) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, 'if')) { + // remove node + children.splice(i, 1); + i--; + // attach this slot to previous conditional + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp + ? createConditionalExpression(vElse.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback) + : buildDynamicSlot(slotName, slotFunction); + } + else { + context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, vElse.loc)); + } + } + else if ((vFor = findDir(slotElement, 'for'))) { + hasDynamicSlots = true; + const parseResult = vFor.parseResult || + parseForExpression(vFor.exp, context); + if (parseResult) { + // Render the dynamic slots as an array and add it to the createSlot() + // args. The runtime knows how to handle it appropriately. + dynamicSlots.push(createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression(createForLoopParams(parseResult), buildDynamicSlot(slotName, slotFunction), true /* force newline */) + ])); + } + else { + context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, vFor.loc)); + } + } + else { + // check duplicate static names + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError(createCompilerError(38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */, dirLoc)); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === 'default') { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children) => { + const fn = buildSlotFn(props, children, loc); + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + // implicit default slot (on component) + slotsProperties.push(buildDefaultSlotProperty(undefined, children)); + } + else if (implicitDefaultChildren.length && + // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some(node => isNonWhitespaceContent(node))) { + // implicit default slot (mixed with named slots) + if (hasNamedDefaultSlot) { + context.onError(createCompilerError(39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */, implicitDefaultChildren[0].loc)); + } + else { + slotsProperties.push(buildDefaultSlotProperty(undefined, implicitDefaultChildren)); + } + } + } + const slotFlag = hasDynamicSlots + ? 2 /* DYNAMIC */ + : hasForwardedSlots(node.children) + ? 3 /* FORWARDED */ + : 1 /* STABLE */; + let slots = createObjectExpression(slotsProperties.concat(createObjectProperty(`_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression(slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), false))), loc); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; + } + function buildDynamicSlot(name, fn) { + return createObjectExpression([ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]); + } + function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1 /* ELEMENT */: + if (child.tagType === 2 /* SLOT */ || + hasForwardedSlots(child.children)) { + return true; + } + break; + case 9 /* IF */: + if (hasForwardedSlots(child.branches)) + return true; + break; + case 10 /* IF_BRANCH */: + case 11 /* FOR */: + if (hasForwardedSlots(child.children)) + return true; + break; + } + } + return false; + } + function isNonWhitespaceContent(node) { + if (node.type !== 2 /* TEXT */ && node.type !== 12 /* TEXT_CALL */) + return true; + return node.type === 2 /* TEXT */ + ? !!node.content.trim() + : isNonWhitespaceContent(node.content); + } + + // some directive transforms (e.g. v-model) may return a symbol for runtime + // import, which should be used instead of a resolveDirective call. + const directiveImportMap = new WeakMap(); + // generate a JavaScript AST for this element's codegen + const transformElement = (node, context) => { + // perform the work on exit, after all child expressions have been + // processed and merged. + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 /* ELEMENT */ && + (node.tagType === 0 /* ELEMENT */ || + node.tagType === 1 /* COMPONENT */))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1 /* COMPONENT */; + // The goal of the transform is to create a codegenNode implementing the + // VNodeCall interface. + let vnodeTag = isComponent + ? resolveComponentType(node, context) + : `"${tag}"`; + const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let vnodePatchFlag; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = + // dynamic component may resolve to plain elements + isDynamicComponent || + vnodeTag === TELEPORT || + vnodeTag === SUSPENSE || + (!isComponent && + // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === 'svg' || tag === 'foreignObject')); + // props + if (props.length > 0) { + const propsBuildResult = buildProps(node, context, undefined, isComponent, isDynamicComponent); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = + directives && directives.length + ? createArrayExpression(directives.map(dir => buildDirectiveArgs(dir, context))) + : undefined; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + // children + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + // Although a built-in component, we compile KeepAlive with raw children + // instead of slot functions so that it can be used inside Transition + // or other Transition-wrapping HOCs. + // To ensure correct updates with block optimizations, we need to: + // 1. Force keep-alive into a block. This avoids its children being + // collected by a parent block. + shouldUseBlock = true; + // 2. Force keep-alive to always be updated, since it uses raw children. + patchFlag |= 1024 /* DYNAMIC_SLOTS */; + if (node.children.length > 1) { + context.onError(createCompilerError(45 /* X_KEEP_ALIVE_INVALID_CHILDREN */, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: '' + })); + } + } + const shouldBuildAsSlots = isComponent && + // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && + // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024 /* DYNAMIC_SLOTS */; + } + } + else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + // check for dynamic text children + const hasDynamicTextChild = type === 5 /* INTERPOLATION */ || + type === 8 /* COMPOUND_EXPRESSION */; + if (hasDynamicTextChild && + getConstantType(child, context) === 0 /* NOT_CONSTANT */) { + patchFlag |= 1 /* TEXT */; + } + // pass directly if the only child is a text node + // (plain / interpolation / expression) + if (hasDynamicTextChild || type === 2 /* TEXT */) { + vnodeChildren = child; + } + else { + vnodeChildren = node.children; + } + } + else { + vnodeChildren = node.children; + } + } + // patchFlag & dynamicPropNames + if (patchFlag !== 0) { + { + if (patchFlag < 0) { + // special flags (negative and mutually exclusive) + vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`; + } + else { + // bitwise flags + const flagNames = Object.keys(PatchFlagNames) + .map(Number) + .filter(n => n > 0 && patchFlag & n) + .map(n => PatchFlagNames[n]) + .join(`, `); + vnodePatchFlag = patchFlag + ` /* ${flagNames} */`; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + } + node.codegenNode = createVNodeCall(context, vnodeTag, vnodeProps, vnodeChildren, vnodePatchFlag, vnodeDynamicProps, vnodeDirectives, !!shouldUseBlock, false /* disableTracking */, isComponent, node.loc); + }; + }; + function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + // 1. dynamic component + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp(node, 'is'); + if (isProp) { + if (isExplicitDynamic || + (false )) { + const exp = isProp.type === 6 /* ATTRIBUTE */ + ? isProp.value && createSimpleExpression(isProp.value.content, true) + : isProp.exp; + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } + else if (isProp.type === 6 /* ATTRIBUTE */ && + isProp.value.content.startsWith('vue:')) { + // <button is="vue:xxx"> + // if not <component>, only is value that starts with "vue:" will be + // treated as component by the parse phase and reach here, unless it's + // compat mode where all is values are considered components + tag = isProp.value.content.slice(4); + } + } + // 1.5 v-is (TODO: Deprecate) + const isDir = !isExplicitDynamic && findDir(node, 'is'); + if (isDir && isDir.exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + isDir.exp + ]); + } + // 2. built-in components (Teleport, Transition, KeepAlive, Suspense...) + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + // built-ins are simply fallthroughs / have special handling during ssr + // so we don't need to import their runtime equivalents + if (!ssr) + context.helper(builtIn); + return builtIn; + } + // 5. user component (resolve) + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); + } + function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + // patchFlag analysis + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = isOn(name); + if (isEventHandler && + (!isComponent || isDynamicComponent) && + // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== 'onclick' && + // omit v-model handlers + name !== 'onUpdate:modelValue' && + // omit onVnodeXXX hooks + !isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && isReservedProp(name)) { + hasVnodeHook = true; + } + if (value.type === 20 /* JS_CACHE_EXPRESSION */ || + ((value.type === 4 /* SIMPLE_EXPRESSION */ || + value.type === 8 /* COMPOUND_EXPRESSION */) && + getConstantType(value, context) > 0)) { + // skip if the prop is a cached handler or has constant value + return; + } + if (name === 'ref') { + hasRef = true; + } + else if (name === 'class') { + hasClassBinding = true; + } + else if (name === 'style') { + hasStyleBinding = true; + } + else if (name !== 'key' && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + // treat the dynamic class and style binding of the component as dynamic props + if (isComponent && + (name === 'class' || name === 'style') && + !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } + else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + // static attribute + const prop = props[i]; + if (prop.type === 6 /* ATTRIBUTE */) { + const { loc, name, value } = prop; + let isStatic = true; + if (name === 'ref') { + hasRef = true; + if (context.scopes.vFor > 0) { + properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true'))); + } + } + // skip is on <component>, or is="vue:xxx" + if (name === 'is' && + (isComponentTag(tag) || + (value && value.content.startsWith('vue:')) || + (false ))) { + continue; + } + properties.push(createObjectProperty(createSimpleExpression(name, true, getInnerRange(loc, 0, name.length)), createSimpleExpression(value ? value.content : '', isStatic, value ? value.loc : loc))); + } + else { + // directives + const { name, arg, exp, loc } = prop; + const isVBind = name === 'bind'; + const isVOn = name === 'on'; + // skip v-slot - it is handled by its dedicated transform. + if (name === 'slot') { + if (!isComponent) { + context.onError(createCompilerError(40 /* X_V_SLOT_MISPLACED */, loc)); + } + continue; + } + // skip v-once/v-memo - they are handled by dedicated transforms. + if (name === 'once' || name === 'memo') { + continue; + } + // skip v-is and :is on <component> + if (name === 'is' || + (isVBind && + isStaticArgOf(arg, 'is') && + (isComponentTag(tag) || + (false )))) { + continue; + } + // skip v-on in SSR compilation + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + (isVBind && isStaticArgOf(arg, 'key')) || + // inline before-update hooks need to force block so that it is invoked + // before children + (isVOn && hasChildren && isStaticArgOf(arg, 'vue:before-update'))) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, 'ref') && context.scopes.vFor > 0) { + properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true'))); + } + // special case for v-bind and v-on with no argument + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (properties.length) { + mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc)); + properties = []; + } + if (isVBind) { + mergeArgs.push(exp); + } + else { + // v-on="obj" -> toHandlers(obj) + mergeArgs.push({ + type: 14 /* JS_CALL_EXPRESSION */, + loc, + callee: context.helper(TO_HANDLERS), + arguments: [exp] + }); + } + } + else { + context.onError(createCompilerError(isVBind + ? 34 /* X_V_BIND_NO_EXPRESSION */ + : 35 /* X_V_ON_NO_EXPRESSION */, loc)); + } + continue; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + // has built-in directive transform. + const { props, needRuntime } = directiveTransform(prop, node, context); + !ssr && props.forEach(analyzePatchFlag); + properties.push(...props); + if (needRuntime) { + runtimeDirectives.push(prop); + if (isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } + else if (!isBuiltInDirective(name)) { + // no built-in transform, this is a user custom directive. + runtimeDirectives.push(prop); + // custom dirs may use beforeUpdate so they need to force blocks + // to ensure before-update gets called before children update + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = undefined; + // has v-bind="object" or v-on="object", wrap with mergeProps + if (mergeArgs.length) { + if (properties.length) { + mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc)); + } + if (mergeArgs.length > 1) { + propsExpression = createCallExpression(context.helper(MERGE_PROPS), mergeArgs, elementLoc); + } + else { + // single v-bind with nothing else - no need for a mergeProps call + propsExpression = mergeArgs[0]; + } + } + else if (properties.length) { + propsExpression = createObjectExpression(dedupeProperties(properties), elementLoc); + } + // patchFlag analysis + if (hasDynamicKeys) { + patchFlag |= 16 /* FULL_PROPS */; + } + else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2 /* CLASS */; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4 /* STYLE */; + } + if (dynamicPropNames.length) { + patchFlag |= 8 /* PROPS */; + } + if (hasHydrationEventBinding) { + patchFlag |= 32 /* HYDRATE_EVENTS */; + } + } + if (!shouldUseBlock && + (patchFlag === 0 || patchFlag === 32 /* HYDRATE_EVENTS */) && + (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512 /* NEED_PATCH */; + } + // pre-normalize props, SSR is skipped for now + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15 /* JS_OBJECT_EXPRESSION */: + // means that there is no v-bind, + // but still need to deal with dynamic key binding + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === 'class') { + classKeyIndex = i; + } + else if (key.content === 'style') { + styleKeyIndex = i; + } + } + else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + // no dynamic key + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression(context.helper(NORMALIZE_CLASS), [classProp.value]); + } + if (styleProp && + // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || + (styleProp.value.type === 4 /* SIMPLE_EXPRESSION */ && + styleProp.value.content.trim()[0] === `[`) || + // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17 /* JS_ARRAY_EXPRESSION */)) { + styleProp.value = createCallExpression(context.helper(NORMALIZE_STYLE), [styleProp.value]); + } + } + else { + // dynamic key binding, wrap with `normalizeProps` + propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [propsExpression]); + } + break; + case 14 /* JS_CALL_EXPRESSION */: + // mergeProps call, do nothing + break; + default: + // single v-bind + propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ]); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; + } + // Dedupe props in an object literal. + // Literal duplicated attributes would have been warned during the parse phase, + // however, it's possible to encounter duplicated `onXXX` handlers with different + // modifiers. We also need to merge static and dynamic class / style attributes. + // - onXXX handlers / style: merge into array + // - class: merge into single expression with concatenation + function dedupeProperties(properties) { + const knownProps = new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + // dynamic keys are always allowed + if (prop.key.type === 8 /* COMPOUND_EXPRESSION */ || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === 'style' || name === 'class' || isOn(name)) { + mergeAsArray$1(existing, prop); + } + // unexpected duplicate, should have emitted error during parse + } + else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; + } + function mergeAsArray$1(existing, incoming) { + if (existing.value.type === 17 /* JS_ARRAY_EXPRESSION */) { + existing.value.elements.push(incoming.value); + } + else { + existing.value = createArrayExpression([existing.value, incoming.value], existing.loc); + } + } + function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + // built-in directive with runtime + dirArgs.push(context.helperString(runtime)); + } + else { + { + // inject statement for resolving directive + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) + dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push(createObjectExpression(dir.modifiers.map(modifier => createObjectProperty(modifier, trueExpression)), loc)); + } + return createArrayExpression(dirArgs, dir.loc); + } + function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) + propsNamesString += ', '; + } + return propsNamesString + `]`; + } + function isComponentTag(tag) { + return tag === 'component' || tag === 'Component'; + } + + const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + '{}', + 'undefined', + 'true' + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); // remove unused arguments + node.codegenNode = createCallExpression(context.helper(RENDER_SLOT), slotArgs, loc); + } + }; + function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = undefined; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6 /* ATTRIBUTE */) { + if (p.value) { + if (p.name === 'name') { + slotName = JSON.stringify(p.value.content); + } + else { + p.name = camelize(p.name); + nonNameProps.push(p); + } + } + } + else { + if (p.name === 'bind' && isStaticArgOf(p.arg, 'name')) { + if (p.exp) + slotName = p.exp; + } + else { + if (p.name === 'bind' && p.arg && isStaticExp(p.arg)) { + p.arg.content = camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps(node, context, nonNameProps, false, false); + slotProps = props; + if (directives.length) { + context.onError(createCompilerError(36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */, directives[0].loc)); + } + } + return { + slotName, + slotProps + }; + } + + const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; + const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35 /* X_V_ON_NO_EXPRESSION */, loc)); + } + let eventName; + if (arg.type === 4 /* SIMPLE_EXPRESSION */) { + if (arg.isStatic) { + let rawName = arg.content; + // TODO deprecate @vnodeXXX usage + if (rawName.startsWith('vue:')) { + rawName = `vnode-${rawName.slice(4)}`; + } + // for all event listeners, auto convert it to camelCase. See issue #2249 + eventName = createSimpleExpression(toHandlerKey(camelize(rawName)), true, arg.loc); + } + else { + // #2388 + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } + else { + // already a compound expression. + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + // handler processing + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = undefined; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp.content); + const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content)); + const hasMultipleStatements = exp.content.includes(`;`); + { + validateBrowserExpression(exp, context, false, hasMultipleStatements); + } + if (isInlineStatement || (shouldCache && isMemberExp)) { + // wrap inline statement in a function expression + exp = createCompoundExpression([ + `${isInlineStatement + ? `$event` + : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty(eventName, exp || createSimpleExpression(`() => {}`, false, loc)) + ] + }; + // apply extended compiler augmentor + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + // cache handlers so that it's always the same handler being passed down. + // this avoids unnecessary re-renders when users use inline handlers on + // components. + ret.props[0].value = context.cache(ret.props[0].value); + } + // mark the key as handler for props normalization check + ret.props.forEach(p => (p.key.isHandlerKey = true)); + return ret; + }; + + // v-bind without arg is handled directly in ./transformElements.ts due to it affecting + // codegen for the entire props object. This transform here is only for v-bind + // *with* args. + const transformBind = (dir, _node, context) => { + const { exp, modifiers, loc } = dir; + const arg = dir.arg; + if (arg.type !== 4 /* SIMPLE_EXPRESSION */) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } + else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } + // .sync is replaced by v-model:arg + if (modifiers.includes('camel')) { + if (arg.type === 4 /* SIMPLE_EXPRESSION */) { + if (arg.isStatic) { + arg.content = camelize(arg.content); + } + else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } + else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.includes('prop')) { + injectPrefix(arg, '.'); + } + if (modifiers.includes('attr')) { + injectPrefix(arg, '^'); + } + } + if (!exp || + (exp.type === 4 /* SIMPLE_EXPRESSION */ && !exp.content.trim())) { + context.onError(createCompilerError(34 /* X_V_BIND_NO_EXPRESSION */, loc)); + return { + props: [createObjectProperty(arg, createSimpleExpression('', true, loc))] + }; + } + return { + props: [createObjectProperty(arg, exp)] + }; + }; + const injectPrefix = (arg, prefix) => { + if (arg.type === 4 /* SIMPLE_EXPRESSION */) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } + else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } + else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } + }; + + // Merge adjacent text nodes and expressions into a single expression + // e.g. <div>abc {{ d }} {{ e }}</div> should have a single expression node as child. + const transformText = (node, context) => { + if (node.type === 0 /* ROOT */ || + node.type === 1 /* ELEMENT */ || + node.type === 11 /* FOR */ || + node.type === 10 /* IF_BRANCH */) { + // perform the transform on node exit so that all expressions have already + // been processed. + return () => { + const children = node.children; + let currentContainer = undefined; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression([child], child.loc); + } + // merge adjacent text node into current + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } + else { + currentContainer = undefined; + break; + } + } + } + } + if (!hasText || + // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + (children.length === 1 && + (node.type === 0 /* ROOT */ || + (node.type === 1 /* ELEMENT */ && + node.tagType === 0 /* ELEMENT */ && + // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find(p => p.type === 7 /* DIRECTIVE */ && + !context.directiveTransforms[p.name]) && + // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(false ))))) { + return; + } + // pre-convert text nodes into createTextVNode(text) calls to avoid + // runtime normalization. + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText(child) || child.type === 8 /* COMPOUND_EXPRESSION */) { + const callArgs = []; + // createTextVNode defaults to single whitespace, so if it is a + // single space the code could be an empty call to save bytes. + if (child.type !== 2 /* TEXT */ || child.content !== ' ') { + callArgs.push(child); + } + // mark dynamic text with flag so it gets patched inside a block + if (!context.ssr && + getConstantType(child, context) === 0 /* NOT_CONSTANT */) { + callArgs.push(1 /* TEXT */ + + (` /* ${PatchFlagNames[1 /* TEXT */]} */` )); + } + children[i] = { + type: 12 /* TEXT_CALL */, + content: child, + loc: child.loc, + codegenNode: createCallExpression(context.helper(CREATE_TEXT), callArgs) + }; + } + } + }; + } + }; + + const seen = new WeakSet(); + const transformOnce = (node, context) => { + if (node.type === 1 /* ELEMENT */ && findDir(node, 'once', true)) { + if (seen.has(node) || context.inVOnce) { + return; + } + seen.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache(cur.codegenNode, true /* isVNode */); + } + }; + } + }; + + const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError(createCompilerError(41 /* X_V_MODEL_NO_EXPRESSION */, dir.loc)); + return createTransformProps(); + } + const rawExp = exp.loc.source; + const expString = exp.type === 4 /* SIMPLE_EXPRESSION */ ? exp.content : rawExp; + // im SFC <script setup> inline mode, the exp may have been transformed into + // _unref(exp) + context.bindingMetadata[rawExp]; + const maybeRef = !true /* SETUP_CONST */; + if (!expString.trim() || + (!isMemberExpression(expString) && !maybeRef)) { + context.onError(createCompilerError(42 /* X_V_MODEL_MALFORMED_EXPRESSION */, exp.loc)); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression('modelValue', true); + const eventName = arg + ? isStaticExp(arg) + ? `onUpdate:${arg.content}` + : createCompoundExpression(['"onUpdate:" + ', arg]) + : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + // modelModifiers: { foo: true, "bar-baz": true } + if (dir.modifiers.length && node.tagType === 1 /* COMPONENT */) { + const modifiers = dir.modifiers + .map(m => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`) + .join(`, `); + const modifiersKey = arg + ? isStaticExp(arg) + ? `${arg.content}Modifiers` + : createCompoundExpression([arg, ' + "Modifiers"']) + : `modelModifiers`; + props.push(createObjectProperty(modifiersKey, createSimpleExpression(`{ ${modifiers} }`, false, dir.loc, 2 /* CAN_HOIST */))); + } + return createTransformProps(props); + }; + function createTransformProps(props = []) { + return { props }; + } + + const seen$1 = new WeakSet(); + const transformMemo = (node, context) => { + if (node.type === 1 /* ELEMENT */) { + const dir = findDir(node, 'memo'); + if (!dir || seen$1.has(node)) { + return; + } + seen$1.add(node); + return () => { + const codegenNode = node.codegenNode || + context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13 /* VNODE_CALL */) { + // non-component sub tree should be turned into a block + if (node.tagType !== 1 /* COMPONENT */) { + makeBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(undefined, codegenNode), + `_cache`, + String(context.cached++) + ]); + } + }; + } + }; + + function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...([]), + ...([transformExpression] + ), + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; + } + // we name it `baseCompile` so that higher order compilers like + // @vue/compiler-dom can export `compile` while re-exporting everything else. + function baseCompile(template, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === 'module'; + /* istanbul ignore if */ + { + if (options.prefixIdentifiers === true) { + onError(createCompilerError(46 /* X_PREFIX_ID_NOT_SUPPORTED */)); + } + else if (isModuleMode) { + onError(createCompilerError(47 /* X_MODULE_MODE_NOT_SUPPORTED */)); + } + } + const prefixIdentifiers = !true ; + if (options.cacheHandlers) { + onError(createCompilerError(48 /* X_CACHE_HANDLER_NOT_SUPPORTED */)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(49 /* X_SCOPE_ID_NOT_SUPPORTED */)); + } + const ast = isString(template) ? baseParse(template, options) : template; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(); + transform(ast, extend({}, options, { + prefixIdentifiers, + nodeTransforms: [ + ...nodeTransforms, + ...(options.nodeTransforms || []) // user transforms + ], + directiveTransforms: extend({}, directiveTransforms, options.directiveTransforms || {} // user transforms + ) + })); + return generate(ast, extend({}, options, { + prefixIdentifiers + })); + } + + const noopDirectiveTransform = () => ({ props: [] }); + + const V_MODEL_RADIO = Symbol(`vModelRadio` ); + const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` ); + const V_MODEL_TEXT = Symbol(`vModelText` ); + const V_MODEL_SELECT = Symbol(`vModelSelect` ); + const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` ); + const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` ); + const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` ); + const V_SHOW = Symbol(`vShow` ); + const TRANSITION$1 = Symbol(`Transition` ); + const TRANSITION_GROUP = Symbol(`TransitionGroup` ); + registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION$1]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` + }); + + /* eslint-disable no-restricted-globals */ + let decoder; + function decodeHtmlBrowser(raw, asAttr = false) { + if (!decoder) { + decoder = document.createElement('div'); + } + if (asAttr) { + decoder.innerHTML = `<div foo="${raw.replace(/"/g, '"')}">`; + return decoder.children[0].getAttribute('foo'); + } + else { + decoder.innerHTML = raw; + return decoder.textContent; + } + } + + const isRawTextContainer = /*#__PURE__*/ makeMap('style,iframe,script,noscript', true); + const parserOptions = { + isVoidTag, + isNativeTag: tag => isHTMLTag(tag) || isSVGTag(tag), + isPreTag: tag => tag === 'pre', + decodeEntities: decodeHtmlBrowser , + isBuiltInComponent: (tag) => { + if (isBuiltInType(tag, `Transition`)) { + return TRANSITION$1; + } + else if (isBuiltInType(tag, `TransitionGroup`)) { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent) { + let ns = parent ? parent.ns : 0 /* HTML */; + if (parent && ns === 2 /* MATH_ML */) { + if (parent.tag === 'annotation-xml') { + if (tag === 'svg') { + return 1 /* SVG */; + } + if (parent.props.some(a => a.type === 6 /* ATTRIBUTE */ && + a.name === 'encoding' && + a.value != null && + (a.value.content === 'text/html' || + a.value.content === 'application/xhtml+xml'))) { + ns = 0 /* HTML */; + } + } + else if (/^m(?:[ions]|text)$/.test(parent.tag) && + tag !== 'mglyph' && + tag !== 'malignmark') { + ns = 0 /* HTML */; + } + } + else if (parent && ns === 1 /* SVG */) { + if (parent.tag === 'foreignObject' || + parent.tag === 'desc' || + parent.tag === 'title') { + ns = 0 /* HTML */; + } + } + if (ns === 0 /* HTML */) { + if (tag === 'svg') { + return 1 /* SVG */; + } + if (tag === 'math') { + return 2 /* MATH_ML */; + } + } + return ns; + }, + // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments + getTextMode({ tag, ns }) { + if (ns === 0 /* HTML */) { + if (tag === 'textarea' || tag === 'title') { + return 1 /* RCDATA */; + } + if (isRawTextContainer(tag)) { + return 2 /* RAWTEXT */; + } + } + return 0 /* DATA */; + } + }; + + // Parse inline CSS strings for static style attributes into an object. + // This is a NodeTransform since it works on the static `style` attribute and + // converts it into a dynamic equivalent: + // style="color: red" -> :style='{ "color": "red" }' + // It is then processed by `transformElement` and included in the generated + // props. + const transformStyle = node => { + if (node.type === 1 /* ELEMENT */) { + node.props.forEach((p, i) => { + if (p.type === 6 /* ATTRIBUTE */ && p.name === 'style' && p.value) { + // replace p with an expression node + node.props[i] = { + type: 7 /* DIRECTIVE */, + name: `bind`, + arg: createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } + }; + const parseInlineCSS = (cssText, loc) => { + const normalized = parseStringStyle(cssText); + return createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* CAN_STRINGIFY */); + }; + + function createDOMCompilerError(code, loc) { + return createCompilerError(code, loc, DOMErrorMessages ); + } + const DOMErrorMessages = { + [50 /* X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`, + [51 /* X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`, + [52 /* X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`, + [53 /* X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`, + [54 /* X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [55 /* X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`, + [56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [57 /* X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [58 /* X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`, + [59 /* X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`, + [60 /* X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` + }; + + const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError(createDOMCompilerError(50 /* X_V_HTML_NO_EXPRESSION */, loc)); + } + if (node.children.length) { + context.onError(createDOMCompilerError(51 /* X_V_HTML_WITH_CHILDREN */, loc)); + node.children.length = 0; + } + return { + props: [ + createObjectProperty(createSimpleExpression(`innerHTML`, true, loc), exp || createSimpleExpression('', true)) + ] + }; + }; + + const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError(createDOMCompilerError(52 /* X_V_TEXT_NO_EXPRESSION */, loc)); + } + if (node.children.length) { + context.onError(createDOMCompilerError(53 /* X_V_TEXT_WITH_CHILDREN */, loc)); + node.children.length = 0; + } + return { + props: [ + createObjectProperty(createSimpleExpression(`textContent`, true), exp + ? getConstantType(exp, context) > 0 + ? exp + : createCallExpression(context.helperString(TO_DISPLAY_STRING), [exp], loc) + : createSimpleExpression('', true)) + ] + }; + }; + + const transformModel$1 = (dir, node, context) => { + const baseResult = transformModel(dir, node, context); + // base transform has errors OR component v-model (only need props) + if (!baseResult.props.length || node.tagType === 1 /* COMPONENT */) { + return baseResult; + } + if (dir.arg) { + context.onError(createDOMCompilerError(55 /* X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc)); + } + function checkDuplicatedValue() { + const value = findProp(node, 'value'); + if (value) { + context.onError(createDOMCompilerError(57 /* X_V_MODEL_UNNECESSARY_VALUE */, value.loc)); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === 'input' || + tag === 'textarea' || + tag === 'select' || + isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === 'input' || isCustomElement) { + const type = findProp(node, `type`); + if (type) { + if (type.type === 7 /* DIRECTIVE */) { + // :type="foo" + directiveToUse = V_MODEL_DYNAMIC; + } + else if (type.value) { + switch (type.value.content) { + case 'radio': + directiveToUse = V_MODEL_RADIO; + break; + case 'checkbox': + directiveToUse = V_MODEL_CHECKBOX; + break; + case 'file': + isInvalidType = true; + context.onError(createDOMCompilerError(56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc)); + break; + default: + // text type + checkDuplicatedValue(); + break; + } + } + } + else if (hasDynamicKeyVBind(node)) { + // element has bindings with dynamic keys, which can possibly contain + // "type". + directiveToUse = V_MODEL_DYNAMIC; + } + else { + // text type + checkDuplicatedValue(); + } + } + else if (tag === 'select') { + directiveToUse = V_MODEL_SELECT; + } + else { + // textarea + checkDuplicatedValue(); + } + // inject runtime directive + // by returning the helper symbol via needRuntime + // the import will replaced a resolveDirective call. + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } + else { + context.onError(createDOMCompilerError(54 /* X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc)); + } + // native vmodel doesn't need the `modelValue` props since they are also + // passed to the runtime as `binding.value`. removing it reduces code size. + baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* SIMPLE_EXPRESSION */ && + p.key.content === 'modelValue')); + return baseResult; + }; + + const isEventOptionModifier = /*#__PURE__*/ makeMap(`passive,once,capture`); + const isNonKeyModifier = /*#__PURE__*/ makeMap( + // event propagation management +`stop,prevent,self,` + + // system modifiers + exact + `ctrl,shift,alt,meta,exact,` + + // mouse + `middle`); + // left & right could be mouse or key modifiers based on event type + const maybeKeyModifier = /*#__PURE__*/ makeMap('left,right'); + const isKeyboardEvent = /*#__PURE__*/ makeMap(`onkeyup,onkeydown,onkeypress`, true); + const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i]; + if (isEventOptionModifier(modifier)) { + // eventOptionModifiers: modifiers for addEventListener() options, + // e.g. .passive & .capture + eventOptionModifiers.push(modifier); + } + else { + // runtimeModifiers: modifiers that needs runtime guards + if (maybeKeyModifier(modifier)) { + if (isStaticExp(key)) { + if (isKeyboardEvent(key.content)) { + keyModifiers.push(modifier); + } + else { + nonKeyModifiers.push(modifier); + } + } + else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } + else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } + else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; + }; + const transformClick = (key, event) => { + const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === 'onclick'; + return isStaticClick + ? createSimpleExpression(event, true) + : key.type !== 4 /* SIMPLE_EXPRESSION */ + ? createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) + : key; + }; + const transformOn$1 = (dir, node, context) => { + return transformOn(dir, node, context, baseResult => { + const { modifiers } = dir; + if (!modifiers.length) + return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + // normalize click.right and click.middle since they don't actually fire + if (nonKeyModifiers.includes('right')) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes('middle')) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && + // if event name is dynamic, always wrap with keys guard + (!isStaticExp(key) || isKeyboardEvent(key.content))) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(capitalize).join(''); + key = isStaticExp(key) + ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) + : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [createObjectProperty(key, handlerExp)] + }; + }); + }; + + const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError(createDOMCompilerError(58 /* X_V_SHOW_NO_EXPRESSION */, loc)); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; + }; + + const transformTransition = (node, context) => { + if (node.type === 1 /* ELEMENT */ && + node.tagType === 1 /* COMPONENT */) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION$1) { + return () => { + if (!node.children.length) { + return; + } + // warn multiple transition children + if (hasMultipleChildren(node)) { + context.onError(createDOMCompilerError(59 /* X_TRANSITION_INVALID_CHILDREN */, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: '' + })); + } + // check if it's s single child w/ v-show + // if yes, inject "persisted: true" to the transition props + const child = node.children[0]; + if (child.type === 1 /* ELEMENT */) { + for (const p of child.props) { + if (p.type === 7 /* DIRECTIVE */ && p.name === 'show') { + node.props.push({ + type: 6 /* ATTRIBUTE */, + name: 'persisted', + value: undefined, + loc: node.loc + }); + } + } + } + }; + } + } + }; + function hasMultipleChildren(node) { + // #1352 filter out potential comment nodes. + const children = (node.children = node.children.filter(c => c.type !== 3 /* COMMENT */ && + !(c.type === 2 /* TEXT */ && !c.content.trim()))); + const child = children[0]; + return (children.length !== 1 || + child.type === 11 /* FOR */ || + (child.type === 9 /* IF */ && child.branches.some(hasMultipleChildren))); + } + + const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 /* ELEMENT */ && + node.tagType === 0 /* ELEMENT */ && + (node.tag === 'script' || node.tag === 'style')) { + context.onError(createDOMCompilerError(60 /* X_IGNORED_SIDE_EFFECT_TAG */, node.loc)); + context.removeNode(); + } + }; + + const DOMNodeTransforms = [ + transformStyle, + ...([transformTransition] ) + ]; + const DOMDirectiveTransforms = { + cloak: noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel$1, + on: transformOn$1, + show: transformShow + }; + function compile$1(template, options = {}) { + return baseCompile(template, extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...(options.nodeTransforms || []) + ], + directiveTransforms: extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}), + transformHoist: null + })); + } + + // This entry is the "full-build" that includes both the runtime + { + initDev(); + } + const compileCache = Object.create(null); + function compileToFunction(template, options) { + if (!isString(template)) { + if (template.nodeType) { + template = template.innerHTML; + } + else { + warn$1(`invalid template option: `, template); + return NOOP; + } + } + const key = template; + const cached = compileCache[key]; + if (cached) { + return cached; + } + if (template[0] === '#') { + const el = document.querySelector(template); + if (!el) { + warn$1(`Template element not found or is empty: ${template}`); + } + // __UNSAFE__ + // Reason: potential execution of JS expressions in in-DOM template. + // The user must make sure the in-DOM template is trusted. If it's rendered + // by the server, the template should not contain any user data. + template = el ? el.innerHTML : ``; + } + const { code } = compile$1(template, extend({ + hoistStatic: true, + onError: onError , + onWarn: e => onError(e, true) + }, options)); + function onError(err, asWarning = false) { + const message = asWarning + ? err.message + : `Template compilation error: ${err.message}`; + const codeFrame = err.loc && + generateCodeFrame(template, err.loc.start.offset, err.loc.end.offset); + warn$1(codeFrame ? `${message}\n${codeFrame}` : message); + } + // The wildcard import results in a huge object with every export + // with keys that cannot be mangled, and can be quite heavy size-wise. + // In the global build we know `Vue` is available globally so we can avoid + // the wildcard object. + const render = (new Function(code)() ); + render._rc = true; + return (compileCache[key] = render); + } + registerRuntimeCompiler(compileToFunction); + + exports.BaseTransition = BaseTransition; + exports.Comment = Comment; + exports.EffectScope = EffectScope; + exports.Fragment = Fragment; + exports.KeepAlive = KeepAlive; + exports.ReactiveEffect = ReactiveEffect; + exports.Static = Static; + exports.Suspense = Suspense; + exports.Teleport = Teleport; + exports.Text = Text; + exports.Transition = Transition; + exports.TransitionGroup = TransitionGroup; + exports.VueElement = VueElement; + exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; + exports.callWithErrorHandling = callWithErrorHandling; + exports.camelize = camelize; + exports.capitalize = capitalize; + exports.cloneVNode = cloneVNode; + exports.compatUtils = compatUtils; + exports.compile = compileToFunction; + exports.computed = computed$1; + exports.createApp = createApp; + exports.createBlock = createBlock; + exports.createCommentVNode = createCommentVNode; + exports.createElementBlock = createElementBlock; + exports.createElementVNode = createBaseVNode; + exports.createHydrationRenderer = createHydrationRenderer; + exports.createPropsRestProxy = createPropsRestProxy; + exports.createRenderer = createRenderer; + exports.createSSRApp = createSSRApp; + exports.createSlots = createSlots; + exports.createStaticVNode = createStaticVNode; + exports.createTextVNode = createTextVNode; + exports.createVNode = createVNode; + exports.customRef = customRef; + exports.defineAsyncComponent = defineAsyncComponent; + exports.defineComponent = defineComponent; + exports.defineCustomElement = defineCustomElement; + exports.defineEmits = defineEmits; + exports.defineExpose = defineExpose; + exports.defineProps = defineProps; + exports.defineSSRCustomElement = defineSSRCustomElement; + exports.effect = effect; + exports.effectScope = effectScope; + exports.getCurrentInstance = getCurrentInstance; + exports.getCurrentScope = getCurrentScope; + exports.getTransitionRawChildren = getTransitionRawChildren; + exports.guardReactiveProps = guardReactiveProps; + exports.h = h; + exports.handleError = handleError; + exports.hydrate = hydrate; + exports.initCustomFormatter = initCustomFormatter; + exports.initDirectivesForSSR = initDirectivesForSSR; + exports.inject = inject; + exports.isMemoSame = isMemoSame; + exports.isProxy = isProxy; + exports.isReactive = isReactive; + exports.isReadonly = isReadonly; + exports.isRef = isRef; + exports.isRuntimeOnly = isRuntimeOnly; + exports.isShallow = isShallow; + exports.isVNode = isVNode; + exports.markRaw = markRaw; + exports.mergeDefaults = mergeDefaults; + exports.mergeProps = mergeProps; + exports.nextTick = nextTick; + exports.normalizeClass = normalizeClass; + exports.normalizeProps = normalizeProps; + exports.normalizeStyle = normalizeStyle; + exports.onActivated = onActivated; + exports.onBeforeMount = onBeforeMount; + exports.onBeforeUnmount = onBeforeUnmount; + exports.onBeforeUpdate = onBeforeUpdate; + exports.onDeactivated = onDeactivated; + exports.onErrorCaptured = onErrorCaptured; + exports.onMounted = onMounted; + exports.onRenderTracked = onRenderTracked; + exports.onRenderTriggered = onRenderTriggered; + exports.onScopeDispose = onScopeDispose; + exports.onServerPrefetch = onServerPrefetch; + exports.onUnmounted = onUnmounted; + exports.onUpdated = onUpdated; + exports.openBlock = openBlock; + exports.popScopeId = popScopeId; + exports.provide = provide; + exports.proxyRefs = proxyRefs; + exports.pushScopeId = pushScopeId; + exports.queuePostFlushCb = queuePostFlushCb; + exports.reactive = reactive; + exports.readonly = readonly; + exports.ref = ref; + exports.registerRuntimeCompiler = registerRuntimeCompiler; + exports.render = render; + exports.renderList = renderList; + exports.renderSlot = renderSlot; + exports.resolveComponent = resolveComponent; + exports.resolveDirective = resolveDirective; + exports.resolveDynamicComponent = resolveDynamicComponent; + exports.resolveFilter = resolveFilter; + exports.resolveTransitionHooks = resolveTransitionHooks; + exports.setBlockTracking = setBlockTracking; + exports.setDevtoolsHook = setDevtoolsHook; + exports.setTransitionHooks = setTransitionHooks; + exports.shallowReactive = shallowReactive; + exports.shallowReadonly = shallowReadonly; + exports.shallowRef = shallowRef; + exports.ssrContextKey = ssrContextKey; + exports.ssrUtils = ssrUtils; + exports.stop = stop; + exports.toDisplayString = toDisplayString; + exports.toHandlerKey = toHandlerKey; + exports.toHandlers = toHandlers; + exports.toRaw = toRaw; + exports.toRef = toRef; + exports.toRefs = toRefs; + exports.transformVNodeArgs = transformVNodeArgs; + exports.triggerRef = triggerRef; + exports.unref = unref; + exports.useAttrs = useAttrs; + exports.useCssModule = useCssModule; + exports.useCssVars = useCssVars; + exports.useSSRContext = useSSRContext; + exports.useSlots = useSlots; + exports.useTransitionState = useTransitionState; + exports.vModelCheckbox = vModelCheckbox; + exports.vModelDynamic = vModelDynamic; + exports.vModelRadio = vModelRadio; + exports.vModelSelect = vModelSelect; + exports.vModelText = vModelText; + exports.vShow = vShow; + exports.version = version; + exports.warn = warn$1; + exports.watch = watch; + exports.watchEffect = watchEffect; + exports.watchPostEffect = watchPostEffect; + exports.watchSyncEffect = watchSyncEffect; + exports.withAsyncContext = withAsyncContext; + exports.withCtx = withCtx; + exports.withDefaults = withDefaults; + exports.withDirectives = withDirectives; + exports.withKeys = withKeys; + exports.withMemo = withMemo; + exports.withModifiers = withModifiers; + exports.withScopeId = withScopeId; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; + +}({})); \ No newline at end of file diff --git a/node_modules/.bin/xss b/node_modules/.bin/xss new file mode 100644 index 0000000..79c8f47 --- /dev/null +++ b/node_modules/.bin/xss @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../xss/bin/xss" "$@" +else + exec node "$basedir/../xss/bin/xss" "$@" +fi diff --git a/node_modules/.bin/xss.cmd b/node_modules/.bin/xss.cmd new file mode 100644 index 0000000..9aa358c --- /dev/null +++ b/node_modules/.bin/xss.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\xss\bin\xss" %* diff --git a/node_modules/.bin/xss.ps1 b/node_modules/.bin/xss.ps1 new file mode 100644 index 0000000..63f827b --- /dev/null +++ b/node_modules/.bin/xss.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../xss/bin/xss" $args + } else { + & "$basedir/node$exe" "$basedir/../xss/bin/xss" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../xss/bin/xss" $args + } else { + & "node$exe" "$basedir/../xss/bin/xss" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..3772ed5 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,40 @@ +{ + "name": "PC问答", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/mavon-editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz", + "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==", + "dependencies": { + "xss": "^1.0.10" + } + }, + "node_modules/xss": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", + "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + } + } +} diff --git a/node_modules/commander/CHANGELOG.md b/node_modules/commander/CHANGELOG.md new file mode 100644 index 0000000..7dce779 --- /dev/null +++ b/node_modules/commander/CHANGELOG.md @@ -0,0 +1,419 @@ +2.20.3 / 2019-10-11 +================== + + * Support Node.js 0.10 (Revert #1059) + * Ran "npm unpublish commander@2.20.2". There is no 2.20.2. + +2.20.1 / 2019-09-29 +================== + + * Improve executable subcommand tracking + * Update dev dependencies + +2.20.0 / 2019-04-02 +================== + + * fix: resolve symbolic links completely when hunting for subcommands (#935) + * Update index.d.ts (#930) + * Update Readme.md (#924) + * Remove --save option as it isn't required anymore (#918) + * Add link to the license file (#900) + * Added example of receiving args from options (#858) + * Added missing semicolon (#882) + * Add extension to .eslintrc (#876) + +2.19.0 / 2018-10-02 +================== + + * Removed newline after Options and Commands headers (#864) + * Bugfix - Error output (#862) + * Fix to change default value to string (#856) + +2.18.0 / 2018-09-07 +================== + + * Standardize help output (#853) + * chmod 644 travis.yml (#851) + * add support for execute typescript subcommand via ts-node (#849) + +2.17.1 / 2018-08-07 +================== + + * Fix bug in command emit (#844) + +2.17.0 / 2018-08-03 +================== + + * fixed newline output after help information (#833) + * Fix to emit the action even without command (#778) + * npm update (#823) + +2.16.0 / 2018-06-29 +================== + + * Remove Makefile and `test/run` (#821) + * Make 'npm test' run on Windows (#820) + * Add badge to display install size (#807) + * chore: cache node_modules (#814) + * chore: remove Node.js 4 (EOL), add Node.js 10 (#813) + * fixed typo in readme (#812) + * Fix types (#804) + * Update eslint to resolve vulnerabilities in lodash (#799) + * updated readme with custom event listeners. (#791) + * fix tests (#794) + +2.15.0 / 2018-03-07 +================== + + * Update downloads badge to point to graph of downloads over time instead of duplicating link to npm + * Arguments description + +2.14.1 / 2018-02-07 +================== + + * Fix typing of help function + +2.14.0 / 2018-02-05 +================== + + * only register the option:version event once + * Fixes issue #727: Passing empty string for option on command is set to undefined + * enable eqeqeq rule + * resolves #754 add linter configuration to project + * resolves #560 respect custom name for version option + * document how to override the version flag + * document using options per command + +2.13.0 / 2018-01-09 +================== + + * Do not print default for --no- + * remove trailing spaces in command help + * Update CI's Node.js to LTS and latest version + * typedefs: Command and Option types added to commander namespace + +2.12.2 / 2017-11-28 +================== + + * fix: typings are not shipped + +2.12.1 / 2017-11-23 +================== + + * Move @types/node to dev dependency + +2.12.0 / 2017-11-22 +================== + + * add attributeName() method to Option objects + * Documentation updated for options with --no prefix + * typings: `outputHelp` takes a string as the first parameter + * typings: use overloads + * feat(typings): update to match js api + * Print default value in option help + * Fix translation error + * Fail when using same command and alias (#491) + * feat(typings): add help callback + * fix bug when description is add after command with options (#662) + * Format js code + * Rename History.md to CHANGELOG.md (#668) + * feat(typings): add typings to support TypeScript (#646) + * use current node + +2.11.0 / 2017-07-03 +================== + + * Fix help section order and padding (#652) + * feature: support for signals to subcommands (#632) + * Fixed #37, --help should not display first (#447) + * Fix translation errors. (#570) + * Add package-lock.json + * Remove engines + * Upgrade package version + * Prefix events to prevent conflicts between commands and options (#494) + * Removing dependency on graceful-readlink + * Support setting name in #name function and make it chainable + * Add .vscode directory to .gitignore (Visual Studio Code metadata) + * Updated link to ruby commander in readme files + +2.10.0 / 2017-06-19 +================== + + * Update .travis.yml. drop support for older node.js versions. + * Fix require arguments in README.md + * On SemVer you do not start from 0.0.1 + * Add missing semi colon in readme + * Add save param to npm install + * node v6 travis test + * Update Readme_zh-CN.md + * Allow literal '--' to be passed-through as an argument + * Test subcommand alias help + * link build badge to master branch + * Support the alias of Git style sub-command + * added keyword commander for better search result on npm + * Fix Sub-Subcommands + * test node.js stable + * Fixes TypeError when a command has an option called `--description` + * Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets. + * Add chinese Readme file + +2.9.0 / 2015-10-13 +================== + + * Add option `isDefault` to set default subcommand #415 @Qix- + * Add callback to allow filtering or post-processing of help text #434 @djulien + * Fix `undefined` text in help information close #414 #416 @zhiyelee + +2.8.1 / 2015-04-22 +================== + + * Back out `support multiline description` Close #396 #397 + +2.8.0 / 2015-04-07 +================== + + * Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee + * Fix bug in Git-style sub-commands #372 @zhiyelee + * Allow commands to be hidden from help #383 @tonylukasavage + * When git-style sub-commands are in use, yet none are called, display help #382 @claylo + * Add ability to specify arguments syntax for top-level command #258 @rrthomas + * Support multiline descriptions #208 @zxqfox + +2.7.1 / 2015-03-11 +================== + + * Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367. + +2.7.0 / 2015-03-09 +================== + + * Fix git-style bug when installed globally. Close #335 #349 @zhiyelee + * Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage + * Add support for camelCase on `opts()`. Close #353 @nkzawa + * Add node.js 0.12 and io.js to travis.yml + * Allow RegEx options. #337 @palanik + * Fixes exit code when sub-command failing. Close #260 #332 @pirelenito + * git-style `bin` files in $PATH make sense. Close #196 #327 @zhiyelee + +2.6.0 / 2014-12-30 +================== + + * added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee + * Add application description to the help msg. Close #112 @dalssoft + +2.5.1 / 2014-12-15 +================== + + * fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee + +2.5.0 / 2014-10-24 +================== + + * add support for variadic arguments. Closes #277 @whitlockjc + +2.4.0 / 2014-10-17 +================== + + * fixed a bug on executing the coercion function of subcommands option. Closes #270 + * added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage + * added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage + * fixed a bug on subcommand name. Closes #248 @jonathandelgado + * fixed function normalize doesn’t honor option terminator. Closes #216 @abbr + +2.3.0 / 2014-07-16 +================== + + * add command alias'. Closes PR #210 + * fix: Typos. Closes #99 + * fix: Unused fs module. Closes #217 + +2.2.0 / 2014-03-29 +================== + + * add passing of previous option value + * fix: support subcommands on windows. Closes #142 + * Now the defaultValue passed as the second argument of the coercion function. + +2.1.0 / 2013-11-21 +================== + + * add: allow cflag style option params, unit test, fixes #174 + +2.0.0 / 2013-07-18 +================== + + * remove input methods (.prompt, .confirm, etc) + +1.3.2 / 2013-07-18 +================== + + * add support for sub-commands to co-exist with the original command + +1.3.1 / 2013-07-18 +================== + + * add quick .runningCommand hack so you can opt-out of other logic when running a sub command + +1.3.0 / 2013-07-09 +================== + + * add EACCES error handling + * fix sub-command --help + +1.2.0 / 2013-06-13 +================== + + * allow "-" hyphen as an option argument + * support for RegExp coercion + +1.1.1 / 2012-11-20 +================== + + * add more sub-command padding + * fix .usage() when args are present. Closes #106 + +1.1.0 / 2012-11-16 +================== + + * add git-style executable subcommand support. Closes #94 + +1.0.5 / 2012-10-09 +================== + + * fix `--name` clobbering. Closes #92 + * fix examples/help. Closes #89 + +1.0.4 / 2012-09-03 +================== + + * add `outputHelp()` method. + +1.0.3 / 2012-08-30 +================== + + * remove invalid .version() defaulting + +1.0.2 / 2012-08-24 +================== + + * add `--foo=bar` support [arv] + * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] + +1.0.1 / 2012-08-03 +================== + + * fix issue #56 + * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) + +1.0.0 / 2012-07-05 +================== + + * add support for optional option descriptions + * add defaulting of `.version()` to package.json's version + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/commander/LICENSE b/node_modules/commander/LICENSE new file mode 100644 index 0000000..10f997a --- /dev/null +++ b/node_modules/commander/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +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/node_modules/commander/Readme.md b/node_modules/commander/Readme.md new file mode 100644 index 0000000..c846e7a --- /dev/null +++ b/node_modules/commander/Readme.md @@ -0,0 +1,428 @@ +# Commander.js + + +[](http://travis-ci.org/tj/commander.js) +[](https://www.npmjs.org/package/commander) +[](https://npmcharts.com/compare/commander?minimal=true) +[](https://packagephobia.now.sh/result?p=commander) +[](https://gitter.im/tj/commander.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/commander-rb/commander). + [API documentation](http://tj.github.com/commander.js/) + + +## Installation + + $ npm install commander + +## Option parsing + +Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq-sauce', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbqSauce) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + +Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +Note that multi-word options starting with `--no` prefix negate the boolean value of the following word. For example, `--no-sauce` sets the value of `program.sauce` to false. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .option('--no-sauce', 'Remove sauce') + .parse(process.argv); + +console.log('you ordered a pizza'); +if (program.sauce) console.log(' with sauce'); +else console.log(' without sauce'); +``` + +To get string arguments from options you will need to use angle brackets <> for required inputs or square brackets [] for optional inputs. + +e.g. ```.option('-m --myarg [myVar]', 'my super cool description')``` + +Then to access the input if it was passed in. + +e.g. ```var myInput = program.myarg``` + +**NOTE**: If you pass a argument without using brackets the example above will return true and not the value passed in. + + +## Version option + +Calling the `version` implicitly adds the `-V` and `--version` options to the command. +When either of these options is present, the command prints the version number and exits. + + $ ./examples/pizza -V + 0.0.1 + +If you want your program to respond to the `-v` option instead of the `-V` option, simply pass custom flags to the `version` method using the same syntax as the `option` method. + +```js +program + .version('0.0.1', '-v, --version') +``` + +The version flags can be named anything, but the long option is required. + +## Command-specific options + +You can attach options to a command. + +```js +#!/usr/bin/env node + +var program = require('commander'); + +program + .command('rm <dir>') + .option('-r, --recursive', 'Remove recursively') + .action(function (dir, cmd) { + console.log('remove ' + dir + (cmd.recursive ? ' recursively' : '')) + }) + +program.parse(process.argv) +``` + +A command's options are validated when the command is used. Any unknown options will be reported as an error. However, if an action-based command does not define an action, then the options are not validated. + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +function collect(val, memo) { + memo.push(val); + return memo; +} + +function increaseVerbosity(v, total) { + return total + 1; +} + +program + .version('0.1.0') + .usage('[options] <file ...>') + .option('-i, --integer <n>', 'An integer argument', parseInt) + .option('-f, --float <n>', 'A float argument', parseFloat) + .option('-r, --range <a>..<b>', 'A range', range) + .option('-l, --list <items>', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .option('-c, --collect [value]', 'A repeatable value', collect, []) + .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' collect: %j', program.collect); +console.log(' verbosity: %j', program.verbose); +console.log(' args: %j', program.args); +``` + +## Regular Expression +```js +program + .version('0.1.0') + .option('-s --size <size>', 'Pizza size', /^(large|medium|small)$/i, 'medium') + .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i) + .parse(process.argv); + +console.log(' size: %j', program.size); +console.log(' drink: %j', program.drink); +``` + +## Variadic arguments + + The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to + append `...` to the argument name. Here is an example: + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .command('rmdir <dir> [otherDirs...]') + .action(function (dir, otherDirs) { + console.log('rmdir %s', dir); + if (otherDirs) { + otherDirs.forEach(function (oDir) { + console.log('rmdir %s', oDir); + }); + } + }); + +program.parse(process.argv); +``` + + An `Array` is used for the value of a variadic argument. This applies to `program.args` as well as the argument passed + to your action as demonstrated above. + +## Specify the argument syntax + +```js +#!/usr/bin/env node + +var program = require('commander'); + +program + .version('0.1.0') + .arguments('<cmd> [env]') + .action(function (cmd, env) { + cmdValue = cmd; + envValue = env; + }); + +program.parse(process.argv); + +if (typeof cmdValue === 'undefined') { + console.error('no command given!'); + process.exit(1); +} +console.log('command:', cmdValue); +console.log('environment:', envValue || "no environment given"); +``` +Angled brackets (e.g. `<cmd>`) indicate required input. Square brackets (e.g. `[env]`) indicate optional input. + +## Git-style sub-commands + +```js +// file: ./examples/pm +var program = require('commander'); + +program + .version('0.1.0') + .command('install [name]', 'install one or more packages') + .command('search [query]', 'search with optional query') + .command('list', 'list packages installed', {isDefault: true}) + .parse(process.argv); +``` + +When `.command()` is invoked with a description argument, no `.action(callback)` should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools. +The commander will try to search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-command`, like `pm-install`, `pm-search`. + +Options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the subcommand from the generated help output. Specifying `true` for `opts.isDefault` will run the subcommand if no other subcommand is specified. + +If the program is designed to be installed globally, make sure the executables have proper modes, like `755`. + +### `--harmony` + +You can enable `--harmony` option in two ways: +* Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. Note some os version don’t support this pattern. +* Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` +$ ./examples/pizza --help +Usage: pizza [options] + +An application for pizzas ordering + +Options: + -h, --help output usage information + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese <type> Add the specified type of cheese [marble] + -C, --no-cheese You do not want any cheese +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviors, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log('') + console.log('Examples:'); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run: + +``` +Usage: custom-help [options] + +Options: + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + $ custom-help --help + $ custom-help -h +``` + +## .outputHelp(cb) + +Output help information without exiting. +Optional callback cb allows post-processing of help text before it is displayed. + +If you want to display help by default (e.g. if no command was provided), you can use something like: + +```js +var program = require('commander'); +var colors = require('colors'); + +program + .version('0.1.0') + .command('getstream [url]', 'get stream URL') + .parse(process.argv); + +if (!process.argv.slice(2).length) { + program.outputHelp(make_red); +} + +function make_red(txt) { + return colors.red(txt); //display the help text in red on the console +} +``` + +## .help(cb) + + Output help information and exit immediately. + Optional callback cb allows post-processing of help text before it is displayed. + + +## Custom event listeners + You can execute custom actions by listening to command and option events. + +```js +program.on('option:verbose', function () { + process.env.VERBOSE = this.verbose; +}); + +// error on unknown commands +program.on('command:*', function () { + console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' ')); + process.exit(1); +}); +``` + +## Examples + +```js +var program = require('commander'); + +program + .version('0.1.0') + .option('-C, --chdir <path>', 'change the working directory') + .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf') + .option('-T, --no-tests', 'ignore test hook'); + +program + .command('setup [env]') + .description('run setup commands for all envs') + .option("-s, --setup_mode [mode]", "Which setup mode to use") + .action(function(env, options){ + var mode = options.setup_mode || "normal"; + env = env || 'all'; + console.log('setup for %s env(s) with %s mode', env, mode); + }); + +program + .command('exec <cmd>') + .alias('ex') + .description('execute the given remote cmd') + .option("-e, --exec_mode <mode>", "Which exec mode to use") + .action(function(cmd, options){ + console.log('exec "%s" using %s mode', cmd, options.exec_mode); + }).on('--help', function() { + console.log(''); + console.log('Examples:'); + console.log(''); + console.log(' $ deploy exec sequential'); + console.log(' $ deploy exec async'); + }); + +program + .command('*') + .action(function(env){ + console.log('deploying "%s"', env); + }); + +program.parse(process.argv); +``` + +More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. + +## License + +[MIT](https://github.com/tj/commander.js/blob/master/LICENSE) diff --git a/node_modules/commander/index.js b/node_modules/commander/index.js new file mode 100644 index 0000000..ec1d61d --- /dev/null +++ b/node_modules/commander/index.js @@ -0,0 +1,1224 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; +var fs = require('fs'); + +/** + * Inherit `Command` from `EventEmitter.prototype`. + */ + +require('util').inherits(Command, EventEmitter); + +/** + * Expose the root command. + */ + +exports = module.exports = new Command(); + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = flags.indexOf('<') >= 0; + this.optional = flags.indexOf('[') >= 0; + this.bool = flags.indexOf('-no-') === -1; + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function() { + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + * + * @return {String} + * @api private + */ + +Option.prototype.attributeName = function() { + return camelcase(this.name()); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg) { + return this.short === arg || this.long === arg; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = {}; + this._allowUnknownOption = false; + this._args = []; + this._name = name || ''; +} + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir <path>', 'change the working directory') + * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function() { + * console.log('setup'); + * }); + * + * program + * .command('exec <cmd>') + * .description('run the given remote command') + * .action(function(cmd) { + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('teardown <dir> [otherDirs...]') + * .description('run teardown commands') + * .action(function(dir, otherDirs) { + * console.log('dir "%s"', dir); + * if (otherDirs) { + * otherDirs.forEach(function (oDir) { + * console.log('dir "%s"', oDir); + * }); + * } + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env) { + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] for git-style sub-commands + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc, opts) { + if (typeof desc === 'object' && desc !== null) { + opts = desc; + desc = null; + } + opts = opts || {}; + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + + if (desc) { + cmd.description(desc); + this.executables = true; + this._execs[cmd._name] = true; + if (opts.isDefault) this.defaultExecutable = cmd._name; + } + cmd._noHelp = !!opts.noHelp; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + + if (desc) return this; + return cmd; +}; + +/** + * Define argument syntax for the top-level command. + * + * @api public + */ + +Command.prototype.arguments = function(desc) { + return this.parseExpectedArgs(desc.split(/ +/)); +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args) { + if (!args.length) return; + var self = this; + args.forEach(function(arg) { + var argDetails = { + required: false, + name: '', + variadic: false + }; + + switch (arg[0]) { + case '<': + argDetails.required = true; + argDetails.name = arg.slice(1, -1); + break; + case '[': + argDetails.name = arg.slice(1, -1); + break; + } + + if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') { + argDetails.variadic = true; + argDetails.name = argDetails.name.slice(0, -3); + } + if (argDetails.name) { + self._args.push(argDetails); + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn) { + var self = this; + var listener = function(args, unknown) { + // Parse any so-far unknown options + args = args || []; + unknown = unknown || []; + + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i) { + if (arg.required && args[i] == null) { + self.missingArgument(arg.name); + } else if (arg.variadic) { + if (i !== self._args.length - 1) { + self.variadicArgNotLast(arg.name); + } + + args[i] = args.splice(i); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(self, args); + }; + var parent = this.parent || this; + var name = parent === this ? '*' : this._name; + parent.on('command:' + name, listener); + if (this._alias) parent.on('command:' + this._alias, listener); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir <path>', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|*} [fn] or default + * @param {*} [defaultValue] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue) { + var self = this, + option = new Option(flags, description), + oname = option.name(), + name = option.attributeName(); + + // default as 3rd arg + if (typeof fn !== 'function') { + if (fn instanceof RegExp) { + var regex = fn; + fn = function(val, def) { + var m = regex.exec(val); + return m ? m[0] : def; + }; + } else { + defaultValue = fn; + fn = null; + } + } + + // preassign default value only for --no-*, [optional], or <required> + if (!option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (!option.bool) defaultValue = true; + // preassign only if we have a default + if (defaultValue !== undefined) { + self[name] = defaultValue; + option.defaultValue = defaultValue; + } + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on('option:' + oname, function(val) { + // coercion + if (val !== null && fn) { + val = fn(val, self[name] === undefined ? defaultValue : self[name]); + } + + // unassigned or bool + if (typeof self[name] === 'boolean' || typeof self[name] === 'undefined') { + // if no value, bool true, and we have a default, then use it! + if (val == null) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (val !== null) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Allow unknown options on the command line. + * + * @param {Boolean} arg if `true` or omitted, no error will be thrown + * for unknown options. + * @api public + */ +Command.prototype.allowUnknownOption = function(arg) { + this._allowUnknownOption = arguments.length === 0 || arg; + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv) { + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1], '.js'); + + // github-style sub-commands with no sub-command + if (this.executables && argv.length < 3 && !this.defaultExecutable) { + // this user needs help + argv.push('--help'); + } + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + // executable sub-commands + var name = result.args[0]; + + var aliasCommand = null; + // check alias of sub commands + if (name) { + aliasCommand = this.commands.filter(function(command) { + return command.alias() === name; + })[0]; + } + + if (this._execs[name] === true) { + return this.executeSubCommand(argv, args, parsed.unknown); + } else if (aliasCommand) { + // is alias of a subCommand + args[0] = aliasCommand._name; + return this.executeSubCommand(argv, args, parsed.unknown); + } else if (this.defaultExecutable) { + // use the default subcommand + args.unshift(this.defaultExecutable); + return this.executeSubCommand(argv, args, parsed.unknown); + } + + return result; +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if (args[0] === 'help' && args.length === 1) this.help(); + + // <cmd> --help + if (args[0] === 'help') { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var f = argv[1]; + // name of the subcommand, link `pm-install` + var bin = basename(f, path.extname(f)) + '-' + args[0]; + + // In case of globally installed, get the base dir where executable + // subcommand file should be located at + var baseDir; + + var resolvedLink = fs.realpathSync(f); + + baseDir = dirname(resolvedLink); + + // prefer local `./<bin>` to bin in the $PATH + var localBin = path.join(baseDir, bin); + + // whether bin file is a js script with explicit `.js` or `.ts` extension + var isExplicitJS = false; + if (exists(localBin + '.js')) { + bin = localBin + '.js'; + isExplicitJS = true; + } else if (exists(localBin + '.ts')) { + bin = localBin + '.ts'; + isExplicitJS = true; + } else if (exists(localBin)) { + bin = localBin; + } + + args = args.slice(1); + + var proc; + if (process.platform !== 'win32') { + if (isExplicitJS) { + args.unshift(bin); + // add executable arguments to spawn + args = (process.execArgv || []).concat(args); + + proc = spawn(process.argv[0], args, { stdio: 'inherit', customFds: [0, 1, 2] }); + } else { + proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); + } + } else { + args.unshift(bin); + proc = spawn(process.execPath, args, { stdio: 'inherit' }); + } + + var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP']; + signals.forEach(function(signal) { + process.on(signal, function() { + if (proc.killed === false && proc.exitCode === null) { + proc.kill(signal); + } + }); + }); + proc.on('close', process.exit.bind(process)); + proc.on('error', function(err) { + if (err.code === 'ENOENT') { + console.error('error: %s(1) does not exist, try --help', bin); + } else if (err.code === 'EACCES') { + console.error('error: %s(1) not executable. try chmod or run with root', bin); + } + process.exit(1); + }); + + // Store the reference to the child process + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args) { + var ret = [], + arg, + lastOpt, + index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (i > 0) { + lastOpt = this.optionFor(args[i - 1]); + } + + if (arg === '--') { + // Honor option terminator + ret = ret.concat(args.slice(i)); + break; + } else if (lastOpt && lastOpt.required) { + ret.push(arg); + } else if (arg.length > 1 && arg[0] === '-' && arg[1] !== '-') { + arg.slice(1).split('').forEach(function(c) { + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown) { + var name; + + if (args.length) { + name = args[0]; + if (this.listeners('command:' + name).length) { + this.emit('command:' + args.shift(), args, unknown); + } else { + this.emit('command:*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + if (this.commands.length === 0 && + this._args.filter(function(a) { return a.required; }).length === 0) { + this.emit('command:*'); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg) { + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv) { + var args = [], + len = argv.length, + literal, + option, + arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if (literal) { + args.push(arg); + continue; + } + + if (arg === '--') { + literal = true; + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (arg == null) return this.optionMissingArgument(option); + this.emit('option:' + option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i + 1]; + if (arg == null || (arg[0] === '-' && arg !== '-')) { + arg = null; + } else { + ++i; + } + this.emit('option:' + option.name(), arg); + // bool + } else { + this.emit('option:' + option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && arg[0] === '-') { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if ((i + 1) < argv.length && argv[i + 1][0] !== '-') { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Return an object containing options as key-value pairs + * + * @return {Object} + * @api public + */ +Command.prototype.opts = function() { + var result = {}, + len = this.options.length; + + for (var i = 0; i < len; i++) { + var key = this.options[i].attributeName(); + result[key] = key === this._versionOptionName ? this._version : this[key]; + } + return result; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name) { + console.error("error: missing required argument `%s'", name); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag) { + if (flag) { + console.error("error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error("error: option `%s' argument missing", option.flags); + } + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag) { + if (this._allowUnknownOption) return; + console.error("error: unknown option `%s'", flag); + process.exit(1); +}; + +/** + * Variadic argument with `name` is not the last argument as required. + * + * @param {String} name + * @api private + */ + +Command.prototype.variadicArgNotLast = function(name) { + console.error("error: variadic arguments must be last `%s'", name); + process.exit(1); +}; + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} [flags] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags) { + if (arguments.length === 0) return this._version; + this._version = str; + flags = flags || '-V, --version'; + var versionOption = new Option(flags, 'output the version number'); + this._versionOptionName = versionOption.long.substr(2) || 'version'; + this.options.push(versionOption); + this.on('option:' + this._versionOptionName, function() { + process.stdout.write(str + '\n'); + process.exit(0); + }); + return this; +}; + +/** + * Set the description to `str`. + * + * @param {String} str + * @param {Object} argsDescription + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str, argsDescription) { + if (arguments.length === 0) return this._description; + this._description = str; + this._argsDescription = argsDescription; + return this; +}; + +/** + * Set an alias for the command + * + * @param {String} alias + * @return {String|Command} + * @api public + */ + +Command.prototype.alias = function(alias) { + var command = this; + if (this.commands.length !== 0) { + command = this.commands[this.commands.length - 1]; + } + + if (arguments.length === 0) return command._alias; + + if (alias === command._name) throw new Error('Command alias can\'t be the same as its name'); + + command._alias = alias; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str) { + var args = this._args.map(function(arg) { + return humanReadableArgName(arg); + }); + + var usage = '[options]' + + (this.commands.length ? ' [command]' : '') + + (this._args.length ? ' ' + args.join(' ') : ''); + + if (arguments.length === 0) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Get or set the name of the command + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.name = function(str) { + if (arguments.length === 0) return this._name; + this._name = str; + return this; +}; + +/** + * Return prepared commands. + * + * @return {Array} + * @api private + */ + +Command.prototype.prepareCommands = function() { + return this.commands.filter(function(cmd) { + return !cmd._noHelp; + }).map(function(cmd) { + var args = cmd._args.map(function(arg) { + return humanReadableArgName(arg); + }).join(' '); + + return [ + cmd._name + + (cmd._alias ? '|' + cmd._alias : '') + + (cmd.options.length ? ' [options]' : '') + + (args ? ' ' + args : ''), + cmd._description + ]; + }); +}; + +/** + * Return the largest command length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestCommandLength = function() { + var commands = this.prepareCommands(); + return commands.reduce(function(max, command) { + return Math.max(max, command[0].length); + }, 0); +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function() { + var options = [].slice.call(this.options); + options.push({ + flags: '-h, --help' + }); + return options.reduce(function(max, option) { + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return the largest arg length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestArgLength = function() { + return this._args.reduce(function(max, arg) { + return Math.max(max, arg.name.length); + }, 0); +}; + +/** + * Return the pad width. + * + * @return {Number} + * @api private + */ + +Command.prototype.padWidth = function() { + var width = this.largestOptionLength(); + if (this._argsDescription && this._args.length) { + if (this.largestArgLength() > width) { + width = this.largestArgLength(); + } + } + + if (this.commands && this.commands.length) { + if (this.largestCommandLength() > width) { + width = this.largestCommandLength(); + } + } + + return width; +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function() { + var width = this.padWidth(); + + // Append the help information + return this.options.map(function(option) { + return pad(option.flags, width) + ' ' + option.description + + ((option.bool && option.defaultValue !== undefined) ? ' (default: ' + JSON.stringify(option.defaultValue) + ')' : ''); + }).concat([pad('-h, --help', width) + ' ' + 'output usage information']) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function() { + if (!this.commands.length) return ''; + + var commands = this.prepareCommands(); + var width = this.padWidth(); + + return [ + 'Commands:', + commands.map(function(cmd) { + var desc = cmd[1] ? ' ' + cmd[1] : ''; + return (desc ? pad(cmd[0], width) : cmd[0]) + desc; + }).join('\n').replace(/^/gm, ' '), + '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function() { + var desc = []; + if (this._description) { + desc = [ + this._description, + '' + ]; + + var argsDescription = this._argsDescription; + if (argsDescription && this._args.length) { + var width = this.padWidth(); + desc.push('Arguments:'); + desc.push(''); + this._args.forEach(function(arg) { + desc.push(' ' + pad(arg.name, width) + ' ' + argsDescription[arg.name]); + }); + desc.push(''); + } + } + + var cmdName = this._name; + if (this._alias) { + cmdName = cmdName + '|' + this._alias; + } + var usage = [ + 'Usage: ' + cmdName + ' ' + this.usage(), + '' + ]; + + var cmds = []; + var commandHelp = this.commandHelp(); + if (commandHelp) cmds = [commandHelp]; + + var options = [ + 'Options:', + '' + this.optionHelp().replace(/^/gm, ' '), + '' + ]; + + return usage + .concat(desc) + .concat(options) + .concat(cmds) + .join('\n'); +}; + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(cb) { + if (!cb) { + cb = function(passthru) { + return passthru; + }; + } + process.stdout.write(cb(this.helpInformation())); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(cb) { + this.outputHelp(cb); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word) { + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] === '--help' || options[i] === '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} + +/** + * Takes an argument an returns its human readable equivalent for help usage. + * + * @param {Object} arg + * @return {String} + * @api private + */ + +function humanReadableArgName(arg) { + var nameOutput = arg.name + (arg.variadic === true ? '...' : ''); + + return arg.required + ? '<' + nameOutput + '>' + : '[' + nameOutput + ']'; +} + +// for versions before node v0.8 when there weren't `fs.existsSync` +function exists(file) { + try { + if (fs.statSync(file).isFile()) { + return true; + } + } catch (e) { + return false; + } +} diff --git a/node_modules/commander/package.json b/node_modules/commander/package.json new file mode 100644 index 0000000..0023c5c --- /dev/null +++ b/node_modules/commander/package.json @@ -0,0 +1,38 @@ +{ + "name": "commander", + "version": "2.20.3", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "commander", + "command", + "option", + "parser" + ], + "author": "TJ Holowaychuk <tj@vision-media.ca>", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tj/commander.js.git" + }, + "scripts": { + "lint": "eslint index.js", + "test": "node test/run.js && npm run test-typings", + "test-typings": "tsc -p tsconfig.json" + }, + "main": "index", + "files": [ + "index.js", + "typings/index.d.ts" + ], + "dependencies": {}, + "devDependencies": { + "@types/node": "^12.7.8", + "eslint": "^6.4.0", + "should": "^13.2.3", + "sinon": "^7.5.0", + "standard": "^14.3.1", + "ts-node": "^8.4.1", + "typescript": "^3.6.3" + }, + "typings": "typings/index.d.ts" +} diff --git a/node_modules/commander/typings/index.d.ts b/node_modules/commander/typings/index.d.ts new file mode 100644 index 0000000..bcda277 --- /dev/null +++ b/node_modules/commander/typings/index.d.ts @@ -0,0 +1,310 @@ +// Type definitions for commander 2.11 +// Project: https://github.com/visionmedia/commander.js +// Definitions by: Alan Agius <https://github.com/alan-agius4>, Marcelo Dezem <https://github.com/mdezem>, vvakame <https://github.com/vvakame>, Jules Randolph <https://github.com/sveinburne> +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace local { + + class Option { + flags: string; + required: boolean; + optional: boolean; + bool: boolean; + short?: string; + long: string; + description: string; + + /** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {string} flags + * @param {string} [description] + */ + constructor(flags: string, description?: string); + } + + class Command extends NodeJS.EventEmitter { + [key: string]: any; + + args: string[]; + + /** + * Initialize a new `Command`. + * + * @param {string} [name] + */ + constructor(name?: string); + + /** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {string} str + * @param {string} [flags] + * @returns {Command} for chaining + */ + version(str: string, flags?: string): Command; + + /** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * @example + * program + * .version('0.0.1') + * .option('-C, --chdir <path>', 'change the working directory') + * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function() { + * console.log('setup'); + * }); + * + * program + * .command('exec <cmd>') + * .description('run the given remote command') + * .action(function(cmd) { + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('teardown <dir> [otherDirs...]') + * .description('run teardown commands') + * .action(function(dir, otherDirs) { + * console.log('dir "%s"', dir); + * if (otherDirs) { + * otherDirs.forEach(function (oDir) { + * console.log('dir "%s"', oDir); + * }); + * } + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env) { + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {string} name + * @param {string} [desc] for git-style sub-commands + * @param {CommandOptions} [opts] command options + * @returns {Command} the new command + */ + command(name: string, desc?: string, opts?: commander.CommandOptions): Command; + + /** + * Define argument syntax for the top-level command. + * + * @param {string} desc + * @returns {Command} for chaining + */ + arguments(desc: string): Command; + + /** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {string[]} args + * @returns {Command} for chaining + */ + parseExpectedArgs(args: string[]): Command; + + /** + * Register callback `fn` for the command. + * + * @example + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @param {(...args: any[]) => void} fn + * @returns {Command} for chaining + */ + action(fn: (...args: any[]) => void): Command; + + /** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * @example + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir <path>', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {string} flags + * @param {string} [description] + * @param {((arg1: any, arg2: any) => void) | RegExp} [fn] function or default + * @param {*} [defaultValue] + * @returns {Command} for chaining + */ + option(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command; + option(flags: string, description?: string, defaultValue?: any): Command; + + /** + * Allow unknown options on the command line. + * + * @param {boolean} [arg] if `true` or omitted, no error will be thrown for unknown options. + * @returns {Command} for chaining + */ + allowUnknownOption(arg?: boolean): Command; + + /** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {string[]} argv + * @returns {Command} for chaining + */ + parse(argv: string[]): Command; + + /** + * Parse options from `argv` returning `argv` void of these options. + * + * @param {string[]} argv + * @returns {ParseOptionsResult} + */ + parseOptions(argv: string[]): commander.ParseOptionsResult; + + /** + * Return an object containing options as key-value pairs + * + * @returns {{[key: string]: any}} + */ + opts(): { [key: string]: any }; + + /** + * Set the description to `str`. + * + * @param {string} str + * @param {{[argName: string]: string}} argsDescription + * @return {(Command | string)} + */ + description(str: string, argsDescription?: {[argName: string]: string}): Command; + description(): string; + + /** + * Set an alias for the command. + * + * @param {string} alias + * @return {(Command | string)} + */ + alias(alias: string): Command; + alias(): string; + + /** + * Set or get the command usage. + * + * @param {string} str + * @return {(Command | string)} + */ + usage(str: string): Command; + usage(): string; + + /** + * Set the name of the command. + * + * @param {string} str + * @return {Command} + */ + name(str: string): Command; + + /** + * Get the name of the command. + * + * @return {string} + */ + name(): string; + + /** + * Output help information for this command. + * + * @param {(str: string) => string} [cb] + */ + outputHelp(cb?: (str: string) => string): void; + + /** Output help information and exit. + * + * @param {(str: string) => string} [cb] + */ + help(cb?: (str: string) => string): never; + } + +} + +declare namespace commander { + + type Command = local.Command + + type Option = local.Option + + interface CommandOptions { + noHelp?: boolean; + isDefault?: boolean; + } + + interface ParseOptionsResult { + args: string[]; + unknown: string[]; + } + + interface CommanderStatic extends Command { + Command: typeof local.Command; + Option: typeof local.Option; + CommandOptions: CommandOptions; + ParseOptionsResult: ParseOptionsResult; + } + +} + +declare const commander: commander.CommanderStatic; +export = commander; diff --git a/node_modules/cssfilter/LICENSE b/node_modules/cssfilter/LICENSE new file mode 100644 index 0000000..49b61eb --- /dev/null +++ b/node_modules/cssfilter/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 老雷 + +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/node_modules/cssfilter/README.md b/node_modules/cssfilter/README.md new file mode 100644 index 0000000..21cd65d --- /dev/null +++ b/node_modules/cssfilter/README.md @@ -0,0 +1,86 @@ +[](http://badge.fury.io/js/xss) +[](http://travis-ci.org/leizongmin/js-css-filter) +[](https://david-dm.org/leizongmin/js-css-filter) +[](https://coveralls.io/r/leizongmin/js-css-filter?branch=master) + +# cssfilter +Sanitize untrusted CSS with a configuration specified by a Whitelist. 根据白名单过滤CSS + + +## 安装 + +```bash +$ npm install cssfilter --save +``` + + +## 使用方法 + +```javascript +var cssfilter = require('cssfilter'); +var css = cssfilter('position:fixed; /* this is comments */ width:100px; height:100px; background:#aaa;'); +console.log(css); +// 输出:width:100px; height:100px; background:#aaa; +// 因为position不在白名单允许范围 +``` + +或者: + +```javascript +options = { + // 白名单,可选 + whiteList: { + a: true, // true表示允许 + b: /^fixed|relative$/, // 正则test()返回true表示允许 + c: function (value) { + // 返回true表示允许 + }, + d: false // 除以上三个以外,所有值均表示不允许 + }, + // 当匹配到一个在白名单中的属性时 + onAttr: function (name, value, options) { + // name为属性名 + // value为属性值 + // 返回字符串表示覆盖此段CSS + // 不返回任何值表示使用默认生成方法,即 name:value + }, + // 当匹配到一个不在白名单中的属性时 + onIgnoreAttr: function (name, value, options) { + // name为属性名 + // value为属性值 + // 返回字符串表示覆盖此段CSS + // 不返回任何值表示使用默认生成方法,即将此段CSS去掉 + } +}; +mycss = new cssfilter.FilterCSS(options); +// then apply mycss.process() +css = mycss.process('position:fixed; width:100px; height:100px; background:#aaa;'); +console.log(css); +``` + + +## License + +``` +The MIT License (MIT) + +Copyright (c) 2015-2016 Zongmin Lei(雷宗民) <leizongmin@gmail.com> + +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/node_modules/cssfilter/lib/css.js b/node_modules/cssfilter/lib/css.js new file mode 100644 index 0000000..49e9707 --- /dev/null +++ b/node_modules/cssfilter/lib/css.js @@ -0,0 +1,110 @@ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var DEFAULT = require('./default'); +var parseStyle = require('./parser'); +var _ = require('./util'); + + +/** + * 返回值是否为空 + * + * @param {Object} obj + * @return {Boolean} + */ +function isNull (obj) { + return (obj === undefined || obj === null); +} + +/** + * 浅拷贝对象 + * + * @param {Object} obj + * @return {Object} + */ +function shallowCopyObject (obj) { + var ret = {}; + for (var i in obj) { + ret[i] = obj[i]; + } + return ret; +} + +/** + * 创建CSS过滤器 + * + * @param {Object} options + * - {Object} whiteList + * - {Function} onAttr + * - {Function} onIgnoreAttr + * - {Function} safeAttrValue + */ +function FilterCSS (options) { + options = shallowCopyObject(options || {}); + options.whiteList = options.whiteList || DEFAULT.whiteList; + options.onAttr = options.onAttr || DEFAULT.onAttr; + options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr; + options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue; + this.options = options; +} + +FilterCSS.prototype.process = function (css) { + // 兼容各种奇葩输入 + css = css || ''; + css = css.toString(); + if (!css) return ''; + + var me = this; + var options = me.options; + var whiteList = options.whiteList; + var onAttr = options.onAttr; + var onIgnoreAttr = options.onIgnoreAttr; + var safeAttrValue = options.safeAttrValue; + + var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) { + + var check = whiteList[name]; + var isWhite = false; + if (check === true) isWhite = check; + else if (typeof check === 'function') isWhite = check(value); + else if (check instanceof RegExp) isWhite = check.test(value); + if (isWhite !== true) isWhite = false; + + // 如果过滤后 value 为空则直接忽略 + value = safeAttrValue(name, value); + if (!value) return; + + var opts = { + position: position, + sourcePosition: sourcePosition, + source: source, + isWhite: isWhite + }; + + if (isWhite) { + + var ret = onAttr(name, value, opts); + if (isNull(ret)) { + return name + ':' + value; + } else { + return ret; + } + + } else { + + var ret = onIgnoreAttr(name, value, opts); + if (!isNull(ret)) { + return ret; + } + + } + }); + + return retCSS; +}; + + +module.exports = FilterCSS; diff --git a/node_modules/cssfilter/lib/default.js b/node_modules/cssfilter/lib/default.js new file mode 100644 index 0000000..b677225 --- /dev/null +++ b/node_modules/cssfilter/lib/default.js @@ -0,0 +1,398 @@ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +function getDefaultWhiteList () { + // 白名单值说明: + // true: 允许该属性 + // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许 + // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许 + // 除上面列出的值外均表示不允许 + var whiteList = {}; + + whiteList['align-content'] = false; // default: auto + whiteList['align-items'] = false; // default: auto + whiteList['align-self'] = false; // default: auto + whiteList['alignment-adjust'] = false; // default: auto + whiteList['alignment-baseline'] = false; // default: baseline + whiteList['all'] = false; // default: depending on individual properties + whiteList['anchor-point'] = false; // default: none + whiteList['animation'] = false; // default: depending on individual properties + whiteList['animation-delay'] = false; // default: 0 + whiteList['animation-direction'] = false; // default: normal + whiteList['animation-duration'] = false; // default: 0 + whiteList['animation-fill-mode'] = false; // default: none + whiteList['animation-iteration-count'] = false; // default: 1 + whiteList['animation-name'] = false; // default: none + whiteList['animation-play-state'] = false; // default: running + whiteList['animation-timing-function'] = false; // default: ease + whiteList['azimuth'] = false; // default: center + whiteList['backface-visibility'] = false; // default: visible + whiteList['background'] = true; // default: depending on individual properties + whiteList['background-attachment'] = true; // default: scroll + whiteList['background-clip'] = true; // default: border-box + whiteList['background-color'] = true; // default: transparent + whiteList['background-image'] = true; // default: none + whiteList['background-origin'] = true; // default: padding-box + whiteList['background-position'] = true; // default: 0% 0% + whiteList['background-repeat'] = true; // default: repeat + whiteList['background-size'] = true; // default: auto + whiteList['baseline-shift'] = false; // default: baseline + whiteList['binding'] = false; // default: none + whiteList['bleed'] = false; // default: 6pt + whiteList['bookmark-label'] = false; // default: content() + whiteList['bookmark-level'] = false; // default: none + whiteList['bookmark-state'] = false; // default: open + whiteList['border'] = true; // default: depending on individual properties + whiteList['border-bottom'] = true; // default: depending on individual properties + whiteList['border-bottom-color'] = true; // default: current color + whiteList['border-bottom-left-radius'] = true; // default: 0 + whiteList['border-bottom-right-radius'] = true; // default: 0 + whiteList['border-bottom-style'] = true; // default: none + whiteList['border-bottom-width'] = true; // default: medium + whiteList['border-collapse'] = true; // default: separate + whiteList['border-color'] = true; // default: depending on individual properties + whiteList['border-image'] = true; // default: none + whiteList['border-image-outset'] = true; // default: 0 + whiteList['border-image-repeat'] = true; // default: stretch + whiteList['border-image-slice'] = true; // default: 100% + whiteList['border-image-source'] = true; // default: none + whiteList['border-image-width'] = true; // default: 1 + whiteList['border-left'] = true; // default: depending on individual properties + whiteList['border-left-color'] = true; // default: current color + whiteList['border-left-style'] = true; // default: none + whiteList['border-left-width'] = true; // default: medium + whiteList['border-radius'] = true; // default: 0 + whiteList['border-right'] = true; // default: depending on individual properties + whiteList['border-right-color'] = true; // default: current color + whiteList['border-right-style'] = true; // default: none + whiteList['border-right-width'] = true; // default: medium + whiteList['border-spacing'] = true; // default: 0 + whiteList['border-style'] = true; // default: depending on individual properties + whiteList['border-top'] = true; // default: depending on individual properties + whiteList['border-top-color'] = true; // default: current color + whiteList['border-top-left-radius'] = true; // default: 0 + whiteList['border-top-right-radius'] = true; // default: 0 + whiteList['border-top-style'] = true; // default: none + whiteList['border-top-width'] = true; // default: medium + whiteList['border-width'] = true; // default: depending on individual properties + whiteList['bottom'] = false; // default: auto + whiteList['box-decoration-break'] = true; // default: slice + whiteList['box-shadow'] = true; // default: none + whiteList['box-sizing'] = true; // default: content-box + whiteList['box-snap'] = true; // default: none + whiteList['box-suppress'] = true; // default: show + whiteList['break-after'] = true; // default: auto + whiteList['break-before'] = true; // default: auto + whiteList['break-inside'] = true; // default: auto + whiteList['caption-side'] = false; // default: top + whiteList['chains'] = false; // default: none + whiteList['clear'] = true; // default: none + whiteList['clip'] = false; // default: auto + whiteList['clip-path'] = false; // default: none + whiteList['clip-rule'] = false; // default: nonzero + whiteList['color'] = true; // default: implementation dependent + whiteList['color-interpolation-filters'] = true; // default: auto + whiteList['column-count'] = false; // default: auto + whiteList['column-fill'] = false; // default: balance + whiteList['column-gap'] = false; // default: normal + whiteList['column-rule'] = false; // default: depending on individual properties + whiteList['column-rule-color'] = false; // default: current color + whiteList['column-rule-style'] = false; // default: medium + whiteList['column-rule-width'] = false; // default: medium + whiteList['column-span'] = false; // default: none + whiteList['column-width'] = false; // default: auto + whiteList['columns'] = false; // default: depending on individual properties + whiteList['contain'] = false; // default: none + whiteList['content'] = false; // default: normal + whiteList['counter-increment'] = false; // default: none + whiteList['counter-reset'] = false; // default: none + whiteList['counter-set'] = false; // default: none + whiteList['crop'] = false; // default: auto + whiteList['cue'] = false; // default: depending on individual properties + whiteList['cue-after'] = false; // default: none + whiteList['cue-before'] = false; // default: none + whiteList['cursor'] = false; // default: auto + whiteList['direction'] = false; // default: ltr + whiteList['display'] = true; // default: depending on individual properties + whiteList['display-inside'] = true; // default: auto + whiteList['display-list'] = true; // default: none + whiteList['display-outside'] = true; // default: inline-level + whiteList['dominant-baseline'] = false; // default: auto + whiteList['elevation'] = false; // default: level + whiteList['empty-cells'] = false; // default: show + whiteList['filter'] = false; // default: none + whiteList['flex'] = false; // default: depending on individual properties + whiteList['flex-basis'] = false; // default: auto + whiteList['flex-direction'] = false; // default: row + whiteList['flex-flow'] = false; // default: depending on individual properties + whiteList['flex-grow'] = false; // default: 0 + whiteList['flex-shrink'] = false; // default: 1 + whiteList['flex-wrap'] = false; // default: nowrap + whiteList['float'] = false; // default: none + whiteList['float-offset'] = false; // default: 0 0 + whiteList['flood-color'] = false; // default: black + whiteList['flood-opacity'] = false; // default: 1 + whiteList['flow-from'] = false; // default: none + whiteList['flow-into'] = false; // default: none + whiteList['font'] = true; // default: depending on individual properties + whiteList['font-family'] = true; // default: implementation dependent + whiteList['font-feature-settings'] = true; // default: normal + whiteList['font-kerning'] = true; // default: auto + whiteList['font-language-override'] = true; // default: normal + whiteList['font-size'] = true; // default: medium + whiteList['font-size-adjust'] = true; // default: none + whiteList['font-stretch'] = true; // default: normal + whiteList['font-style'] = true; // default: normal + whiteList['font-synthesis'] = true; // default: weight style + whiteList['font-variant'] = true; // default: normal + whiteList['font-variant-alternates'] = true; // default: normal + whiteList['font-variant-caps'] = true; // default: normal + whiteList['font-variant-east-asian'] = true; // default: normal + whiteList['font-variant-ligatures'] = true; // default: normal + whiteList['font-variant-numeric'] = true; // default: normal + whiteList['font-variant-position'] = true; // default: normal + whiteList['font-weight'] = true; // default: normal + whiteList['grid'] = false; // default: depending on individual properties + whiteList['grid-area'] = false; // default: depending on individual properties + whiteList['grid-auto-columns'] = false; // default: auto + whiteList['grid-auto-flow'] = false; // default: none + whiteList['grid-auto-rows'] = false; // default: auto + whiteList['grid-column'] = false; // default: depending on individual properties + whiteList['grid-column-end'] = false; // default: auto + whiteList['grid-column-start'] = false; // default: auto + whiteList['grid-row'] = false; // default: depending on individual properties + whiteList['grid-row-end'] = false; // default: auto + whiteList['grid-row-start'] = false; // default: auto + whiteList['grid-template'] = false; // default: depending on individual properties + whiteList['grid-template-areas'] = false; // default: none + whiteList['grid-template-columns'] = false; // default: none + whiteList['grid-template-rows'] = false; // default: none + whiteList['hanging-punctuation'] = false; // default: none + whiteList['height'] = true; // default: auto + whiteList['hyphens'] = false; // default: manual + whiteList['icon'] = false; // default: auto + whiteList['image-orientation'] = false; // default: auto + whiteList['image-resolution'] = false; // default: normal + whiteList['ime-mode'] = false; // default: auto + whiteList['initial-letters'] = false; // default: normal + whiteList['inline-box-align'] = false; // default: last + whiteList['justify-content'] = false; // default: auto + whiteList['justify-items'] = false; // default: auto + whiteList['justify-self'] = false; // default: auto + whiteList['left'] = false; // default: auto + whiteList['letter-spacing'] = true; // default: normal + whiteList['lighting-color'] = true; // default: white + whiteList['line-box-contain'] = false; // default: block inline replaced + whiteList['line-break'] = false; // default: auto + whiteList['line-grid'] = false; // default: match-parent + whiteList['line-height'] = false; // default: normal + whiteList['line-snap'] = false; // default: none + whiteList['line-stacking'] = false; // default: depending on individual properties + whiteList['line-stacking-ruby'] = false; // default: exclude-ruby + whiteList['line-stacking-shift'] = false; // default: consider-shifts + whiteList['line-stacking-strategy'] = false; // default: inline-line-height + whiteList['list-style'] = true; // default: depending on individual properties + whiteList['list-style-image'] = true; // default: none + whiteList['list-style-position'] = true; // default: outside + whiteList['list-style-type'] = true; // default: disc + whiteList['margin'] = true; // default: depending on individual properties + whiteList['margin-bottom'] = true; // default: 0 + whiteList['margin-left'] = true; // default: 0 + whiteList['margin-right'] = true; // default: 0 + whiteList['margin-top'] = true; // default: 0 + whiteList['marker-offset'] = false; // default: auto + whiteList['marker-side'] = false; // default: list-item + whiteList['marks'] = false; // default: none + whiteList['mask'] = false; // default: border-box + whiteList['mask-box'] = false; // default: see individual properties + whiteList['mask-box-outset'] = false; // default: 0 + whiteList['mask-box-repeat'] = false; // default: stretch + whiteList['mask-box-slice'] = false; // default: 0 fill + whiteList['mask-box-source'] = false; // default: none + whiteList['mask-box-width'] = false; // default: auto + whiteList['mask-clip'] = false; // default: border-box + whiteList['mask-image'] = false; // default: none + whiteList['mask-origin'] = false; // default: border-box + whiteList['mask-position'] = false; // default: center + whiteList['mask-repeat'] = false; // default: no-repeat + whiteList['mask-size'] = false; // default: border-box + whiteList['mask-source-type'] = false; // default: auto + whiteList['mask-type'] = false; // default: luminance + whiteList['max-height'] = true; // default: none + whiteList['max-lines'] = false; // default: none + whiteList['max-width'] = true; // default: none + whiteList['min-height'] = true; // default: 0 + whiteList['min-width'] = true; // default: 0 + whiteList['move-to'] = false; // default: normal + whiteList['nav-down'] = false; // default: auto + whiteList['nav-index'] = false; // default: auto + whiteList['nav-left'] = false; // default: auto + whiteList['nav-right'] = false; // default: auto + whiteList['nav-up'] = false; // default: auto + whiteList['object-fit'] = false; // default: fill + whiteList['object-position'] = false; // default: 50% 50% + whiteList['opacity'] = false; // default: 1 + whiteList['order'] = false; // default: 0 + whiteList['orphans'] = false; // default: 2 + whiteList['outline'] = false; // default: depending on individual properties + whiteList['outline-color'] = false; // default: invert + whiteList['outline-offset'] = false; // default: 0 + whiteList['outline-style'] = false; // default: none + whiteList['outline-width'] = false; // default: medium + whiteList['overflow'] = false; // default: depending on individual properties + whiteList['overflow-wrap'] = false; // default: normal + whiteList['overflow-x'] = false; // default: visible + whiteList['overflow-y'] = false; // default: visible + whiteList['padding'] = true; // default: depending on individual properties + whiteList['padding-bottom'] = true; // default: 0 + whiteList['padding-left'] = true; // default: 0 + whiteList['padding-right'] = true; // default: 0 + whiteList['padding-top'] = true; // default: 0 + whiteList['page'] = false; // default: auto + whiteList['page-break-after'] = false; // default: auto + whiteList['page-break-before'] = false; // default: auto + whiteList['page-break-inside'] = false; // default: auto + whiteList['page-policy'] = false; // default: start + whiteList['pause'] = false; // default: implementation dependent + whiteList['pause-after'] = false; // default: implementation dependent + whiteList['pause-before'] = false; // default: implementation dependent + whiteList['perspective'] = false; // default: none + whiteList['perspective-origin'] = false; // default: 50% 50% + whiteList['pitch'] = false; // default: medium + whiteList['pitch-range'] = false; // default: 50 + whiteList['play-during'] = false; // default: auto + whiteList['position'] = false; // default: static + whiteList['presentation-level'] = false; // default: 0 + whiteList['quotes'] = false; // default: text + whiteList['region-fragment'] = false; // default: auto + whiteList['resize'] = false; // default: none + whiteList['rest'] = false; // default: depending on individual properties + whiteList['rest-after'] = false; // default: none + whiteList['rest-before'] = false; // default: none + whiteList['richness'] = false; // default: 50 + whiteList['right'] = false; // default: auto + whiteList['rotation'] = false; // default: 0 + whiteList['rotation-point'] = false; // default: 50% 50% + whiteList['ruby-align'] = false; // default: auto + whiteList['ruby-merge'] = false; // default: separate + whiteList['ruby-position'] = false; // default: before + whiteList['shape-image-threshold'] = false; // default: 0.0 + whiteList['shape-outside'] = false; // default: none + whiteList['shape-margin'] = false; // default: 0 + whiteList['size'] = false; // default: auto + whiteList['speak'] = false; // default: auto + whiteList['speak-as'] = false; // default: normal + whiteList['speak-header'] = false; // default: once + whiteList['speak-numeral'] = false; // default: continuous + whiteList['speak-punctuation'] = false; // default: none + whiteList['speech-rate'] = false; // default: medium + whiteList['stress'] = false; // default: 50 + whiteList['string-set'] = false; // default: none + whiteList['tab-size'] = false; // default: 8 + whiteList['table-layout'] = false; // default: auto + whiteList['text-align'] = true; // default: start + whiteList['text-align-last'] = true; // default: auto + whiteList['text-combine-upright'] = true; // default: none + whiteList['text-decoration'] = true; // default: none + whiteList['text-decoration-color'] = true; // default: currentColor + whiteList['text-decoration-line'] = true; // default: none + whiteList['text-decoration-skip'] = true; // default: objects + whiteList['text-decoration-style'] = true; // default: solid + whiteList['text-emphasis'] = true; // default: depending on individual properties + whiteList['text-emphasis-color'] = true; // default: currentColor + whiteList['text-emphasis-position'] = true; // default: over right + whiteList['text-emphasis-style'] = true; // default: none + whiteList['text-height'] = true; // default: auto + whiteList['text-indent'] = true; // default: 0 + whiteList['text-justify'] = true; // default: auto + whiteList['text-orientation'] = true; // default: mixed + whiteList['text-overflow'] = true; // default: clip + whiteList['text-shadow'] = true; // default: none + whiteList['text-space-collapse'] = true; // default: collapse + whiteList['text-transform'] = true; // default: none + whiteList['text-underline-position'] = true; // default: auto + whiteList['text-wrap'] = true; // default: normal + whiteList['top'] = false; // default: auto + whiteList['transform'] = false; // default: none + whiteList['transform-origin'] = false; // default: 50% 50% 0 + whiteList['transform-style'] = false; // default: flat + whiteList['transition'] = false; // default: depending on individual properties + whiteList['transition-delay'] = false; // default: 0s + whiteList['transition-duration'] = false; // default: 0s + whiteList['transition-property'] = false; // default: all + whiteList['transition-timing-function'] = false; // default: ease + whiteList['unicode-bidi'] = false; // default: normal + whiteList['vertical-align'] = false; // default: baseline + whiteList['visibility'] = false; // default: visible + whiteList['voice-balance'] = false; // default: center + whiteList['voice-duration'] = false; // default: auto + whiteList['voice-family'] = false; // default: implementation dependent + whiteList['voice-pitch'] = false; // default: medium + whiteList['voice-range'] = false; // default: medium + whiteList['voice-rate'] = false; // default: normal + whiteList['voice-stress'] = false; // default: normal + whiteList['voice-volume'] = false; // default: medium + whiteList['volume'] = false; // default: medium + whiteList['white-space'] = false; // default: normal + whiteList['widows'] = false; // default: 2 + whiteList['width'] = true; // default: auto + whiteList['will-change'] = false; // default: auto + whiteList['word-break'] = true; // default: normal + whiteList['word-spacing'] = true; // default: normal + whiteList['word-wrap'] = true; // default: normal + whiteList['wrap-flow'] = false; // default: auto + whiteList['wrap-through'] = false; // default: wrap + whiteList['writing-mode'] = false; // default: horizontal-tb + whiteList['z-index'] = false; // default: auto + + return whiteList; +} + + +/** + * 匹配到白名单上的一个属性时 + * + * @param {String} name + * @param {String} value + * @param {Object} options + * @return {String} + */ +function onAttr (name, value, options) { + // do nothing +} + +/** + * 匹配到不在白名单上的一个属性时 + * + * @param {String} name + * @param {String} value + * @param {Object} options + * @return {String} + */ +function onIgnoreAttr (name, value, options) { + // do nothing +} + +var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/img; + +/** + * 过滤属性值 + * + * @param {String} name + * @param {String} value + * @return {String} + */ +function safeAttrValue(name, value) { + if (REGEXP_URL_JAVASCRIPT.test(value)) return ''; + return value; +} + + +exports.whiteList = getDefaultWhiteList(); +exports.getDefaultWhiteList = getDefaultWhiteList; +exports.onAttr = onAttr; +exports.onIgnoreAttr = onIgnoreAttr; +exports.safeAttrValue = safeAttrValue; diff --git a/node_modules/cssfilter/lib/index.js b/node_modules/cssfilter/lib/index.js new file mode 100644 index 0000000..712f55f --- /dev/null +++ b/node_modules/cssfilter/lib/index.js @@ -0,0 +1,32 @@ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var DEFAULT = require('./default'); +var FilterCSS = require('./css'); + + +/** + * XSS过滤 + * + * @param {String} css 要过滤的CSS代码 + * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr + * @return {String} + */ +function filterCSS (html, options) { + var xss = new FilterCSS(options); + return xss.process(html); +} + + +// 输出 +exports = module.exports = filterCSS; +exports.FilterCSS = FilterCSS; +for (var i in DEFAULT) exports[i] = DEFAULT[i]; + +// 在浏览器端使用 +if (typeof window !== 'undefined') { + window.filterCSS = module.exports; +} diff --git a/node_modules/cssfilter/lib/parser.js b/node_modules/cssfilter/lib/parser.js new file mode 100644 index 0000000..fcb9418 --- /dev/null +++ b/node_modules/cssfilter/lib/parser.js @@ -0,0 +1,74 @@ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var _ = require('./util'); + + +/** + * 解析style + * + * @param {String} css + * @param {Function} onAttr 处理属性的函数 + * 参数格式: function (sourcePosition, position, name, value, source) + * @return {String} + */ +function parseStyle (css, onAttr) { + css = _.trimRight(css); + if (css[css.length - 1] !== ';') css += ';'; + var cssLength = css.length; + var isParenthesisOpen = false; + var lastPos = 0; + var i = 0; + var retCSS = ''; + + function addNewAttr () { + // 如果没有正常的闭合圆括号,则直接忽略当前属性 + if (!isParenthesisOpen) { + var source = _.trim(css.slice(lastPos, i)); + var j = source.indexOf(':'); + if (j !== -1) { + var name = _.trim(source.slice(0, j)); + var value = _.trim(source.slice(j + 1)); + // 必须有属性名称 + if (name) { + var ret = onAttr(lastPos, retCSS.length, name, value, source); + if (ret) retCSS += ret + '; '; + } + } + } + lastPos = i + 1; + } + + for (; i < cssLength; i++) { + var c = css[i]; + if (c === '/' && css[i + 1] === '*') { + // 备注开始 + var j = css.indexOf('*/', i + 2); + // 如果没有正常的备注结束,则后面的部分全部跳过 + if (j === -1) break; + // 直接将当前位置调到备注结尾,并且初始化状态 + i = j + 1; + lastPos = i + 1; + isParenthesisOpen = false; + } else if (c === '(') { + isParenthesisOpen = true; + } else if (c === ')') { + isParenthesisOpen = false; + } else if (c === ';') { + if (isParenthesisOpen) { + // 在圆括号里面,忽略 + } else { + addNewAttr(); + } + } else if (c === '\n') { + addNewAttr(); + } + } + + return _.trim(retCSS); +} + +module.exports = parseStyle; diff --git a/node_modules/cssfilter/lib/util.js b/node_modules/cssfilter/lib/util.js new file mode 100644 index 0000000..c8b4f7b --- /dev/null +++ b/node_modules/cssfilter/lib/util.js @@ -0,0 +1,35 @@ +module.exports = { + indexOf: function (arr, item) { + var i, j; + if (Array.prototype.indexOf) { + return arr.indexOf(item); + } + for (i = 0, j = arr.length; i < j; i++) { + if (arr[i] === item) { + return i; + } + } + return -1; + }, + forEach: function (arr, fn, scope) { + var i, j; + if (Array.prototype.forEach) { + return arr.forEach(fn, scope); + } + for (i = 0, j = arr.length; i < j; i++) { + fn.call(scope, arr[i], i, arr); + } + }, + trim: function (str) { + if (String.prototype.trim) { + return str.trim(); + } + return str.replace(/(^\s*)|(\s*$)/g, ''); + }, + trimRight: function (str) { + if (String.prototype.trimRight) { + return str.trimRight(); + } + return str.replace(/(\s*$)/g, ''); + } +}; diff --git a/node_modules/cssfilter/package.json b/node_modules/cssfilter/package.json new file mode 100644 index 0000000..26b92c1 --- /dev/null +++ b/node_modules/cssfilter/package.json @@ -0,0 +1,49 @@ +{ + "name": "cssfilter", + "version": "0.0.10", + "description": "Sanitize untrusted CSS with a configuration specified by a Whitelist. 根据白名单过滤CSS", + "main": "lib/index.js", + "files": [ + "lib" + ], + "scripts": { + "test": "istanbul cover _mocha --report lcovonly -- -t 5000 -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage", + "build": "./build", + "prepublish": "npm run test && npm run build" + }, + "repository": { + "type": "git", + "url": "https://github.com/leizongmin/js-css-filter.git" + }, + "keywords": [ + "sanitization", + "xss", + "sanitize", + "sanitisation", + "input", + "security", + "escape", + "encode", + "filter", + "validator", + "html", + "css", + "injection", + "whitelist" + ], + "author": "Zongmin Lei <leizongmin@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/leizongmin/js-css-filter/issues" + }, + "homepage": "https://github.com/leizongmin/js-css-filter", + "devDependencies": { + "blanket": "^1.1.6", + "browserify": "^13.1.1", + "coveralls": "^2.11.14", + "istanbul": "^0.4.5", + "mocha": "^3.1.2", + "should": "^11.1.1", + "uglify-js": "^2.7.4" + } +} diff --git a/node_modules/mavon-editor/LICENSE b/node_modules/mavon-editor/LICENSE new file mode 100644 index 0000000..7f71306 --- /dev/null +++ b/node_modules/mavon-editor/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 hinesboy + +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/node_modules/mavon-editor/README.md b/node_modules/mavon-editor/README.md new file mode 100644 index 0000000..dceac06 --- /dev/null +++ b/node_modules/mavon-editor/README.md @@ -0,0 +1,339 @@ +# mavonEditor +| Vue2 | [](https://www.npmjs.com/package/mavon-editor/v/latest) | +| ---- | ------------------------------------------------------------ | +| **Vue3** | [](https://www.npmjs.com/package/mavon-editor/v/next) | + +### [English Documents](./README-EN.md) + +## example (图片展示) + +### PC + + + + + +> [查看更多图片点击这里...](./doc/cn/images.md) + +### Install mavon-editor (安装) + +``` +$ npm install mavon-editor@next --save +``` + +### Use (如何引入) + +`index.js`: +```javascript + // 全局注册 + // import with ES6 + import { createApp } from 'vue' + import mavonEditor from 'mavon-editor' + import 'mavon-editor/dist/css/index.css' + // use + createApp(App).use(mavonEditor).mount('#app') +``` +`index.html` +```html +<div id="app"> + <mavon-editor v-model="value"/> +</div> +``` + +> [更多引入方式点击这里...](./doc/cn/use.md) + +> [如何获取并设置markdown-it对象...](./doc/cn/markdown.md) + +## API 文档 + +### props + +| name 名称 | type 类型 | default 默认值 | describe 描述 | +| ------------ | :-----: | :---------: | ---------------------------------------- | +| value | String | | 初始值 | +| language | String | zh-CN | 语言选择,暂支持 zh-CN: 简体中文, zh-TW: 正体中文 , en: 英文 , fr: 法语, pt-BR: 葡萄牙语, ru: 俄语, de: 德语, ja: 日语 | +| fontSize | String | 14px | 编辑区域文字大小 | +| scrollStyle | Boolean | true | 开启滚动条样式(暂时仅支持chrome) | +| boxShadow | Boolean | true | 开启边框阴影 | +| boxShadowStyle | String | 0 2px 12px 0 rgba(0, 0, 0, 0.1) | 边框阴影样式 | +| transition | Boolean | true | 是否开启过渡动画 | +| toolbarsBackground | String | #ffffff | 工具栏背景颜色 | +| previewBackground | String | #fbfbfb | 预览框背景颜色 | +| subfield | Boolean | true | true: 双栏(编辑预览同屏), false: 单栏(编辑预览分屏) | +| defaultOpen | String | |在单栏(`subfield=false`)时默认展示区域.<br/> edit: 默认展示编辑区域,<br/> preview: 默认展示预览区域 <br/> 其他 = edit | +| placeholder | String | 开始编辑... | 输入框为空时默认提示文本 | +| editable | Boolean | true | 是否允许编辑 | +| codeStyle | String | code-github | markdown样式: 默认github, [可选配色方案](./src/lib/core/hljs/lang.hljs.css.js) | +| toolbarsFlag | Boolean | true | 工具栏是否显示 | +| navigation | Boolean | false | 默认展示目录 | +| shortCut | Boolean | true | 是否启用快捷键 | +| autofocus | Boolean | true | 自动聚焦到文本框 | +| ishljs | Boolean | true | 代码高亮 | +| imageFilter | function | null | 图片过滤函数,参数为一个`File Object`,要求返回一个`Boolean`, `true`表示文件合法,`false`表示文件不合法 | +| imageClick | function | null | 图片点击事件,默认为预览,可覆盖 | +| tabSize | Number | \t | tab转化为几个空格,默认为\t | +| html | Boolean | true | 启用HTML标签,因为历史原因这个标记一直默认为true,但建议不使用HTML标签就关闭它,它能彻底杜绝安全问题。 | +| xssOptions | Object | {} | xss规则配置, 默认开启,设置false可以关闭,开启后会对HTML标签进行过滤,默认过滤所有HTML标签属性,建议按需配置白名单减少被攻击的可能。<br/>- 自定义规则参考: [https://jsxss.com/zh/options.html](https://jsxss.com/zh/options.html)<br/>- 参考DEMO: [dev-demo](./src/dev/editor.vue) | +| toolbars | Object | 如下例 | 工具栏 | + +#### toolbars +默认工具栏按钮全部开启, 传入自定义对象,可以选择启用部分按钮 + +```javascript + /* + 例如: { + bold: true, // 粗体 + italic: true,// 斜体 + header: true,// 标题 + } + 此时, 仅仅显示此三个功能键 + */ + +toolbars: { + bold: true, // 粗体 + italic: true, // 斜体 + header: true, // 标题 + underline: true, // 下划线 + strikethrough: true, // 中划线 + mark: true, // 标记 + superscript: true, // 上角标 + subscript: true, // 下角标 + quote: true, // 引用 + ol: true, // 有序列表 + ul: true, // 无序列表 + link: true, // 链接 + imagelink: true, // 图片链接 + code: true, // code + table: true, // 表格 + fullscreen: true, // 全屏编辑 + readmodel: true, // 沉浸式阅读 + htmlcode: true, // 展示html源码 + help: true, // 帮助 + /* 1.3.5 */ + undo: true, // 上一步 + redo: true, // 下一步 + trash: true, // 清空 + save: true, // 保存(触发events中的save事件) + /* 1.4.2 */ + navigation: true, // 导航目录 + /* 2.1.8 */ + alignleft: true, // 左对齐 + aligncenter: true, // 居中 + alignright: true, // 右对齐 + /* 2.2.1 */ + subfield: true, // 单双栏模式 + preview: true, // 预览 + } +``` + +如果需要自定义添加工具栏按钮,可以通过以下方式 +```js +<mavon-editor> + <!-- 左工具栏前加入自定义按钮 --> + <template slot="left-toolbar-before"> + <button + type="button" + @click="$click('test')" + class="op-icon fa fa-mavon-align-left" + aria-hidden="true" + title="自定义" + ></button> + </template> + <!-- 左工具栏后加入自定义按钮 --> + <template slot="left-toolbar-after"> + <button + type="button" + @click="$click('test')" + class="op-icon fa fa-mavon-align-left" + aria-hidden="true" + title="自定义" + ></button> + </template> + <!-- 右工具栏前加入自定义按钮 --> + <template slot="right-toolbar-before"> + <button + type="button" + @click="$click('test')" + class="op-icon fa fa-mavon-align-left" + aria-hidden="true" + title="自定义" + ></button> + </template> + <!-- 右工具栏后加入自定义按钮 --> + <template slot="right-toolbar-after"> + <button + type="button" + @click="$click('test')" + class="op-icon fa fa-mavon-align-left" + aria-hidden="true" + title="自定义" + ></button> + </template> +</mavon-editor> +``` + +### events 事件绑定 + +| name 方法名 | params 参数 | describe 描述 | +| ---------------- | :-----------------------------: | ---------------------------------------- | +| change | String: value , String: render | 编辑区发生变化的回调事件(render: value 经过markdown解析后的结果) | +| save | String: value , String: render | ctrl + s 的回调事件(保存按键,同样触发该回调) | +| fullScreen | Boolean: status , String: value | 切换全屏编辑的回调事件(boolean: 全屏开启状态) | +| readModel | Boolean: status , String: value | 切换沉浸式阅读的回调事件(boolean: 阅读开启状态) | +| htmlCode | Boolean: status , String: value | 查看html源码的回调事件(boolean: 源码开启状态) | +| subfieldToggle | Boolean: status , String: value | 切换单双栏编辑的回调事件(boolean: 双栏开启状态) | +| previewToggle | Boolean: status , String: value | 切换预览编辑的回调事件(boolean: 预览开启状态) | +| helpToggle | Boolean: status , String: value | 查看帮助的回调事件(boolean: 帮助开启状态) | +| navigationToggle | Boolean: status , String: value | 切换导航目录的回调事件(boolean: 导航开启状态) | +| imgAdd | Number: pos, [File](https://developer.mozilla.org/en-US/docs/Web/API/File): imgfile | 图片文件添加回调事件(pos: 图片在列表中的位置, File: File Object) | +| imgDel | Array(2):[Number: pos,[File](https://developer.mozilla.org/en-US/docs/Web/API/File):imgfile ] | 图片文件删除回调事件(Array(2): 两个元素的数组,第一位是图片在列表中的位置,第二位是File对象) | + +### 代码高亮 + +> 如不需要hightlight代码高亮显示,你应该设置ishljs为false + +开启代码高亮props +```vue + <!-- ishljs默认为true --> + <mavon-editor :ishljs = "true"></mavon-editor> +``` + +为优化插件体积,从**v2.4.2**起以下文件将默认使用`cdnjs`外链: + + `highlight.js` + + `github-markdown-css` + + `katex`(**v2.4.7**) + +代码高亮`highlight.js`中的语言解析文件和代码高亮样式将在使用时按需加载. +`github-markdown-css`和`katex`仅会在`mounted`时加载 + +**Notice**: +[可选配色方案](./src/lib/core/hljs/lang.hljs.css.js) 和 [支持的语言](./src/lib/core/hljs/lang.hljs.js) 是从 [highlight.js/9.12.0](https://github.com/isagalaev/highlight.js/tree/master/src) 导出的 + +> [不使用cdn,本地按需加载点击这里...](./doc/cn/no-cnd.md) + +### 图片上传 + +```vue +<template> + <mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor> +</template> +<script> +exports default { + methods: { + // 绑定@imgAdd event + $imgAdd(pos, $file){ + // 第一步.将图片上传到服务器. + var formdata = new FormData(); + formdata.append('image', $file); + axios({ + url: 'server url', + method: 'post', + data: formdata, + headers: { 'Content-Type': 'multipart/form-data' }, + }).then((url) => { + // 第二步.将返回的url替换到文本原位置 ->  + /** + * $vm 指为mavonEditor实例,可以通过如下两种方式获取 + * 1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,`$vm`为`mavonEditor` + * 2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`为 `this.$refs.md` + */ + $vm.$img2Url(pos, url); + }) + } + } +} +</script> +``` +> [图片上传详情点击这里...](./doc/cn/upload-images.md) + +### 注 + +- **默认大小样式为 min-height: 300px , min-width: 300px 可自行覆盖** +- **基础z-index: 1500** +- **仅用作展示可以设置props: toolbarsFlag: false , subfield: false, defaultOpen: "preview"** + + +### 快捷键 + +| key | keycode | 功能 | +| ---------------- | :----------------: | :-----------------------------: | +| F8 | 119 | 开启/关闭导航 | +| F9 | 120 | 预览/编辑切换 | +| F10 | 121 | 开启/关闭全屏 | +| F11 | 122 | 开启/关闭阅读模式 | +| F12 | 123 | 单栏/双栏切换 | +| TAB | 9 | 缩进 | +| CTRL + S | 17 + 83 | 触发保存 | +| CTRL + D | 17 + 68 | 删除选中行 | +| CTRL + Z | 17 + 90 | 上一步 | +| CTRL + Y | 17 + 89 | 下一步 | +| CTRL + BreakSpace | 17 + 8 | 清空编辑 | +| CTRL + B | 17 + 66 | \*\*加粗\*\* | +| CTRL + I | 17 + 73 | \*斜体\* | +| CTRL + H | 17 + 72 | # 标题 | +| CTRL + 1 | 17 + 97 or 49 | # 标题 | +| CTRL + 2 | 17 + 98 or 50 | ## 标题 | +| CTRL + 3 | 17 + 99 or 51 | ### 标题 | +| CTRL + 4 | 17 + 100 or 52 | #### 标题 | +| CTRL + 5 | 17 + 101 or 53 | ##### 标题 | +| CTRL + 6 | 17 + 102 or 54 | ###### 标题 | +| CTRL + U | 17 + 85 | ++下划线++ | +| CTRL + M | 17 + 77 | ==标记== | +| CTRL + Q | 17 + 81 | > 引用 | +| CTRL + O | 17 + 79 | 1. 有序列表 | +| CTRL + L | 17 + 76 | \[链接标题\](链接地址) | +| CTRL + ALT + S | 17 + 18 + 83 | ^上角标^ | +| CTRL + ALT + U | 17 + 18 + 85 | - 无序列表 | +| CTRL + ALT + C | 17 + 18 + 67 | \`\`\` 代码块 | +| CTRL + ALT + L | 17 + 18 + 76 | \!\[图片标题\](图片链接) | +| CTRL + ALT + T | 17 + 18 + 84 | 表格 | +| CTRL + SHIFT + S | 17 + 16 + 83 | ~下角标~ | +| CTRL + SHIFT + D | 17 + 16 + 68 | \~\~中划线\~\~ | +| CTRL + SHIFT + C | 17 + 16 + 67 | 居中 | +| CTRL + SHIFT + L | 17 + 16 + 76 | 居左 | +| CTRL + SHIFT + R | 17 + 16 + 82 | 居右 | +| SHIFT + TAB | 16 + 9 | 取消缩进 | + + +## Dependencies (依赖) + +- [markdown-it](https://github.com/markdown-it/markdown-it) + +- [auto-textarea](https://github.com/hinesboy/auto-textarea) + + +## Markdown 语法拓展 + +- [emoji](https://github.com/markdown-it/markdown-it-emoji) +- [subscript](https://github.com/markdown-it/markdown-it-sub) +- [superscript](https://github.com/markdown-it/markdown-it-sup) +- [container](https://github.com/markdown-it/markdown-it-container) +- [definition list](https://github.com/markdown-it/markdown-it-deflist) +- [abbreviation](https://github.com/markdown-it/markdown-it-abbr) +- [footnote](https://github.com/markdown-it/markdown-it-footnote) +- [insert](https://github.com/markdown-it/markdown-it-ins) +- [mark](https://github.com/markdown-it/markdown-it-mark) +- [todo list](https://github.com/revin/markdown-it-task-lists) +- [highlight](https://github.com/isagalaev/highlight.js) +- [katex](https://github.com/Khan/KaTeX) +- [images preview](https://github.com/CHENXCHEN/markdown-it-images-preview) +- [toc](https://github.com/tylerlong/markdown-it-toc) +> 可通过[获取markdown-it对象](./doc/cn/markdown.md)引入[其他语法插件](https://www.npmjs.com/search?q=keywords:markdown-it-plugin) + + +## update(更新内容) + +- [更新日志](./LOG.md) + +## Collaborators(合作者) + +- [CHENXCHEN](https://github.com/CHENXCHEN) +- [ygj6](https://github.com/ygj6) +- [yukaige](https://github.com/yukaige) + + +## License (证书) + +mavonEditor is open source and released under the MIT License. + +Copyright (c) 2017 hinesboy diff --git a/node_modules/mavon-editor/dist/css/index.css b/node_modules/mavon-editor/dist/css/index.css new file mode 100644 index 0000000..1fa309b --- /dev/null +++ b/node_modules/mavon-editor/dist/css/index.css @@ -0,0 +1 @@ +.auto-textarea-wrapper[data-v-33c11741]{height:100%}.markdown-body strong{font-weight:bolder}.markdown-body .hljs-center{text-align:center}.markdown-body .hljs-right{text-align:right}.markdown-body .hljs-left{text-align:left}.markdown-body .hljs{overflow:auto}@font-face{font-family:fontello;src:url(../font/fontello.eot);src:url(../font/fontello.eot#iefix) format("embedded-opentype"),url(../font/fontello.woff2) format("woff2"),url(../font/fontello.woff) format("woff"),url(../font/fontello.ttf) format("truetype"),url(../font/fontello.svg#fontello) format("svg");font-weight:400;font-style:normal}[class*=" fa-mavon-"]:before,[class^=fa-mavon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-mavon-bold:before{content:"\e800"}.fa-mavon-italic:before{content:"\e801"}.fa-mavon-thumb-tack:before{content:"\e802"}.fa-mavon-link:before{content:"\e803"}.fa-mavon-picture-o:before{content:"\e804"}.fa-mavon-repeat:before{content:"\e805"}.fa-mavon-undo:before{content:"\e806"}.fa-mavon-trash-o:before{content:"\e807"}.fa-mavon-floppy-o:before{content:"\e808"}.fa-mavon-compress:before{content:"\e809"}.fa-mavon-eye:before{content:"\e80a"}.fa-mavon-eye-slash:before{content:"\e80b"}.fa-mavon-question-circle:before{content:"\e80c"}.fa-mavon-times:before{content:"\e80d"}.fa-mavon-align-left:before{content:"\e80f"}.fa-mavon-align-center:before{content:"\e810"}.fa-mavon-align-right:before{content:"\e811"}.fa-mavon-arrows-alt:before{content:"\f0b2"}.fa-mavon-bars:before{content:"\f0c9"}.fa-mavon-list-ul:before{content:"\f0ca"}.fa-mavon-list-ol:before{content:"\f0cb"}.fa-mavon-strikethrough:before{content:"\f0cc"}.fa-mavon-underline:before{content:"\f0cd"}.fa-mavon-table:before{content:"\f0ce"}.fa-mavon-columns:before{content:"\f0db"}.fa-mavon-quote-left:before{content:"\f10d"}.fa-mavon-code:before{content:"\f121"}.fa-mavon-superscript:before{content:"\f12b"}.fa-mavon-subscript:before{content:"\f12c"}.fa-mavon-header:before{content:"\f1dc"}.fa-mavon-window-maximize:before{content:"\f2d0"} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/font/fontello.eot b/node_modules/mavon-editor/dist/font/fontello.eot new file mode 100644 index 0000000000000000000000000000000000000000..4f8bd8207106c88b0d216d339dfcc50bee7ae8b2 GIT binary patch literal 15568 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 MlK5d5iV;HoA7$VQ@c;k- literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/font/fontello.svg b/node_modules/mavon-editor/dist/font/fontello.svg new file mode 100644 index 0000000..01812b4 --- /dev/null +++ b/node_modules/mavon-editor/dist/font/fontello.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata> +<defs> +<font id="fontello" horiz-adv-x="1000" > +<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> +<missing-glyph horiz-adv-x="1000" /> +<glyph glyph-name="bold" unicode="" d="M310 1q41-18 78-18 210 0 210 187 0 64-23 101-15 24-34 41t-38 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-88q0-5 0-38t0-54 2-47 7-37z m-8 417q23-4 61-4 46 0 80 7t61 25 42 50 14 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7 0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38z m-302-497l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 6q13 0 38-1t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-138q0-56-20-101t-52-72-77-48-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z" horiz-adv-x="785.7" /> + +<glyph glyph-name="italic" unicode="" d="M0-78l10 48q12 4 34 9t40 11 33 13q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 8-30 11t-39 4-32 3l10 58q19-1 67-4t84-4 67-1q27 0 55 1t68 4 54 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-7z" horiz-adv-x="571.4" /> + +<glyph glyph-name="thumb-tack" unicode="" d="M650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" /> + +<glyph glyph-name="link" unicode="" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" /> + +<glyph glyph-name="picture-o" unicode="" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" /> + +<glyph glyph-name="repeat" unicode="" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" /> + +<glyph glyph-name="undo" unicode="" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" /> + +<glyph glyph-name="trash-o" unicode="" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> + +<glyph glyph-name="floppy-o" unicode="" d="M214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-7 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" /> + +<glyph glyph-name="compress" unicode="" d="M429 314v-250q0-14-11-25t-25-10-25 10l-81 81-185-186q-5-5-13-5t-12 5l-64 64q-6 6-6 13t6 13l185 185-80 80q-11 11-11 25t11 25 25 11h250q14 0 25-11t11-25z m421 375q0-7-6-12l-185-186 80-80q11-11 11-25t-11-25-25-11h-250q-14 0-25 11t-10 25v250q0 14 10 25t25 10 25-10l81-80 185 185q6 5 13 5t13-5l63-64q6-5 6-13z" horiz-adv-x="857.1" /> + +<glyph glyph-name="eye" unicode="" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" /> + +<glyph glyph-name="eye-slash" unicode="" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" /> + +<glyph glyph-name="question-circle" unicode="" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> + +<glyph glyph-name="times" unicode="" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" /> + +<glyph glyph-name="align-left" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="align-center" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-500q-14 0-25 11t-11 25v71q0 15 11 25t25 11h500q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v72q0 14 11 25t25 10h786q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-358q-14 0-25 10t-10 25v72q0 14 10 25t25 11h358q14 0 25-11t10-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="align-right" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-714q-14 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-857q-14 0-25 11t-11 25v72q0 14 11 25t25 10h857q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-643q-14 0-25 10t-10 25v72q0 14 10 25t25 11h643q15 0 25-11t11-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="arrows-alt" unicode="" d="M716 548l-198-198 198-198 80 80q17 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 21 7 38l81 81-198 198-198-198 80-81q17-17 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-14 3-22 9-22 33v250q0 14 11 25t25 11h250q23 0 33-23 9-21-8-38l-80-81 198-198 198 198-81 81q-17 17-7 38 9 23 32 23h250q15 0 26-11t10-25v-250q0-24-22-33-7-3-14-3-14 0-25 11z" horiz-adv-x="857.1" /> + +<glyph glyph-name="bars" unicode="" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" /> + +<glyph glyph-name="list-ul" unicode="" d="M214 64q0-44-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 7 5 12t13 6h678q7 0 13-6t5-12z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="list-ol" unicode="" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="strikethrough" unicode="" d="M982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 55-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-101-33-38-32-38-81 0-41 37-78t156-72q38-12 96-37 33-16 53-29h-414z m283-143h229q4-22 4-51 0-62-23-119-13-31-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-76 40z" horiz-adv-x="1000" /> + +<glyph glyph-name="underline" unicode="" d="M27 726q-21 1-25 2l-2 49q7 1 22 1 34 0 63-3 74-4 93-4 47 0 93 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-7 0-18t0-15l1-127 8-157q3-69 28-112 20-33 54-52 49-26 98-26 59 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-1q3-22 3-29 0-4-2-17-25-7-47-8-41-6-44-9-8-8-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-31-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 45-9 132v186q0 105-9 119-14 20-82 22z m830-787v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h821q8 0 13 5t5 13z" horiz-adv-x="857.1" /> + +<glyph glyph-name="table" unicode="" d="M286 82v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m0 214v108q0 7-5 12t-13 5h-179q-7 0-12-5t-6-12v-108q0-7 6-12t12-5h179q8 0 13 5t5 12z m285-214v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m-285 429v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m285-215v108q0 7-5 12t-12 5h-179q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h179q7 0 12 5t5 12z m286-214v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m-286 429v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m286-215v108q0 7-5 12t-13 5h-178q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h178q8 0 13 5t5 12z m0 215v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m72 178v-607q0-37-27-63t-63-26h-750q-36 0-63 26t-26 63v607q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" /> + +<glyph glyph-name="columns" unicode="" d="M89-7h340v643h-358v-625q0-7 6-13t12-5z m768 18v625h-357v-643h339q8 0 13 5t5 13z m72 678v-678q0-37-27-63t-63-27h-750q-36 0-63 27t-26 63v678q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" /> + +<glyph glyph-name="quote-left" unicode="" d="M429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" /> + +<glyph glyph-name="code" unicode="" d="M344 69l-28-28q-5-5-12-5t-13 5l-260 261q-6 5-6 12t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l209 720q2 8 8 11t13 2l35-10q7-2 11-9t1-13z m367-363l-260-261q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-12z" horiz-adv-x="1071.4" /> + +<glyph glyph-name="superscript" unicode="" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m355 379v-115h-287l-1 15q-3 16-3 26 0 36 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-6-20-22l-59 52q15 20 35 37 47 36 105 36 61 0 99-33t38-89q0-31-13-57t-35-43-45-33-46-28-37-28-17-36h130v45h70z" horiz-adv-x="857.1" /> + +<glyph glyph-name="subscript" unicode="" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m356-121v-115h-287l-2 15q-2 25-2 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-28 0-54-21-8-6-20-22l-59 52q15 20 35 37 45 36 105 36 62 0 100-33t37-89q0-37-19-66t-47-48-55-35-49-35-23-41h130v45h70z" horiz-adv-x="857.1" /> + +<glyph glyph-name="header" unicode="" d="M939-79q-25 0-74 2t-75 2q-24 0-73-2t-74-2q-13 0-21 12t-7 25q0 18 9 26t22 9 29 4 25 9q18 11 18 78l0 218q0 12-1 17-7 3-28 3h-376q-22 0-29-3 0-5 0-17l-1-207q0-79 21-91 9-6 26-8t32-2 25-8 11-26q0-14-6-26t-21-13q-26 0-78 2t-77 2q-24 0-71-2t-71-2q-13 0-20 12t-7 25q0 17 9 25t20 10 26 4 24 9q18 13 18 80l-1 31v454q0 2 1 15t0 20-1 21-2 24-4 20-6 18-9 10q-8 5-25 7t-29 1-23 7-10 26q0 14 6 26t20 13q26 0 78-2t77-2q23 0 71 2t70 2q14 0 21-13t7-26q0-17-9-25t-22-8-27-2-24-7q-20-12-20-90l1-178q0-12 0-18 7-2 22-2h390q14 0 21 2 1 6 1 18l0 178q0 78-19 90-10 6-33 7t-37 7-14 28q0 14 7 26t21 13q24 0 74-2t73-2q24 0 72 2t72 2q14 0 21-13t7-26q0-17-10-25t-22-8-29-2-24-7q-20-13-20-90l1-526q0-66 19-78 9-6 25-8t30-2 23-9 10-25q0-14-6-26t-20-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="window-maximize" unicode="" d="M143 64h714v429h-714v-429z m857 625v-678q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v678q0 37 26 63t63 27h822q37 0 63-27t26-63z" horiz-adv-x="1000" /> +</font> +</defs> +</svg> \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/font/fontello.ttf b/node_modules/mavon-editor/dist/font/fontello.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fcc3b308b45bd042835771713158f9e97b75211f GIT binary patch literal 15400 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 B_x=C? literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/font/fontello.woff b/node_modules/mavon-editor/dist/font/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..984445365a1cb97d508c612c13142313eece4b10 GIT binary patch literal 9068 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/font/fontello.woff2 b/node_modules/mavon-editor/dist/font/fontello.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..957d0533bb3add3e396e6f484b3caa0383b11bdb GIT binary patch literal 7764 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 ax5DGbVzc~Kx8&gBZ{xtE?`B87pKt@}gU<l~ literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/highlightjs/highlight.min.js b/node_modules/mavon-editor/dist/highlightjs/highlight.min.js new file mode 100644 index 0000000..2344106 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/highlight.min.js @@ -0,0 +1,1149 @@ +/*! + Highlight.js v11.3.1 (git: 2a972d8658) + (c) 2006-2021 Ivan Sagalaev and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";var e={exports:{}};function n(e){ +return e instanceof Map?e.clear=e.delete=e.set=()=>{ +throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{var a=e[t] +;"object"!=typeof a||Object.isFrozen(a)||n(a)})),e} +e.exports=n,e.exports.default=n;var t=e.exports;class a{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function i(e){ +return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'") +}function r(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n] +;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t}const s=e=>!!e.kind +;class o{constructor(e,n){ +this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){ +this.buffer+=i(e)}openNode(e){if(!s(e))return;let n=e.kind +;n=e.sublanguage?"language-"+n:((e,{prefix:n})=>{if(e.includes(".")){ +const t=e.split(".") +;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ") +}return`${n}${e}`})(n,{prefix:this.classPrefix}),this.span(n)}closeNode(e){ +s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ +this.buffer+=`<span class="${e}">`}}class l{constructor(){this.rootNode={ +children:[]},this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const n={kind:e,children:[]} +;this.add(n),this.stack.push(n)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){ +return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n), +n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root +;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function d(e){ +return e?"string"==typeof e?e:e.source:null}function g(e){return m("(?=",e,")")} +function u(e){return m("(?:",e,")*")}function b(e){return m("(?:",e,")?")} +function m(...e){return e.map((e=>d(e))).join("")}function p(...e){const n=(e=>{ +const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"} +function _(e){return RegExp(e.toString()+"|").exec("").length-1} +const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t +;let a=d(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break} +i+=a.substring(0,e.index), +a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0], +"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)} +const E="[a-zA-Z]\\w*",y="[a-zA-Z_]\\w*",N="\\b\\d+(\\.\\d+)?",w="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v="\\b(0b[01]+)",O={ +begin:"\\\\[\\s\\S]",relevance:0},x={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[O]},M={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[O]},k=(e,n,t={})=>{const a=r({scope:"comment",begin:e,end:n, +contains:[]},t);a.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;const i=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return a.contains.push({begin:m(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a +},S=k("//","$"),A=k("/\\*","\\*/"),C=k("#","$");var T=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:E,UNDERSCORE_IDENT_RE:y, +NUMBER_RE:N,C_NUMBER_RE:w,BINARY_NUMBER_RE:v, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const n=/^#![ ]*\// +;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:n, +end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)}, +BACKSLASH_ESCAPE:O,APOS_STRING_MODE:x,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:{ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},COMMENT:k,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:C, +NUMBER_MODE:{scope:"number",begin:N,relevance:0},C_NUMBER_MODE:{scope:"number", +begin:w,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:v,relevance:0}, +REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, +end:/\/[gimuy]*/,illegal:/\n/,contains:[O,{begin:/\[/,end:/\]/,relevance:0, +contains:[O]}]}]},TITLE_MODE:{scope:"title",begin:E,relevance:0}, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:y,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{ +n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function R(e,n){ +"."===e.input[e.index-1]&&n.ignoreMatch()}function D(e,n){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,n){ +n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function L(e,n){ +Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function B(e,n){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function $(e,n){ +void 0===e.relevance&&(e.relevance=1)}const F=(e,n)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n] +})),e.keywords=t.keywords,e.begin=m(t.beforeMatch,g(t.begin)),e.starts={ +relevance:0,contains:[Object.assign(t,{endsParent:!0})] +},e.relevance=0,delete t.beforeMatch +},z=["of","and","for","in","not","or","if","then","parent","list","value"] +;function U(e,n,t="keyword"){const a=Object.create(null) +;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{ +Object.assign(a,U(e[t],n,t))})),a;function i(e,t){ +n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|") +;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){ +return n?Number(n):(e=>z.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{ +console.error(e)},q=(e,...n)=>{console.log("WARN: "+e,...n)},H=(e,n)=>{ +P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0) +},Z=Error();function G(e,n,{key:t}){let a=0;const i=e[t],r={},s={} +;for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=_(n[e-1]) +;e[t]=s,e[t]._emit=r,e[t]._multi=!0}function W(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +Z +;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"), +Z;G(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +Z +;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"), +Z;G(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function Q(e){ +function n(n,t){ +return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":"")) +}class t{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,n){ +n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]), +this.matchAt+=_(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const n=this.matcherRe.exec(e);if(!n)return null +;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t] +;return n.splice(0,t),Object.assign(n,a)}}class a{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t +;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))), +n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){ +this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){ +const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex +;let t=n.exec(e) +;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{ +const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)} +return t&&(this.regexIndex+=t.position+1, +this.regexIndex===this.count&&this.considerAll()),t}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=r(e.classNameAliases||{}),function t(i,s){const o=i +;if(i.isCompiled)return o +;[D,B,W,F].forEach((e=>e(i,s))),e.compilerExtensions.forEach((e=>e(i,s))), +i.__beforeBegin=null,[I,L,$].forEach((e=>e(i,s))),i.isCompiled=!0;let l=null +;return"object"==typeof i.keywords&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords), +l=i.keywords.$pattern, +delete i.keywords.$pattern),l=l||/\w+/,i.keywords&&(i.keywords=U(i.keywords,e.case_insensitive)), +o.keywordPatternRe=n(l,!0), +s&&(i.begin||(i.begin=/\B|\b/),o.beginRe=n(o.begin),i.end||i.endsWithParent||(i.end=/\B|\b/), +i.end&&(o.endRe=n(o.end)), +o.terminatorEnd=d(o.end)||"",i.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)), +i.illegal&&(o.illegalRe=n(i.illegal)), +i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>r(e,{ +variants:null},n)))),e.cachedVariants?e.cachedVariants:X(e)?r(e,{ +starts:e.starts?r(e.starts):null +}):Object.isFrozen(e)?r(e):e))("self"===e?i:e)))),i.contains.forEach((e=>{t(e,o) +})),i.starts&&t(i.starts,s),o.matcher=(e=>{const n=new a +;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function X(e){ +return!!e&&(e.endsWithParent||X(e.starts))}class V extends Error{ +constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}} +const J=i,Y=r,ee=Symbol("nomatch");var ne=(e=>{ +const n=Object.create(null),i=Object.create(null),r=[];let s=!0 +;const o="Could not find the language '{}', did you forget to load/include a language module?",l={ +disableAutodetect:!0,name:"Plain text",contains:[]};let d={ +ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:c};function _(e){ +return d.noHighlightRe.test(e)}function h(e,n,t){let a="",i="" +;"object"==typeof n?(a=e, +t=n.ignoreIllegals,i=n.language):(H("10.7.0","highlight(lang, code, ...args) has been deprecated."), +H("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};M("before:highlight",r) +;const s=r.result?r.result:f(r.language,r.code,t) +;return s.code=r.code,M("after:highlight",s),s}function f(e,t,i,r){ +const l=Object.create(null);function c(){if(!x.keywords)return void k.addText(S) +;let e=0;x.keywordPatternRe.lastIndex=0;let n=x.keywordPatternRe.exec(S),t="" +;for(;n;){t+=S.substring(e,n.index) +;const i=N.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,x.keywords[a]);if(r){ +const[e,a]=r +;if(k.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(A+=a),e.startsWith("_"))t+=n[0];else{ +const t=N.classNameAliases[e]||e;k.addKeyword(n[0],t)}}else t+=n[0] +;e=x.keywordPatternRe.lastIndex,n=x.keywordPatternRe.exec(S)}var a +;t+=S.substr(e),k.addText(t)}function g(){null!=x.subLanguage?(()=>{ +if(""===S)return;let e=null;if("string"==typeof x.subLanguage){ +if(!n[x.subLanguage])return void k.addText(S) +;e=f(x.subLanguage,S,!0,M[x.subLanguage]),M[x.subLanguage]=e._top +}else e=E(S,x.subLanguage.length?x.subLanguage:null) +;x.relevance>0&&(A+=e.relevance),k.addSublanguage(e._emitter,e.language) +})():c(),S=""}function u(e,n){let t=1;for(;void 0!==n[t];){if(!e._emit[t]){t++ +;continue}const a=N.classNameAliases[e[t]]||e[t],i=n[t] +;a?k.addKeyword(i,a):(S=i,c(),S=""),t++}}function b(e,n){ +return e.scope&&"string"==typeof e.scope&&k.openNode(N.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(k.addKeyword(S,N.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +S=""):e.beginScope._multi&&(u(e.beginScope,n),S="")),x=Object.create(e,{parent:{ +value:x}}),x}function m(e,n,t){let i=((e,n)=>{const t=e&&e.exec(n) +;return t&&0===t.index})(e.endRe,t);if(i){if(e["on:end"]){const t=new a(e) +;e["on:end"](n,t),t.isMatchIgnored&&(i=!1)}if(i){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,n,t)}function p(e){ +return 0===x.matcher.regexIndex?(S+=e[0],1):(R=!0,0)}function _(e){ +const n=e[0],a=t.substr(e.index),i=m(x,e,a);if(!i)return ee;const r=x +;x.endScope&&x.endScope._wrap?(g(), +k.addKeyword(n,x.endScope._wrap)):x.endScope&&x.endScope._multi?(g(), +u(x.endScope,e)):r.skip?S+=n:(r.returnEnd||r.excludeEnd||(S+=n), +g(),r.excludeEnd&&(S=n));do{ +x.scope&&k.closeNode(),x.skip||x.subLanguage||(A+=x.relevance),x=x.parent +}while(x!==i.parent);return i.starts&&b(i.starts,e),r.returnEnd?0:n.length} +let h={};function y(n,r){const o=r&&r[0];if(S+=n,null==o)return g(),0 +;if("begin"===h.type&&"end"===r.type&&h.index===r.index&&""===o){ +if(S+=t.slice(r.index,r.index+1),!s){const n=Error(`0 width match regex (${e})`) +;throw n.languageName=e,n.badRule=h.rule,n}return 1} +if(h=r,"begin"===r.type)return(e=>{ +const n=e[0],t=e.rule,i=new a(t),r=[t.__beforeBegin,t["on:begin"]] +;for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return p(n) +;return t.skip?S+=n:(t.excludeBegin&&(S+=n), +g(),t.returnBegin||t.excludeBegin||(S=n)),b(t,e),t.returnBegin?0:n.length})(r) +;if("illegal"===r.type&&!i){ +const e=Error('Illegal lexeme "'+o+'" for mode "'+(x.scope||"<unnamed>")+'"') +;throw e.mode=x,e}if("end"===r.type){const e=_(r);if(e!==ee)return e} +if("illegal"===r.type&&""===o)return 1 +;if(T>1e5&&T>3*r.index)throw Error("potential infinite loop, way more iterations than matches") +;return S+=o,o.length}const N=v(e) +;if(!N)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const w=Q(N);let O="",x=r||w;const M={},k=new d.__emitter(d);(()=>{const e=[] +;for(let n=x;n!==N;n=n.parent)n.scope&&e.unshift(n.scope) +;e.forEach((e=>k.openNode(e)))})();let S="",A=0,C=0,T=0,R=!1;try{ +for(x.matcher.considerAll();;){ +T++,R?R=!1:x.matcher.considerAll(),x.matcher.lastIndex=C +;const e=x.matcher.exec(t);if(!e)break;const n=y(t.substring(C,e.index),e) +;C=e.index+n}return y(t.substr(C)),k.closeAllNodes(),k.finalize(),O=k.toHTML(),{ +language:e,value:O,relevance:A,illegal:!1,_emitter:k,_top:x}}catch(n){ +if(n.message&&n.message.includes("Illegal"))return{language:e,value:J(t), +illegal:!0,relevance:0,_illegalBy:{message:n.message,index:C, +context:t.slice(C-100,C+100),mode:n.mode,resultSoFar:O},_emitter:k};if(s)return{ +language:e,value:J(t),illegal:!1,relevance:0,errorRaised:n,_emitter:k,_top:x} +;throw n}}function E(e,t){t=t||d.languages||Object.keys(n);const a=(e=>{ +const n={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)} +;return n._emitter.addText(e),n})(e),i=t.filter(v).filter(x).map((n=>f(n,e,!1))) +;i.unshift(a);const r=i.sort(((e,n)=>{ +if(e.relevance!==n.relevance)return n.relevance-e.relevance +;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1 +;if(v(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s +;return c.secondBest=o,c}function y(e){let n=null;const t=(e=>{ +let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"" +;const t=d.languageDetectRe.exec(n);if(t){const n=v(t[1]) +;return n||(q(o.replace("{}",t[1])), +q("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"} +return n.split(/\s+/).find((e=>_(e)||v(e)))})(e);if(_(t))return +;if(M("before:highlightElement",{el:e,language:t +}),e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/issues/2886"), +console.warn(e)), +d.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML) +;n=e;const a=n.textContent,r=t?h(a,{language:t,ignoreIllegals:!0}):E(a) +;e.innerHTML=r.value,((e,n,t)=>{const a=n&&i[n]||t +;e.classList.add("hljs"),e.classList.add("language-"+a) +})(e,t,r.language),e.result={language:r.language,re:r.relevance, +relevance:r.relevance},r.secondBest&&(e.secondBest={ +language:r.secondBest.language,relevance:r.secondBest.relevance +}),M("after:highlightElement",{el:e,result:r,text:a})}let N=!1;function w(){ +"loading"!==document.readyState?document.querySelectorAll(d.cssSelector).forEach(y):N=!0 +}function v(e){return e=(e||"").toLowerCase(),n[e]||n[i[e]]} +function O(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +i[e.toLowerCase()]=n}))}function x(e){const n=v(e) +;return n&&!n.disableAutodetect}function M(e,n){const t=e;r.forEach((e=>{ +e[t]&&e[t](n)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N&&w()}),!1),Object.assign(e,{highlight:h,highlightAuto:E,highlightAll:w, +highlightElement:y, +highlightBlock:e=>(H("10.7.0","highlightBlock will be removed entirely in v12.0"), +H("10.7.0","Please use highlightElement now."),y(e)),configure:e=>{d=Y(d,e)}, +initHighlighting:()=>{ +w(),H("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +w(),H("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(t,a)=>{let i=null;try{i=a(e)}catch(e){ +if(K("Language definition for '{}' could not be registered.".replace("{}",t)), +!s)throw e;K(e),i=l} +i.name||(i.name=t),n[t]=i,i.rawDefinition=a.bind(null,e),i.aliases&&O(i.aliases,{ +languageName:t})},unregisterLanguage:e=>{delete n[e] +;for(const n of Object.keys(i))i[n]===e&&delete i[n]}, +listLanguages:()=>Object.keys(n),getLanguage:v,registerAliases:O, +autoDetection:x,inherit:Y,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{ +e["before:highlightBlock"](Object.assign({block:n.el},n)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ +e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),r.push(e)} +}),e.debugMode=()=>{s=!1},e.safeMode=()=>{s=!0 +},e.versionString="11.3.1",e.regex={concat:m,lookahead:g,either:p,optional:b, +anyNumberOfTimes:u};for(const e in T)"object"==typeof T[e]&&t(T[e]) +;return Object.assign(e,T),e})({});const te=e=>({IMPORTANT:{scope:"meta", +begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ +scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/}, +FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/}, +ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}),ae=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ie=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],se=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],oe=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),le=re.concat(se) +;var ce="\\.([0-9](_*[0-9])*)",de="[0-9a-fA-F](_*[0-9a-fA-F])*",ge={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${ce})|\\.)?|(${ce}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${ce})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${ce})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${de})\\.?|(${de})?\\.(${de}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${de})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function ue(e,n,t){return-1===t?"":e.replace(n,(a=>ue(e,n,t-1)))} +const be="[A-Za-z$_][0-9A-Za-z$_]*",me=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],pe=["true","false","null","undefined","NaN","Infinity"],_e=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],he=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fe=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ee=["arguments","this","super","console","window","document","localStorage","module","global"],ye=[].concat(fe,_e,he) +;function Ne(e){const n=e.regex,t=be,a={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const t=e[0].length+e.index,a=e.input[t] +;if("<"===a||","===a)return void n.ignoreMatch();let i +;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1) +;return-1!==e.input.indexOf(t,n)})(e,{after:t +})||n.ignoreMatch()),(i=e.input.substr(t).match(/^\s+extends\s+/))&&0===i.index&&n.ignoreMatch() +}},i={$pattern:be,keyword:me,literal:pe,built_in:ye,"variable.language":Ee +},r="\\.([0-9](_?[0-9])*)",s="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",o={ +className:"number",variants:[{ +begin:`(\\b(${s})((${r})|\\.)?|(${r}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{ +begin:`\\b(${s})\\b((${r})\\b|\\.)?|(${r})\\b`},{ +begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ +begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ +begin:"\\b0[0-7]+n?\\b"}],relevance:0},l={className:"subst",begin:"\\$\\{", +end:"\\}",keywords:i,contains:[]},c={begin:"html`",end:"",starts:{end:"`", +returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"xml"}},d={ +begin:"css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"css"}},g={className:"string", +begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,l]},u={className:"comment", +variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ +begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, +excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)", +endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] +}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE] +},b=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,o];l.contains=b.concat({ +begin:/\{/,end:/\}/,keywords:i,contains:["self"].concat(b)}) +;const m=[].concat(u,l.contains),p=m.concat([{begin:/\(/,end:/\)/,keywords:i, +contains:["self"].concat(m)}]),_={className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:i,contains:p},h={variants:[{ +match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")], +scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ +match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},f={relevance:0, +match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/), +className:"title.class",keywords:{_:[..._e,...he]}},E={variants:[{ +match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], +className:{1:"keyword",3:"title.function"},label:"func.def",contains:[_], +illegal:/%/},y={ +match:n.concat(/\b/,(N=[...fe,"super"],n.concat("(?!",N.join("|"),")")),t,n.lookahead(/\(/)), +className:"title.function",relevance:0};var N;const w={ +begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t, +excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},v={ +match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"}, +contains:[{begin:/\(\)/},_] +},O="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",x={ +match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,n.lookahead(O)],className:{ +1:"keyword",3:"title.function"},contains:[_]};return{name:"Javascript", +aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:p, +CLASS_REFERENCE:f},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang", +binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,u,o,f,{className:"attr", +begin:t+n.lookahead(":"),relevance:0},x,{ +begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[u,e.REGEXP_MODE,{ +className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:i,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:"</>"},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin, +"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{ +begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},E,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t, +className:"title.function"})]},{match:/\.\.\./,relevance:0},w,{match:"\\$"+t, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[_]},y,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},h,v,{match:/\$[(.]/}]}} +const we=e=>m(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(we),Oe=["init","self"].map(we),xe=["Any","Self"],Me=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],ke=["false","nil","true"],Se=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ae=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=p(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=p(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=m(Te,Re,"*"),Ie=p(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Le=p(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Be=m(Ie,Le,"*"),$e=m(/[A-Z]/,Le,"*"),Fe=["autoclosure",m(/convention\(/,p("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",m(/objc\(/,Be,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],ze=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={ +begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]} +;Object.assign(t,{className:"variable",variants:[{ +begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,r,{match:/(\/[a-z._-]+)+/},s,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}, +grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),a="[a-zA-Z_]\\w*::",i="(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 +},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},u=[l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],b={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:g,contains:u.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:u.concat(["self"]),relevance:0}]),relevance:0},m={ +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ +className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ +className:"params",begin:/\(/,end:/\)/,keywords:g,relevance:0, +contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/,keywords:g, +relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C",aliases:["h"],keywords:g, +disableAutodetect:!0,illegal:"</",contains:[].concat(b,m,u,[l,{ +begin:e.IDENT_RE+"::",keywords:g},{className:"class", +beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{ +beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:l, +strings:s,keywords:g}}},grmr_cpp:e=>{const n=e.regex,t=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),a="[a-zA-Z_]\\w*::",i="(?!struct)(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 +},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ +type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], +keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], +literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], +_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"] +},u={className:"function.dispatch",relevance:0,keywords:{ +_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] +}, +begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/)) +},b=[u,l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:g,contains:b.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:b.concat(["self"]),relevance:0}]),relevance:0},p={className:"function", +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{ +begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{ +relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:g, +relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/, +keywords:g,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:g,illegal:"</", +classNameAliases:{"function.dispatch":"built_in"}, +contains:[].concat(m,p,u,b,[l,{ +begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<", +end:">",keywords:g,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:g},{ +match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], +className:{1:"keyword",3:"title.class"}}])}},grmr_csharp:e=>{const n={ +keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], +literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{ +begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/, +keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]}) +;s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE], +o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];const g={variants:[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t] +},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",m={ +begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], +keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, +contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{ +begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}] +}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#", +end:"$",keywords:{ +keyword:"if else elif endif define undef warning error line region endregion pragma checksum" +}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta", +begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{ +className:"string",begin:/"/,end:/"/}]},{ +beginKeywords:"new return throw await else",relevance:0},{className:"function", +begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params", +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, +contains:[g,a,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},m]}},grmr_css:e=>{ +const n=e.regex,t=te(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{ +name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{ +keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"}, +contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+re.join("|")+")"},{begin:":(:)?("+se.join("|")+")"}] +},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oe.join("|")+")\\b"},{ +begin:/:/,end:/[;}{]/, +contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0, +illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{ +begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:ie.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+ae.join("|")+")\\b"}]}},grmr_diff:e=>{ +const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{ +className:"meta",relevance:10, +match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +},{className:"comment",variants:[{ +begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]}},grmr_go:e=>{const n={ +keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], +type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], +literal:["true","false","iota","nil"], +built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] +};return{name:"Go",aliases:["golang"],keywords:n,illegal:"</", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string", +variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{ +className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1 +},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func", +end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params", +begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}},grmr_ini:e=>{ +const n=e.regex,t={className:"number",relevance:0,variants:[{ +begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{ +begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable", +variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={ +className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{ +begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}] +},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0 +},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{ +name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, +contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{ +begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)), +className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},grmr_java:e=>{ +e.regex +;const n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=n+ue("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),a={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"], +literal:["false","true","null"], +type:["char","boolean","long","float","int","byte","short","double"], +built_in:["super","this"]},i={className:"meta",begin:"@"+n,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},r={className:"params",begin:/\(/, +end:/\)/,keywords:a,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:a,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, +className:"string",contains:[e.BACKSLASH_ESCAPE] +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{ +1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword", +3:"title.class"},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{ +begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:a,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:a,relevance:0, +contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ge,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ge,i]}},grmr_javascript:Ne, +grmr_json:e=>({name:"JSON",contains:[{className:"attr", +begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, +className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{ +beginKeywords:"true false null" +},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}), +grmr_kotlin:e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"string"})]}] +},l=ge,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g], +{name:"Kotlin",aliases:["kt","kts"],keywords:n, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0 +},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{className:"class", +beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/, +excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},l]}},grmr_less:e=>{ +const n=te(e),t=le,a="([\\w-]+|@\\{[\\w-]+\\})",i=[],r=[],s=e=>({ +className:"string",begin:"~?"+e+".*?"+e}),o=(e,n,t)=>({className:e,begin:n, +relevance:t}),l={$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:ie.join(" ")},c={begin:"\\(",end:"\\)",contains:r,keywords:l, +relevance:0} +;r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s("'"),s('"'),n.CSS_NUMBER_MODE,{ +begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", +excludeEnd:!0} +},n.HEXCOLOR,c,o("variable","@@?[\\w-]+",10),o("variable","@\\{[\\w-]+\\}"),o("built_in","~?`[^`]*?`"),{ +className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0 +},n.IMPORTANT);const d=r.concat({begin:/\{/,end:/\}/,contains:i}),g={ +beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not" +}].concat(r)},u={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0, +contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+oe.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0, +illegal:"[<=$]",relevance:0,contains:r}}]},b={className:"keyword", +begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", +starts:{end:"[;{}]",keywords:l,returnEnd:!0,contains:r,relevance:0}},m={ +className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{ +begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:d}},p={variants:[{ +begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0, +returnEnd:!0,illegal:"[<='$\"]",relevance:0, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,o("keyword","all\\b"),o("variable","@\\{[\\w-]+\\}"),{ +begin:"\\b("+ae.join("|")+")\\b",className:"selector-tag" +},n.CSS_NUMBER_MODE,o("selector-tag",a,0),o("selector-id","#"+a),o("selector-class","\\."+a,0),o("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{ +className:"selector-pseudo",begin:":("+re.join("|")+")"},{ +className:"selector-pseudo",begin:":(:)?("+se.join("|")+")"},{begin:/\(/, +end:/\)/,relevance:0,contains:d},{begin:"!important"},n.FUNCTION_DISPATCH]},_={ +begin:`[\\w-]+:(:)?(${t.join("|")})`,returnBegin:!0,contains:[p]} +;return i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,m,_,u,p),{ +name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:i}},grmr_lua:e=>{ +const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"] +},i=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",t,{contains:[a], +relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE, +literal:"true false nil", +keyword:"and break do else elseif end for goto if in local not or repeat return then until while", +built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" +},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)", +contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", +begin:"\\(",endsWithParent:!0,contains:i}].concat(i) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:n,end:t,contains:[a],relevance:5}])}},grmr_makefile:e=>{const n={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},t={className:"string", +begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n]},a={className:"variable", +begin:/\$\([\w-]+\s/,end:/\)/,keywords:{ +built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value" +},contains:[n]},i={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={ +className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{ +name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/, +keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath" +},contains:[e.HASH_COMMENT_MODE,n,t,a,i,{className:"meta",begin:/^\.PHONY:/, +end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}},grmr_xml:e=>{ +const n=e.regex,t=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),a={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={ +endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr", +begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{ +className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[a]},{ +begin:/'/,end:/'/,contains:[a]},{begin:/[^\s"'=<>`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/, +relevance:10,contains:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin:/<![a-z]/,end:/>/,contains:[i,r,o,s]}]}]},e.COMMENT(/<!--/,/-->/,{ +relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},a,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{ +className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{ +className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} +},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml", +relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},i={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};a.contains.push(i),i.contains.push(a) +;let r=[n,t] +;return a.contains=a.contains.concat(r),i.contains=i.contains.concat(r), +r=r.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:r}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:r, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_objectivec:e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n, +keyword:["@interface","@class","@protocol","@implementation"]};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], +keywords:{$pattern:n, +keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], +literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], +built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"] +},illegal:"</",contains:[{className:"built_in", +begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{ +className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/, +keywords:{ +keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{ +className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", +begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t, +contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, +relevance:0}]}},grmr_perl:e=>{const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={ +$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/, +end:/\}/},s={variants:[{begin:/\$\d/},{ +begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},o=[e.BACKSLASH_ESCAPE,i,s],l=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],c=(e,a,i="\\1")=>{ +const r="\\1"===i?i:n.concat(i,a) +;return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t) +},d=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),g=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),r,{className:"string",contains:o,variants:[{ +begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", +end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ +begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", +relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", +begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", +relevance:0},{ +begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", +keywords:"split return print reverse grep",relevance:0, +contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ +begin:c("s|tr|y",n.either(...l,{capture:!0}))},{begin:c("s|tr|y","\\(","\\)")},{ +begin:c("s|tr|y","\\[","\\]")},{begin:c("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...l,{capture:!0 +}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", +end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ +begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", +subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] +}];return i.contains=g,r.contains=g,{name:"Perl",aliases:["pl","pm"],keywords:a, +contains:g}},grmr_php:e=>{const n={className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},i=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),s=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(i,{begin:"b'",end:"'" +}),e.inherit(r,{begin:'b"',end:'"'}),r,i,s]},l={className:"number",variants:[{ +begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{ +begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{ +begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?" +}],relevance:0},c={ +keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield", +literal:"false null true", +built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass" +};return{case_insensitive:!0,keywords:c, +contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t] +}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}] +}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0, +keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},n,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{ +begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0,keywords:c, +contains:["self",n,e.C_BLOCK_COMMENT_MODE,o,l]}]},{className:"class",variants:[{ +beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait", +illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, +contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";", +contains:[e.UNDERSCORE_TITLE_MODE]},o,l]}},grmr_php_template:e=>({ +name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/, +subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"', +end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{ +illegal:null,className:null,contains:null,skip:!0 +}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null, +skip:!0})]}]}),grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"], +disableAutodetect:!0}),grmr_python:e=>{ +const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a={ +$pattern:/[A-Za-z]\w+|__\w+__/, +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], +type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] +},i={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:a,illegal:/#/},s={begin:/\{\{/,relevance:0},o={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,s,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},l="[0-9](_?[0-9])*",c=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${l})|(${c}))[eE][+-]?(${l})[jJ]?\\b`},{begin:`(${c})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${l})[jJ]\\b`}]},g={ +className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:a,contains:[{ +begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},u={ +className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a, +contains:["self",i,d,o,e.HASH_COMMENT_MODE]}]};return r.contains=[o,d,i],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a, +illegal:/(<\/|->|\?)|=>/,contains:[i,d,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},o,g,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,t],scope:{1:"keyword", +3:"title.function"},contains:[u]},{variants:[{ +match:[/class/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/class/,/\s+/,t]}], +scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[d,u,o]}]}}, +grmr_python_repl:e=>({aliases:["pycon"],contains:[{className:"meta",starts:{ +end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{ +begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}),grmr_r:e=>{ +const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) +;return{name:"R",keywords:{$pattern:t, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/, +starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)), +endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{ +scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0 +}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}] +}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{ +1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"}, +match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{ +2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"}, +match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{ +match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`", +contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{ +const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a={ +keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__", +built_in:"proc lambda",literal:"true false nil"},i={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},s=[e.COMMENT("#","$",{contains:[i] +}),e.COMMENT("^=begin","^=end",{contains:[i],relevance:10 +}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:/#\{/,end:/\}/, +keywords:a},l={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), +contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[e.BACKSLASH_ESCAPE,o]})]}]},c="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${c}))?([eE][+-]?(${c})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},g={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:a},u=[l,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(s)},{ +className:"function",begin:n.concat(/def\s+/,n.lookahead(t+"\\s*(\\(|;|$)")), +relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t +}),g].concat(s)},{begin:e.IDENT_RE+"::"},{className:"symbol", +begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[l,{begin:t}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:a},{ +begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{ +begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(", +end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}] +}].concat(r,s),relevance:0}].concat(r,s);o.contains=u,g.contains=u;const b=[{ +begin:/^\s*=>/,starts:{end:"$",contains:u}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:u}}];return s.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/, +contains:[e.SHEBANG({binary:"ruby"})].concat(b).concat(s).concat(u)}}, +grmr_rust:e=>{const n=e.regex,t={className:"title.function.invoke",relevance:0, +begin:n.concat(/\b/,/(?!let\b)/,e.IDENT_RE,n.lookahead(/\s*\(/)) +},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bin!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"] +;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?", +type:["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"], +keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], +literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:"</", +contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"] +}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{ +className:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{ +begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol", +begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{ +begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{ +begin:"\\b0x([A-Fa-f0-9_]+)"+a},{ +begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{ +begin:[/fn/,/\s+/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword", +3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{ +className:"string",begin:/"/,end:/"/}]},{ +begin:[/let/,/\s+/,/(?:mut\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword", +3:"keyword",4:"variable"}},{ +begin:[/for/,/\s+/,e.UNDERSCORE_IDENT_RE,/\s+/,/in/],className:{1:"keyword", +3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE], +className:{1:"keyword",3:"title.class"}},{ +begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,e.UNDERSCORE_IDENT_RE], +className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{ +keyword:"Self",built_in:i}},{className:"punctuation",begin:"->"},t]}}, +grmr_scss:e=>{const n=te(e),t=se,a=re,i="@[a-z-]+",r={className:"variable", +begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"};return{name:"SCSS",case_insensitive:!0, +illegal:"[=/|']", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{ +className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0 +},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag", +begin:"\\b("+ae.join("|")+")\\b",relevance:0},{className:"selector-pseudo", +begin:":("+a.join("|")+")"},{className:"selector-pseudo", +begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/, +contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+oe.join("|")+")\\b"},{ +begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" +},{begin:/:/,end:/[;}{]/, +contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT] +},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{ +begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, +keyword:"and or not only",attribute:ie.join(" ")},contains:[{begin:i, +className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" +},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE] +},n.FUNCTION_DISPATCH]}},grmr_shell:e=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]}),grmr_sql:e=>{ +const n=e.regex,t=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],r=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=r,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!r.includes(e))),c={ +begin:n.concat(/\b/,n.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} +;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ +$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:n,when:t}={})=>{const a=t +;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:n.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, +keyword:l.concat(s),literal:a,type:i}},{className:"type", +begin:n.either("double precision","large object","with timezone","without timezone") +},c,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}, +grmr_swift:e=>{const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{ +contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,p(...ve,...Oe)], +className:{2:"keyword"}},r={match:m(/\./,p(...Me)),relevance:0 +},s=Me.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{ +className:"keyword", +match:p(...Me.filter((e=>"string"!=typeof e)).concat(xe).map(we),...Oe)}]},l={ +$pattern:p(/\b\w+/,/#\w+/),keyword:s.concat(Ae),literal:ke},c=[i,r,o],d=[{ +match:m(/\./,p(...Ce)),relevance:0},{className:"built_in", +match:m(/\b/,p(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},b=[u,{ +className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}] +}],_="([0-9a-fA-F]_*)+",h={className:"number",relevance:0,variants:[{ +match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +match:`\\b0x(${_})(\\.(${_}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({ +className:"subst",variants:[{match:m(/\\/,e,/[0\\tnr"']/)},{ +match:m(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),E=(e="")=>({className:"subst", +match:m(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),y=(e="")=>({className:"subst", +label:"interpol",begin:m(/\\/,e,/\(/),end:/\)/}),N=(e="")=>({begin:m(e,/"""/), +end:m(/"""/,e),contains:[f(e),E(e),y(e)]}),w=(e="")=>({begin:m(e,/"/), +end:m(/"/,e),contains:[f(e),y(e)]}),v={className:"string", +variants:[N(),N("#"),N("##"),N("###"),w(),w("#"),w("##"),w("###")]},O={ +match:m(/`/,Be,/`/)},x=[O,{className:"variable",match:/\$\d+/},{ +className:"variable",match:`\\$${Le}+`}],M=[{match:/(@|#)available/, +className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ze, +contains:[...b,h,v]}]}},{className:"keyword",match:m(/@/,p(...Fe))},{ +className:"meta",match:m(/@/,Be)}],k={match:g(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +match:m(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Le,"+") +},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:m(/\s+&\s+/,g($e)),relevance:0}]},S={ +begin:/</,end:/>/,keywords:l,contains:[...a,...c,...M,u,k]};k.contains.push(S) +;const A={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{ +match:m(Be,/\s*:/),keywords:"_|0",relevance:0 +},...a,...c,...d,...b,h,v,...x,...M,k]},C={begin:/</,end:/>/,contains:[...a,k] +},T={begin:/\(/,end:/\)/,keywords:l,contains:[{ +begin:p(g(m(Be,/\s*:/)),g(m(Be,/\s+/,Be,/\s*:/))),end:/:/,relevance:0, +contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Be}] +},...a,...c,...b,h,v,...M,k,A],endsParent:!0,illegal:/["']/},R={ +match:[/func/,/\s+/,p(O.match,Be,De)],className:{1:"keyword",3:"title.function" +},contains:[C,T,n],illegal:[/\[/,/%/]},D={ +match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, +contains:[C,T,n],illegal:/\[|%/},I={match:[/operator/,/\s+/,De],className:{ +1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{ +1:"keyword",3:"title"},contains:[k],keywords:[...Se,...ke],end:/}/} +;for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label)) +;n.keywords=l;const t=[...c,...d,...b,h,v,...x];n.contains=[...t,{begin:/\(/, +end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l, +contains:[...a,R,D,{beginKeywords:"struct protocol class extension enum actor", +end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c] +},I,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0 +},...c,...d,...b,h,v,...x,...M,k,A]}},grmr_typescript:e=>{ +const n=Ne(e),t=["any","void","number","boolean","string","object","never","enum"],a={ +beginKeywords:"namespace",end:/\{/,excludeEnd:!0, +contains:[n.exports.CLASS_REFERENCE]},i={beginKeywords:"interface",end:/\{/, +excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t}, +contains:[n.exports.CLASS_REFERENCE]},r={$pattern:be, +keyword:me.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]), +literal:pe,built_in:ye.concat(t),"variable.language":Ee},s={className:"meta", +begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},o=(e,n,t)=>{ +const a=e.contains.findIndex((e=>e.label===n)) +;if(-1===a)throw Error("can not find mode to replace");e.contains.splice(a,1,t)} +;return Object.assign(n.keywords,r), +n.exports.PARAMS_CONTAINS.push(s),n.contains=n.contains.concat([s,a,i]), +o(n,"shebang",e.SHEBANG()),o(n,"use_strict",{className:"meta",relevance:10, +begin:/^\s*['"]use strict['"]/ +}),n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{ +name:"TypeScript",aliases:["ts","tsx"]}),n},grmr_vbnet:e=>{ +const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={ +className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ +begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{ +begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}] +},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}] +}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]}) +;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0, +classNameAliases:{label:"symbol"},keywords:{ +keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", +built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", +type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", +literal:"true false nothing"}, +illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{ +className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/, +end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0, +variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ +},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{ +begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{ +className:"label",begin:/^\w+:/},o,l,{className:"meta", +begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, +end:/$/,keywords:{ +keyword:"const disable else elseif enable end externalsource if region then"}, +contains:[l]}]}},grmr_yaml:e=>{ +const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},s={begin:/\{/, +end:/\}/,contains:[r],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]", +contains:[r],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{ +begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ +begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type", +begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},s,o,a],c=[...l] +;return c.pop(),c.push(i),r.contains=c,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:l}}});const je=ne;for(const e of Object.keys(Ue)){ +const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])} +return je}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js new file mode 100644 index 0000000..f011d8b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js @@ -0,0 +1,24 @@ +/*! `1c` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>{ +var x="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]+",n="\u0434\u0430\u043b\u0435\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0435\u0441\u043b\u0438 \u0438 \u0438\u0437 \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0438\u043d\u0430\u0447\u0435\u0435\u0441\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0435\u0446\u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0435\u0446\u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a\u043e\u043d\u0435\u0446\u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u043c \u043f\u043e \u043f\u043e\u043a\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0442\u043e\u0433\u0434\u0430 \u0446\u0438\u043a\u043b \u044d\u043a\u0441\u043f\u043e\u0440\u0442 ",e="null \u0438\u0441\u0442\u0438\u043d\u0430 \u043b\u043e\u0436\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e",o=s.inherit(s.NUMBER_MODE),t={ +className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},a={ +begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number", +begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},m=s.inherit(s.C_LINE_COMMENT_MODE) +;return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:x,keyword:n, +built_in:"\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0440\u043e\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 ansitooem oemtoansi \u0432\u0432\u0435\u0441\u0442\u0438\u0432\u0438\u0434\u0441\u0443\u0431\u043a\u043e\u043d\u0442\u043e \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u0434\u0430\u0442\u0430\u0433\u043e\u0434 \u0434\u0430\u0442\u0430\u043c\u0435\u0441\u044f\u0446 \u0434\u0430\u0442\u0430\u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438\u0431 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434\u0441\u0438\u043c\u0432 \u043a\u043e\u043d\u0433\u043e\u0434\u0430 \u043a\u043e\u043d\u0435\u0446\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043a\u043e\u043d\u0435\u0446\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043a\u043e\u043d\u0435\u0446\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043a\u043e\u043d\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043a\u043e\u043d\u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u043e\u043d\u043d\u0435\u0434\u0435\u043b\u0438 \u043b\u043e\u0433 \u043b\u043e\u043310 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u0441\u0443\u0431\u043a\u043e\u043d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043d\u0430\u0431\u043e\u0440\u0430\u043f\u0440\u0430\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c\u0432\u0438\u0434 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c\u0441\u0447\u0435\u0442 \u043d\u0430\u0439\u0442\u0438\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043d\u0430\u0447\u0433\u043e\u0434\u0430 \u043d\u0430\u0447\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043d\u0430\u0447\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0447\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u0434\u043d\u044f\u0433\u043e\u0434\u0430 \u043d\u043e\u043c\u0435\u0440\u0434\u043d\u044f\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u043d\u0435\u0434\u0435\u043b\u0438\u0433\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u044f\u0437\u044b\u043a \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u043e\u043a\u043d\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0441\u0442\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u0430\u0442\u0443\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0443\u0441\u0442\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0442\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044c \u043f\u0443\u0441\u0442\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043d\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043f\u043e \u0441\u0438\u043c\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0441\u0442\u0440\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u0441\u0442\u0440\u043e\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0435\u0442\u043f\u043e\u043a\u043e\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0435\u0432\u0440\u0435\u043c\u044f \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0441\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0442\u0430\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0442\u0430\u043f\u043e \u0444\u0438\u043a\u0441\u0448\u0430\u0431\u043b\u043e\u043d \u0448\u0430\u0431\u043b\u043e\u043d acos asin atan base64\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 base64\u0441\u0442\u0440\u043e\u043a\u0430 cos exp log log10 pow sin sqrt tan xml\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 xml\u0441\u0442\u0440\u043e\u043a\u0430 xml\u0442\u0438\u043f xml\u0442\u0438\u043f\u0437\u043d\u0447 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435\u043e\u043a\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u043b\u0435\u0432\u043e \u0432\u0432\u0435\u0441\u0442\u0438\u0434\u0430\u0442\u0443 \u0432\u0432\u0435\u0441\u0442\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0441\u0442\u0438\u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u0435\u0441\u0442\u0438\u0447\u0438\u0441\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u0447\u0442\u0435\u043d\u0438\u044fxml \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u0433 \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u043f\u0440\u0430\u0432\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0433\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b\u0432\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0430 \u0434\u0435\u043d\u044c \u0434\u0435\u043d\u044c\u0433\u043e\u0434\u0430 \u0434\u0435\u043d\u044c\u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u043c\u0435\u0441\u044f\u0446 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0434\u043b\u044f\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0437\u0430\u043a\u0440\u044b\u0442\u044c\u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044cjson \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044cxml \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u0434\u0430\u0442\u0443json \u0437\u0430\u043f\u0438\u0441\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0441\u0442\u0440\u043e\u043a\u0443\u0432\u043d\u0443\u0442\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0444\u0430\u0439\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0441\u0442\u0440\u043e\u043a\u0438\u0432\u043d\u0443\u0442\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u0438\u0437xml\u0442\u0438\u043f\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u043c\u043e\u0434\u0435\u043b\u0438xdto \u0438\u043c\u044f\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u043c\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043e\u0431\u043e\u0448\u0438\u0431\u043a\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0434\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0435\u0446\u0433\u043e\u0434\u0430 \u043a\u043e\u043d\u0435\u0446\u0434\u043d\u044f \u043a\u043e\u043d\u0435\u0446\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043a\u043e\u043d\u0435\u0446\u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u043e\u043d\u0435\u0446\u043c\u0438\u043d\u0443\u0442\u044b \u043a\u043e\u043d\u0435\u0446\u043d\u0435\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0435\u0446\u0447\u0430\u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0444\u0430\u0439\u043b \u043a\u0440\u0430\u0442\u043a\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043b\u0435\u0432 \u043c\u0430\u043a\u0441 \u043c\u0435\u0441\u0442\u043d\u043e\u0435\u0432\u0440\u0435\u043c\u044f \u043c\u0435\u0441\u044f\u0446 \u043c\u0438\u043d \u043c\u0438\u043d\u0443\u0442\u0430 \u043c\u043e\u043d\u043e\u043f\u043e\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0439\u0442\u0438\u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u044bxml \u043d\u0430\u0439\u0442\u0438\u043e\u043a\u043d\u043e\u043f\u043e\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0430\u0439\u0442\u0438\u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435\u043d\u0430\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0439\u0442\u0438\u043f\u043e\u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430\u0439\u0442\u0438\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u0433\u043e\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u0434\u043d\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0447\u0430\u0441\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0437\u0430\u043f\u0440\u043e\u0441\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u0437\u0430\u043f\u0443\u0441\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0438\u0441\u043a\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0435\u0434\u0435\u043b\u044f\u0433\u043e\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0441\u0435\u0430\u043d\u0441\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043d\u043e\u043c\u0435\u0440\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043d\u0440\u0435\u0433 \u043d\u0441\u0442\u0440 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043e\u043a\u0440 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c\u043e\u0431\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0438\u043d\u0434\u0435\u043a\u0441\u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0444\u043e\u0440\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0444\u043e\u0440\u043c\u0443\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438\u043f\u043e\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0441\u0441\u044b\u043b\u043a\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0434\u0430\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\u043e\u0431\u043e\u0448\u0438\u0431\u043a\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043d\u0430\u043a\u0430\u0440\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044ccom\u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044cxml\u0442\u0438\u043f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0430\u0434\u0440\u0435\u0441\u043f\u043e\u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043f\u044f\u0449\u0435\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f\u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u043a\u043e\u0434\u044b\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0447\u0430\u0441\u043e\u0432\u044b\u0435\u043f\u043e\u044f\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0437\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043c\u044f\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043c\u044f\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\u044d\u043a\u0440\u0430\u043d\u043e\u0432\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043a\u0440\u0430\u0442\u043a\u0438\u0439\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u043a\u0435\u0442\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e\u0434\u043b\u0438\u043d\u0443\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e\u0441\u0441\u044b\u043b\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e\u0441\u0441\u044b\u043b\u043a\u0443\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u0449\u0438\u0439\u043c\u0430\u043a\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u0449\u0443\u044e\u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u043a\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e\u043e\u0442\u043c\u0435\u0442\u043a\u0443\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e\u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u043e\u043f\u0446\u0438\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445\u0441\u0441\u044b\u043b\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0435\u0430\u043d\u0441\u044b\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430odata \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0441\u0435\u0430\u043d\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e\u043e\u043f\u0446\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e\u043e\u043f\u0446\u0438\u044e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438\u043e\u0441 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0432\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0430\u0432 \u043f\u0440\u0430\u0432\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043a\u043e\u0434\u0430\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u044f\u0441\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044cjson \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044cxml \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u0434\u0430\u0442\u0443json \u043f\u0443\u0441\u0442\u0430\u044f\u0441\u0442\u0440\u043e\u043a\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0434\u043b\u044f\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0441\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u043e\u043b\u044c\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043b\u0435\u0442\u043d\u0435\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0431\u0443\u0444\u0435\u0440\u044b\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u0444\u0430\u0431\u0440\u0438\u043a\u0443xdto \u0441\u043e\u043a\u0440\u043b \u0441\u043e\u043a\u0440\u043b\u043f \u0441\u043e\u043a\u0440\u043f \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0440\u0435\u0434 \u0441\u0442\u0440\u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u043d\u0430 \u0441\u0442\u0440\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f\u0441 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0441\u0442\u0440\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0442\u0440\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0447\u0438\u0441\u043b\u043e\u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0447\u0438\u0441\u043b\u043e\u0441\u0442\u0440\u043e\u043a \u0441\u0442\u0440\u0448\u0430\u0431\u043b\u043e\u043d \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0434\u0430\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0434\u0430\u0442\u0430\u0441\u0435\u0430\u043d\u0441\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f\u0434\u0430\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f\u0434\u0430\u0442\u0430\u0432\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u0448\u0440\u0438\u0444\u0442\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u043a\u043e\u0434\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u044f\u0437\u044b\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u044f\u0437\u044b\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f \u0442\u0438\u043f\u0437\u043d\u0447 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0442\u0440\u0435\u0433 \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0438\u0437\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435\u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043f\u044f\u0449\u0435\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f\u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043a\u0440\u0430\u0442\u043a\u0438\u0439\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e\u0434\u043b\u0438\u043d\u0443\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043c\u043e\u043d\u043e\u043f\u043e\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e\u0440\u0435\u0436\u0438\u043c\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u043e\u043f\u0446\u0438\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0441\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0438\u0444\u043e\u0440\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430odata \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0441\u0435\u0430\u043d\u0441\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0446\u0435\u043b \u0447\u0430\u0441 \u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441 \u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0441\u0435\u0430\u043d\u0441\u0430 \u0447\u0438\u0441\u043b\u043e \u0447\u0438\u0441\u043b\u043e\u043f\u0440\u043e\u043f\u0438\u0441\u044c\u044e \u044d\u0442\u043e\u0430\u0434\u0440\u0435\u0441\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 ws\u0441\u0441\u044b\u043b\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0430\u043a\u0435\u0442\u043e\u0432\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0441\u0442\u0438\u043b\u0435\u0439 \u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u043e\u0442\u0447\u0435\u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435\u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u0439\u0441\u0442\u0438\u043b\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u044b\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043e\u0431\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0439\u0434\u0430\u0442\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438\u043e\u0442\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e\u0442\u0447\u0435\u0442\u044b \u043f\u0430\u043d\u0435\u043b\u044c\u0437\u0430\u0434\u0430\u0447\u043e\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u044b\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u043b\u0430\u043d\u044b\u0432\u0438\u0434\u043e\u0432\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043f\u043b\u0430\u043d\u044b\u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043b\u0430\u043d\u044b\u0441\u0447\u0435\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445\u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0440\u0430\u0431\u043e\u0447\u0430\u044f\u0434\u0430\u0442\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u044b\u0435\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440xdto \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0433\u0435\u043e\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043f\u043e\u0447\u0442\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0444\u0430\u0431\u0440\u0438\u043a\u0430xdto \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435\u043f\u043e\u0442\u043e\u043a\u0438 \u0444\u043e\u043d\u043e\u0432\u044b\u0435\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432\u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043e\u0431\u0449\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445\u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a ", +class:"web\u0446\u0432\u0435\u0442\u0430 windows\u0446\u0432\u0435\u0442\u0430 windows\u0448\u0440\u0438\u0444\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0440\u0430\u043c\u043a\u0438\u0441\u0442\u0438\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0446\u0432\u0435\u0442\u0430\u0441\u0442\u0438\u043b\u044f \u0448\u0440\u0438\u0444\u0442\u044b\u0441\u0442\u0438\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c\u044b\u0432\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f\u0432\u0444\u043e\u0440\u043c\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\u0437\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u0441\u0435\u0440\u0438\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0438\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0432\u044b\u0441\u043e\u0442\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430\u0444\u043e\u0440\u043c\u044b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u0438\u0434\u0433\u0440\u0443\u043f\u043f\u044b\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u043a\u043d\u043e\u043f\u043a\u0438\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0432\u0438\u0434\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0432\u0438\u0434\u043f\u043e\u043b\u044f\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0444\u043b\u0430\u0436\u043a\u0430 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043d\u0430\u043f\u0443\u0437\u044b\u0440\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0444\u043e\u0440\u043c\u044b \u0433\u0440\u0443\u043f\u043f\u044b\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043c\u0435\u0436\u0434\u0443\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438\u0444\u043e\u0440\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u043b\u043e\u0441\u044b\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0442\u043e\u0447\u043a\u0438\u0431\u0438\u0440\u0436\u0435\u0432\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0432\u044b\u0431\u043e\u0440\u0430\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043e\u0441\u0438\u0442\u043e\u0447\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043f\u0443\u0437\u044b\u0440\u044c\u043a\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u044b\u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0441\u0435\u0440\u0438\u0439 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c\u0435\u0442\u043e\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c\u0435\u0442\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u043b\u0435\u0433\u0435\u043d\u0434\u0435\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u043a\u043d\u043e\u043f\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043d\u043e\u043f\u043a\u0438\u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043f\u0443\u0437\u044b\u0440\u044c\u043a\u043e\u0432\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0430\u043d\u0435\u043b\u0438\u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u043f\u0440\u0438\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438\u043f\u043e\u043b\u043e\u0441\u044b\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0444\u0438\u0433\u0443\u0440\u044b\u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u0430\u043b\u0438\u0442\u0440\u0430\u0446\u0432\u0435\u0442\u043e\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0438\u0441\u043a\u0432\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\u043a\u043d\u043e\u043f\u043a\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439\u043f\u0430\u043d\u0435\u043b\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439\u043f\u0430\u043d\u0435\u043b\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043e\u043f\u043e\u0440\u043d\u043e\u0439\u0442\u043e\u0447\u043a\u0438\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u0448\u043a\u0430\u043b\u044b\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u0442\u0440\u043e\u043a\u0438\u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u043b\u0438\u043d\u0438\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u043a\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439\u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u0441\u0435\u0440\u0438\u0439\u0432\u043b\u0435\u0433\u0435\u043d\u0434\u0435\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0432\u0432\u043e\u0434\u0430\u0441\u0442\u0440\u043e\u043a\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0431\u043e\u0440\u0430\u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u0442\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0441\u0442\u0440\u043e\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u043f\u0435\u0447\u0430\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0435\u0436\u0438\u043c\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u043e\u043a\u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u043e\u043a\u043d\u0430\u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0441\u0435\u0440\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438\u0441\u0435\u0442\u043a\u0438\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u0436\u0438\u043c\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0441\u043f\u0438\u0441\u043a\u0430\u0437\u0430\u0434\u0430\u0447 \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0435\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c\u044b\u0432\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u0433\u0440\u0443\u043f\u043f\u0430\u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0438\u043b\u044c\u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0442\u0438\u043f\u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438\u043b\u0438\u043d\u0438\u0438\u0442\u0440\u0435\u043d\u0434\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0435\u0434\u0438\u043d\u0438\u0446\u044b\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0438\u043f\u0438\u043c\u043f\u043e\u0440\u0442\u0430\u0441\u0435\u0440\u0438\u0439\u0441\u043b\u043e\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u043c\u0430\u0440\u043a\u0435\u0440\u0430\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043c\u0430\u0440\u043a\u0435\u0440\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0441\u0435\u0440\u0438\u0438\u0441\u043b\u043e\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0448\u043a\u0430\u043b\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u0435\u0433\u0435\u043d\u0434\u044b\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043f\u043e\u0438\u0441\u043a\u0430\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0440\u0430\u043c\u043a\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u0432\u044f\u0437\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043f\u043e\u0441\u0435\u0440\u0438\u044f\u043c\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u043b\u0438\u043d\u0438\u0438 \u0442\u0438\u043f\u0441\u0442\u043e\u0440\u043e\u043d\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u0444\u043e\u0440\u043c\u044b\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0448\u043a\u0430\u043b\u044b\u0440\u0430\u0434\u0430\u0440\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0444\u0430\u043a\u0442\u043e\u0440\u043b\u0438\u043d\u0438\u0438\u0442\u0440\u0435\u043d\u0434\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0444\u0438\u0433\u0443\u0440\u0430\u043a\u043d\u043e\u043f\u043a\u0438 \u0444\u0438\u0433\u0443\u0440\u044b\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f\u0432\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0434\u043d\u044f\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0448\u0438\u0440\u0438\u043d\u0430\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u0432\u0438\u0434\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0432\u0438\u0434\u0441\u0447\u0435\u0442\u0430 \u0432\u0438\u0434\u0442\u043e\u0447\u043a\u0438\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0435\u0436\u0438\u043c\u0430\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u0440\u0435\u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0438\u0441\u0438\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439\u043d\u043e\u043c\u0435\u0440\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u043a\u043e\u043b\u043e\u043d\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u0441\u0442\u0440\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0447\u0442\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439\u043f\u0435\u0447\u0430\u0442\u0438 \u0442\u0438\u043f\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043a\u0443\u0440\u0441\u043e\u0440\u043e\u0432\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u044f\u0447\u0435\u0439\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043b\u0438\u043d\u0438\u0439\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0443\u0437\u043e\u0440\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0444\u0430\u0439\u043b\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u043f\u0435\u0447\u0430\u0442\u0438 \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0442\u0438\u043f\u0444\u0430\u0439\u043b\u0430\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0431\u0445\u043e\u0434\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0437\u0430\u043f\u0438\u0441\u0438\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0438\u0434\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0438\u0442\u043e\u0433\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043a\u0444\u0430\u0439\u043b\u0443 \u0440\u0435\u0436\u0438\u043c\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0432\u044b\u0431\u043e\u0440\u0430\u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0444\u0430\u0439\u043b\u0430 \u0442\u0438\u043f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0438\u0434\u0434\u0430\u043d\u043d\u044b\u0445\u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u0435\u0442\u043e\u0434\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u0435\u0434\u0438\u043d\u0438\u0446\u044b\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u0430\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u0434\u0435\u0440\u0435\u0432\u043e\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0430\u044f\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u043c\u043e\u0434\u0435\u043b\u0438\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0442\u0438\u043f\u043c\u0435\u0440\u044b\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u044f\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u043f\u043e\u043b\u044f\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f\u0434\u0435\u0440\u0435\u0432\u0430\u0440\u0435\u0448\u0435\u043d\u0438\u0439 ws\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442xpathxs \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0437\u0430\u043f\u0438\u0441\u0438\u0434\u0430\u0442\u044bjson \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0432\u0438\u0434\u0433\u0440\u0443\u043f\u043f\u044b\u043c\u043e\u0434\u0435\u043b\u0438xs \u0432\u0438\u0434\u0444\u0430\u0441\u0435\u0442\u0430xdto \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044fdom \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u0441\u0445\u0435\u043c\u044bxs \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0435\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0438\u043c\u0435\u043dxs \u043c\u0435\u0442\u043e\u0434\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044fxs \u043c\u043e\u0434\u0435\u043b\u044c\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043exs \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0442\u0438\u043f\u0430xml \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0445\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432xs \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043exs \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u043e\u0442\u0431\u043e\u0440\u0430\u0443\u0437\u043b\u043e\u0432dom \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0441\u0442\u0440\u043e\u043ajson \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0432\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435dom \u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u044bxml \u0442\u0438\u043f\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xml \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fjson \u0442\u0438\u043f\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043exml \u0442\u0438\u043f\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044bxs \u0442\u0438\u043f\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438xml \u0442\u0438\u043f\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430domxpath \u0442\u0438\u043f\u0443\u0437\u043b\u0430dom \u0442\u0438\u043f\u0443\u0437\u043b\u0430xml \u0444\u043e\u0440\u043c\u0430xml \u0444\u043e\u0440\u043c\u0430\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044fxs \u0444\u043e\u0440\u043c\u0430\u0442\u0434\u0430\u0442\u044bjson \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432json \u0432\u0438\u0434\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u0435\u0439\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0441\u043a\u043e\u0433\u043e\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0432\u044b\u0432\u043e\u0434\u0430\u0442\u0435\u043a\u0441\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0433\u0440\u0443\u043f\u043f\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u043e\u0442\u0431\u043e\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043f\u043e\u043b\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0441\u0432\u044f\u0437\u0438\u043d\u0430\u0431\u043e\u0440\u043e\u0432\u0434\u0430\u043d\u043d\u044b\u0445\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043b\u0435\u0433\u0435\u043d\u0434\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0442\u0435\u043a\u0441\u0442\u0430\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043d\u0435ascii\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0442\u0435\u043a\u0441\u0442\u0430\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0440\u0430\u0437\u0431\u043e\u0440\u0430\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\u0437\u0430\u043f\u0438\u0441\u0438\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\u0437\u0430\u043f\u0438\u0441\u0438\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0442\u0438\u043f\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u0438\u043c\u0435\u043d\u0444\u0430\u0439\u043b\u043e\u0432\u0432zip\u0444\u0430\u0439\u043b\u0435 \u043c\u0435\u0442\u043e\u0434\u0441\u0436\u0430\u0442\u0438\u044fzip \u043c\u0435\u0442\u043e\u0434\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044fzip \u0440\u0435\u0436\u0438\u043c\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0443\u0442\u0435\u0439\u0444\u0430\u0439\u043b\u043e\u0432zip \u0440\u0435\u0436\u0438\u043c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432zip \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u043f\u0443\u0442\u0435\u0439zip \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0441\u0436\u0430\u0442\u0438\u044fzip \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0435\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043a\u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0432\u043f\u043e\u0442\u043e\u043a\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u0431\u0430\u0439\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445\u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044fftp \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043e\u0440\u044f\u0434\u043a\u0430\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439\u0442\u043e\u0447\u043a\u0438\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 http\u043c\u0435\u0442\u043e\u0434 \u0430\u0432\u0442\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0430\u0432\u0442\u043e\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u043e\u043c\u0435\u0440\u0430\u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u043a\u0430 \u0432\u0438\u0434\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432\u0438\u0434\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044c\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439\u043f\u0440\u0438\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0431\u0430\u0437\u044b\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e\u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0430\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043b\u0430\u043d\u0430\u043e\u0431\u043c\u0435\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u0447\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0433\u0440\u0430\u043d\u0438\u0446\u044b\u043f\u0440\u0438\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u043d\u043e\u043c\u0435\u0440\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u043d\u043e\u043c\u0435\u0440\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u043f\u043e\u0438\u0441\u043a\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0438\u0441\u0438\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445\u0432\u044b\u0437\u043e\u0432\u043e\u0432\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b\u0438\u0432\u043d\u0435\u0448\u043d\u0438\u0445\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u044b\u0431\u043e\u0440\u0430\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0440\u0435\u0436\u0438\u043c\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u043f\u043b\u0430\u043d\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043f\u043e\u0438\u0441\u043a\u0430\u0441\u0442\u0440\u043e\u043a\u0438\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u0434\u0430\u043d\u043d\u044b\u0445\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043a\u043e\u0434\u0430\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u043a\u043e\u0434\u0430\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0438\u043f\u0444\u043e\u0440\u043c\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0444\u043e\u0440\u043c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u0448\u0440\u0438\u0444\u0442\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439\u0434\u0430\u0442\u044b\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0438\u0434\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0438\u0434\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u0438\u0434\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0438\u0434\u0440\u0430\u043c\u043a\u0438 \u0432\u0438\u0434\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0446\u0432\u0435\u0442\u0430 \u0432\u0438\u0434\u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0448\u0440\u0438\u0444\u0442\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f\u0434\u043b\u0438\u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439\u0437\u043d\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435byteordermark \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043a\u043e\u0434\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430\u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430xbase \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0438\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0430\u043d\u0435\u043b\u0438\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0432\u043e\u043f\u0440\u043e\u0441 \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0444\u043e\u0440\u043c\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u044b\u0431\u043e\u0440\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430windows \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0442\u0438\u043f\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0442\u0438\u043f\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043a\u043b\u0430\u0432\u0438\u0448\u0438enter \u0442\u0438\u043f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u043e\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0445\u0435\u0448\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u0438\u0434\u0430\u0442\u044b", +type:"com\u043e\u0431\u044a\u0435\u043a\u0442 ftp\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 http\u0437\u0430\u043f\u0440\u043e\u0441 http\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0442\u0432\u0435\u0442 http\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 ws\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f ws\u043f\u0440\u043e\u043a\u0441\u0438 xbase \u0430\u043d\u0430\u043b\u0438\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044fxs \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435xs \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445\u0447\u0438\u0441\u0435\u043b \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f\u0441\u0445\u0435\u043c\u0430 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f\u0441\u0445\u0435\u043c\u0430 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u043e\u0434\u0435\u043b\u0438xs \u0434\u0430\u043d\u043d\u044b\u0435\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u0433\u0430\u043d\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0444\u0430\u0439\u043b\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0446\u0432\u0435\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0448\u0440\u0438\u0444\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442dom \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442html \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044fxs \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u044cdom \u0437\u0430\u043f\u0438\u0441\u044cfastinfoset \u0437\u0430\u043f\u0438\u0441\u044chtml \u0437\u0430\u043f\u0438\u0441\u044cjson \u0437\u0430\u043f\u0438\u0441\u044cxml \u0437\u0430\u043f\u0438\u0441\u044czip\u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044c\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044c\u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c\u0443\u0437\u043b\u043e\u0432dom \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0435\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435openssl \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u0435\u0439\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043c\u043f\u043e\u0440\u0442xs \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439\u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0434\u043b\u044f\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044fxs \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443\u0437\u043b\u043e\u0432dom \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0434\u0430\u0442\u044b \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0447\u0438\u0441\u043b\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043c\u0430\u043a\u0435\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043c\u0430\u043a\u0435\u0442\u0430\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0444\u043e\u0440\u043c\u0430\u0442\u043d\u043e\u0439\u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u0438\u043d\u0438\u044f \u043c\u0430\u043a\u0435\u0442\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u043a\u0430xs \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043d\u0430\u0431\u043e\u0440\u0441\u0445\u0435\u043cxml \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438json \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0445\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u0430dom \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043d\u043e\u0442\u0430\u0446\u0438\u0438xs \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430xs \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0434\u043e\u0441\u0442\u0443\u043f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043e\u0442\u043a\u0430\u0437\u0432\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e\u0444\u0430\u0439\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0442\u0438\u043f\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u043c\u043e\u0434\u0435\u043b\u0438xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0442\u0438\u043f\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430dom \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044fxpathxs \u043e\u0442\u0431\u043e\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0437\u0430\u043f\u0438\u0441\u0438json \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0437\u0430\u043f\u0438\u0441\u0438xml \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0447\u0442\u0435\u043d\u0438\u044fxml \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435xs \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043b\u0435\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044cdom \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043e\u0442\u0447\u0435\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043e\u0442\u0447\u0435\u0442\u0430\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0441\u0445\u0435\u043cxml \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u0432\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0447\u0442\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435xsl \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043a\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443xml \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0432\u044b\u0432\u043e\u0434\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0432\u044b\u0432\u043e\u0434\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0438\u043c\u0435\u043ddom \u0440\u0430\u043c\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435\u0438\u043c\u044fxml \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0447\u0442\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0434\u043d\u0430\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0432\u044f\u0437\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0432\u044f\u0437\u044c\u043f\u043e\u0442\u0438\u043f\u0443 \u0441\u0432\u044f\u0437\u044c\u043f\u043e\u0442\u0438\u043f\u0443\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440xdto \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u043b\u0438\u0435\u043d\u0442\u0430windows \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445\u0446\u0435\u043d\u0442\u0440\u043e\u0432windows \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445\u0446\u0435\u043d\u0442\u0440\u043e\u0432\u0444\u0430\u0439\u043b \u0441\u0436\u0430\u0442\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435\u043a\u043b\u0430\u0432\u0438\u0448 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u0434\u0430\u0442\u0430\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439\u043f\u0435\u0440\u0438\u043e\u0434 \u0441\u0445\u0435\u043c\u0430xml \u0441\u0445\u0435\u043c\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0434\u0430\u043d\u043d\u044b\u0445xml \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0430\u0431\u0440\u0438\u043a\u0430xdto \u0444\u0430\u0439\u043b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439\u043f\u043e\u0442\u043e\u043a \u0444\u0430\u0441\u0435\u0442\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430\u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432\u0434\u0440\u043e\u0431\u043d\u043e\u0439\u0447\u0430\u0441\u0442\u0438xs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043e\u0431\u0440\u0430\u0437\u0446\u0430xs \u0444\u0430\u0441\u0435\u0442\u043e\u0431\u0449\u0435\u0433\u043e\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430\u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432xs \u0444\u0430\u0441\u0435\u0442\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0445\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432xs \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0437\u043b\u043e\u0432dom \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f\u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442xs \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435fastinfoset \u0447\u0442\u0435\u043d\u0438\u0435html \u0447\u0442\u0435\u043d\u0438\u0435json \u0447\u0442\u0435\u043d\u0438\u0435xml \u0447\u0442\u0435\u043d\u0438\u0435zip\u0444\u0430\u0439\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0442\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u0443\u0437\u043b\u043e\u0432dom \u0448\u0440\u0438\u0444\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 comsafearray \u0434\u0435\u0440\u0435\u0432\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043f\u0438\u0441\u043e\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u043c\u0430\u0441\u0441\u0438\u0432 ", +literal:e},contains:[{className:"meta",begin:"#|&",end:"$",keywords:{$pattern:x, +keyword:n+"\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u0431\u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0435\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u043e\u043d\u0435\u0446\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043b\u0438\u0435\u043d\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435\u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435\u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435\u0431\u0435\u0437\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435\u0431\u0435\u0437\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u043e\u043b\u0441\u0442\u044b\u0439\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0431\u044b\u0447\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u0441\u0442\u044b\u0439\u043a\u043b\u0438\u0435\u043d\u0442\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043d\u043a\u0438\u0439\u043a\u043b\u0438\u0435\u043d\u0442 " +},contains:[m]},{className:"function",variants:[{ +begin:"\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430|\u0444\u0443\u043d\u043a\u0446\u0438\u044f", +end:"\\)", +keywords:"\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f" +},{ +begin:"\u043a\u043e\u043d\u0435\u0446\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b|\u043a\u043e\u043d\u0435\u0446\u0444\u0443\u043d\u043a\u0446\u0438\u0438", +keywords:"\u043a\u043e\u043d\u0435\u0446\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043a\u043e\u043d\u0435\u0446\u0444\u0443\u043d\u043a\u0446\u0438\u0438" +}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params", +begin:x,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:x, +keyword:"\u0437\u043d\u0430\u0447",literal:e},contains:[o,t,a]},m] +},s.inherit(s.TITLE_MODE,{begin:x})]},m,{className:"symbol",begin:"~",end:";|:", +excludeEnd:!0},o,t,a]}}})();hljs.registerLanguage("1c",s)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js new file mode 100644 index 0000000..b7a44af --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js @@ -0,0 +1,11 @@ +/*! `abnf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,s=e.COMMENT(/;/,/$/) +;return{name:"Augmented Backus-Naur Form",illegal:/[!@#$^&',?+~`|:]/, +keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"], +contains:[{scope:"operator",match:/=\/?/},{scope:"attribute", +match:a.concat(/^[a-zA-Z][a-zA-Z0-9-]*/,/(?=\s*=)/)},s,{scope:"symbol", +match:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/},{scope:"symbol", +match:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/},{scope:"symbol", +match:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/},{scope:"symbol", +match:/%[si](?=".*")/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}})() +;hljs.registerLanguage("abnf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js new file mode 100644 index 0000000..5c52937 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js @@ -0,0 +1,13 @@ +/*! `accesslog` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,a=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"] +;return{name:"Apache Access Log",contains:[{className:"number", +begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{ +className:"number",begin:/\b\d+\b/,relevance:0},{className:"string", +begin:n.concat(/"/,n.either(...a)),end:/"/,keywords:a,illegal:/\n/,relevance:5, +contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string", +begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string", +begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string", +begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{ +className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}}})() +;hljs.registerLanguage("accesslog",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js new file mode 100644 index 0000000..1c8efdc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js @@ -0,0 +1,17 @@ +/*! `actionscript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,t=/[a-zA-Z_$][a-zA-Z0-9_$]*/,n=a.concat(t,a.concat("(\\.",t,")*")),s={ +className:"rest_arg",begin:/[.]{3}/,end:t,relevance:10};return{ +name:"ActionScript",aliases:["as"],keywords:{ +keyword:["as","break","case","catch","class","const","continue","default","delete","do","dynamic","each","else","extends","final","finally","for","function","get","if","implements","import","in","include","instanceof","interface","internal","is","namespace","native","new","override","package","private","protected","public","return","set","static","super","switch","this","throw","try","typeof","use","var","void","while","with"], +literal:["true","false","null","undefined"]}, +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{ +match:[/\bpackage/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{ +match:[/\b(?:class|interface|extends|implements)/,/\s+/,t],className:{ +1:"keyword",3:"title.class"}},{className:"meta",beginKeywords:"import include", +end:/;/,keywords:{keyword:"import include"}},{beginKeywords:"function", +end:/[{;]/,excludeEnd:!0,illegal:/\S/,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.function"}),{className:"params",begin:/\(/,end:/\)/, +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s] +},{begin:a.concat(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},e.METHOD_GUARD], +illegal:/#/}}})();hljs.registerLanguage("actionscript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js new file mode 100644 index 0000000..39c6c6c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js @@ -0,0 +1,26 @@ +/*! `ada` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="[A-Za-z](_?[A-Za-z0-9.])*",s="[]\\{\\}%#'\"",a=e.COMMENT("--","$"),r={ +begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:s,contains:[{ +beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword", +beginKeywords:"not null constant access function procedure in out aliased exception" +},{className:"type",begin:n,endsParent:!0,relevance:0}]};return{name:"Ada", +case_insensitive:!0,keywords:{ +keyword:["abort","else","new","return","abs","elsif","not","reverse","abstract","end","accept","entry","select","access","exception","of","separate","aliased","exit","or","some","all","others","subtype","and","for","out","synchronized","array","function","overriding","at","tagged","generic","package","task","begin","goto","pragma","terminate","body","private","then","if","procedure","type","case","in","protected","constant","interface","is","raise","use","declare","range","delay","limited","record","when","delta","loop","rem","while","digits","renames","with","do","mod","requeue","xor"], +literal:["True","False"]},contains:[a,{className:"string",begin:/"/,end:/"/, +contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{ +className:"number", +begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)", +relevance:0},{className:"symbol",begin:"'"+n},{className:"title", +begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?", +end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:s},{ +begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+", +end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)", +keywords:"overriding function procedure with is renames return",returnBegin:!0, +contains:[a,{className:"title", +begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)", +excludeBegin:!0,excludeEnd:!0,illegal:s},r,{className:"type", +begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0, +excludeEnd:!0,endsParent:!0,illegal:s}]},{className:"type", +begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:s +},r]}}})();hljs.registerLanguage("ada",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js new file mode 100644 index 0000000..d86e6dd --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js @@ -0,0 +1,21 @@ +/*! `angelscript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"built_in", +begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)" +},a={className:"symbol",begin:"[a-zA-Z0-9_]+@"},i={className:"keyword", +begin:"<",end:">",contains:[n,a]};return n.contains=[i],a.contains=[i],{ +name:"AngelScript",aliases:["asc"], +keywords:["for","in|0","break","continue","while","do|0","return","if","else","case","switch","namespace","is","cast","or","and","xor","not","get|0","in","inout|10","out","override","set|0","private","public","const","default|0","final","shared","external","mixin|10","enum","typedef","funcdef","this","super","import","from","interface","abstract|0","try","catch","protected","explicit","property"], +illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{ +className:"string",begin:"'",end:"'",illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""', +end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE],relevance:0 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string", +begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/, +illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{ +beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol", +begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol", +begin:"[a-zA-Z0-9_]+"}]}]}]},n,a,{className:"literal", +begin:"\\b(null|true|false)"},{className:"number",relevance:0, +begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)" +}]}}})();hljs.registerLanguage("angelscript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js new file mode 100644 index 0000000..a4ba4a4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js @@ -0,0 +1,14 @@ +/*! `apache` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"number", +begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/};return{ +name:"Apache config",aliases:["apacheconf"],case_insensitive:!0, +contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/, +contains:[n,{className:"number",begin:/:\d{1,5}/ +},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute", +begin:/\w+/,relevance:0,keywords:{ +_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"] +},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"}, +contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable", +begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}] +},n,{className:"number",begin:/\b\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}} +})();hljs.registerLanguage("apache",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js new file mode 100644 index 0000000..23a9f1f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js @@ -0,0 +1,19 @@ +/*! `applescript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=e.regex,r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i={ +className:"params",begin:/\(/,end:/\)/,contains:["self",e.C_NUMBER_MODE,r] +},n=e.COMMENT(/--/,/$/),a=[n,e.COMMENT(/\(\*/,/\*\)/,{contains:["self",n] +}),e.HASH_COMMENT_MODE];return{name:"AppleScript",aliases:["osascript"], +keywords:{ +keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without", +literal:"AppleScript false linefeed return pi quote result space tab true", +built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year" +},contains:[r,e.C_NUMBER_MODE,{className:"built_in", +begin:t.concat(/\b/,t.either(/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/),/\b/) +},{className:"built_in",begin:/^\s*return\b/},{className:"literal", +begin:/\b(text item delimiters|current application|missing value)\b/},{ +className:"keyword", +begin:t.concat(/\b/,t.either(/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/),/\b/) +},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[e.UNDERSCORE_TITLE_MODE,i] +},...a],illegal:/\/\/|->|=>|\[\[/}}})();hljs.registerLanguage("applescript",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js new file mode 100644 index 0000000..c0f319f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js @@ -0,0 +1,27 @@ +/*! `arcade` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n="[A-Za-z_][0-9A-Za-z_]*",a={ +keyword:"if for while var new function do return void else break", +literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined", +built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year " +},t={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{ +begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={ +className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},r={ +className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]} +;i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,t,e.REGEXP_MODE] +;const o=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]) +;return{name:"ArcGIS Arcade",keywords:a, +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"symbol", +begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+" +},t,{begin:/[{,]\s*/,relevance:0,contains:[{begin:n+"\\s*:",returnBegin:!0, +relevance:0,contains:[{className:"attr",begin:n,relevance:0}]}]},{ +begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{ +className:"function",begin:"(\\(.*?\\)|"+n+")\\s*=>",returnBegin:!0, +end:"\\s*=>",contains:[{className:"params",variants:[{begin:n},{begin:/\(\s*\)/ +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:o}]}] +}],relevance:0},{beginKeywords:"function",end:/\{/,excludeEnd:!0, +contains:[e.inherit(e.TITLE_MODE,{className:"title.function",begin:n}),{ +className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o +}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}})() +;hljs.registerLanguage("arcade",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js new file mode 100644 index 0000000..599dd20 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js @@ -0,0 +1,54 @@ +/*! `arduino` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={ +type:["boolean","byte","word","String"], +built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"], +_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"], +literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"] +},r=(e=>{const t=e.regex,r=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),n="[a-zA-Z_]\\w*::",a="(?!struct)(decltype\\(auto\\)|"+t.optional(n)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={ +className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},r,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:t.optional(n)+e.IDENT_RE,relevance:0 +},d=t.optional(n)+e.IDENT_RE+"\\s*\\(",u={ +type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], +keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], +literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], +_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"] +},p={className:"function.dispatch",relevance:0,keywords:{ +_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] +}, +begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/)) +},m=[p,l,i,r,e.C_BLOCK_COMMENT_MODE,o,s],g={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:m.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:m.concat(["self"]),relevance:0}]),relevance:0},_={className:"function", +begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{ +begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{ +relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u, +relevance:0,contains:[r,e.C_BLOCK_COMMENT_MODE,s,o,i,{begin:/\(/,end:/\)/, +keywords:u,relevance:0,contains:["self",r,e.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,r,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</", +classNameAliases:{"function.dispatch":"built_in"}, +contains:[].concat(g,_,p,m,[l,{ +begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<", +end:">",keywords:u,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:u},{ +match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], +className:{1:"keyword",3:"title.class"}}])}})(e),n=r.keywords +;return n.type=[...n.type,...t.type], +n.literal=[...n.literal,...t.literal],n.built_in=[...n.built_in,...t.built_in], +n._hints=t._hints,r.name="Arduino",r.aliases=["ino"],r.supersetOf="cpp",r}})() +;hljs.registerLanguage("arduino",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js new file mode 100644 index 0000000..d8c5e73 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js @@ -0,0 +1,17 @@ +/*! `armasm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>{const e={ +variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0 +}),s.COMMENT("[;@]","$",{relevance:0 +}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly", +case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE, +meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ", +built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @" +},contains:[{className:"keyword", +begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)" +},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0 +},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{ +className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+" +},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol", +variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{ +begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}})() +;hljs.registerLanguage("armasm",s)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js new file mode 100644 index 0000000..a25196d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js @@ -0,0 +1,35 @@ +/*! `asciidoc` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a=[{ +className:"strong",begin:/\*{2}([^\n]+?)\*{2}/},{className:"strong", +begin:n.concat(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:n.concat(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})();hljs.registerLanguage("asciidoc",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js new file mode 100644 index 0000000..c55ef65 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js @@ -0,0 +1,31 @@ +/*! `aspectj` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,t=["false","synchronized","int","abstract","float","private","char","boolean","static","null","if","const","for","true","while","long","throw","strictfp","finally","protected","import","native","final","return","void","enum","else","extends","implements","break","transient","new","catch","instanceof","byte","super","volatile","case","assert","short","package","default","double","public","try","this","switch","continue","throws","privileged","aspectOf","adviceexecution","proceed","cflowbelow","cflow","initialization","preinitialization","staticinitialization","withincode","target","within","execution","getWithinTypeName","handler","thisJoinPoint","thisJoinPointStaticPart","thisEnclosingJoinPointStaticPart","declare","parents","warning","error","soft","precedence","thisAspectInstance"],i=["get","set","args","call"] +;return{name:"AspectJ",keywords:t,illegal:/<\/|#/, +contains:[e.COMMENT(/\/\*\*/,/\*\//,{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:/@[A-Za-z]+/}] +}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0, +illegal:/[:;"\[\]]/,contains:[{ +beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton" +},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t.concat(i), +excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/, +excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"pointcut after before around throwing returning",end:/[)]/, +excludeEnd:!1,illegal:/["\[\]]/,contains:[{ +begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0, +contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/, +relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{ +begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),keywords:t.concat(i),relevance:0 +},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{ +className:"function", +begin:/\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0, +end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{ +begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +relevance:0,keywords:t, +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{ +className:"meta",begin:/@[A-Za-z]+/}]}}})();hljs.registerLanguage("aspectj",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js new file mode 100644 index 0000000..c12327e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js @@ -0,0 +1,14 @@ +/*! `autohotkey` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a={begin:"`[\\s\\S]"};return{ +name:"AutoHotkey",case_insensitive:!0,aliases:["ahk"],keywords:{ +keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group", +literal:"true false NOT AND OR", +built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"}, +contains:[a,e.inherit(e.QUOTE_STRING_MODE,{contains:[a]}),e.COMMENT(";","$",{ +relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE, +relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{ +className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{ +begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{ +className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in", +begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}})() +;hljs.registerLanguage("autohotkey",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js new file mode 100644 index 0000000..2c5d971 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js @@ -0,0 +1,21 @@ +/*! `autoit` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={variants:[e.COMMENT(";","$",{ +relevance:0 +}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},r={ +begin:"\\$[A-z0-9_]+"},i={className:"string",variants:[{begin:/"/,end:/"/, +contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/, +relevance:0}]}]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{ +name:"AutoIt",case_insensitive:!0,illegal:/\/\*/,keywords:{ +keyword:"ByRef Case Const ContinueCase ContinueLoop Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With", +built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive", +literal:"True False And Null Not Or Default"},contains:[t,r,i,n,{ +className:"meta",begin:"#",end:"$",keywords:{ +keyword:["EndRegion","forcedef","forceref","ignorefunc","include","include-once","NoTrayIcon","OnAutoItStartRegister","pragma","Region","RequireAdmin","Tidy_Off","Tidy_On","Tidy_Parameters"] +},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{ +keyword:"include"},end:"$",contains:[i,{className:"string",variants:[{begin:"<", +end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/, +end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},i,t]},{className:"symbol", +begin:"@[A-z0-9_]+"},{beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%", +contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{className:"title.function"}),{ +className:"params",begin:"\\(",end:"\\)",contains:[r,i,n]}]}]}}})() +;hljs.registerLanguage("autoit",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js new file mode 100644 index 0000000..f281863 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js @@ -0,0 +1,12 @@ +/*! `avrasm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var r=(()=>{"use strict";return r=>({name:"AVR Assembly", +case_insensitive:!0,keywords:{$pattern:"\\.?"+r.IDENT_RE, +keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr", +built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf", +meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set" +},contains:[r.C_BLOCK_COMMENT_MODE,r.COMMENT(";","$",{relevance:0 +}),r.C_NUMBER_MODE,r.BINARY_NUMBER_MODE,{className:"number", +begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},r.QUOTE_STRING_MODE,{className:"string", +begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol", +begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{ +className:"subst",begin:"@[0-9]+"}]})})();hljs.registerLanguage("avrasm",r)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js new file mode 100644 index 0000000..4a538db --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js @@ -0,0 +1,11 @@ +/*! `awk` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})() +;hljs.registerLanguage("awk",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js new file mode 100644 index 0000000..1ae8ded --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js @@ -0,0 +1,10 @@ +/*! `axapta` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"X++",aliases:["x++"],keywords:{ +keyword:["abstract","as","asc","avg","break","breakpoint","by","byref","case","catch","changecompany","class","client","client","common","const","continue","count","crosscompany","delegate","delete_from","desc","display","div","do","edit","else","eventhandler","exists","extends","final","finally","firstfast","firstonly","firstonly1","firstonly10","firstonly100","firstonly1000","flush","for","forceliterals","forcenestedloop","forceplaceholders","forceselectorder","forupdate","from","generateonly","group","hint","if","implements","in","index","insert_recordset","interface","internal","is","join","like","maxof","minof","mod","namespace","new","next","nofetch","notexists","optimisticlock","order","outer","pessimisticlock","print","private","protected","public","readonly","repeatableread","retry","return","reverse","select","server","setting","static","sum","super","switch","this","throw","try","ttsabort","ttsbegin","ttscommit","unchecked","update_recordset","using","validtimestate","void","where","while"], +built_in:["anytype","boolean","byte","char","container","date","double","enum","guid","int","int64","long","real","short","str","utcdatetime","var"], +literal:["default","false","null","true"]}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"#",end:"$"},{className:"class", +beginKeywords:"class interface",end:/\{/,excludeEnd:!0,illegal:":",contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]})})() +;hljs.registerLanguage("axapta",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js new file mode 100644 index 0000000..6f303be --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js @@ -0,0 +1,20 @@ +/*! `bash` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})() +;hljs.registerLanguage("bash",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js new file mode 100644 index 0000000..ab651db --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js @@ -0,0 +1,10 @@ +/*! `basic` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var E=(()=>{"use strict";return E=>({name:"BASIC",case_insensitive:!0, +illegal:"^.",keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_$%!#]*", +keyword:["ABS","ASC","AND","ATN","AUTO|0","BEEP","BLOAD|10","BSAVE|10","CALL","CALLS","CDBL","CHAIN","CHDIR","CHR$|10","CINT","CIRCLE","CLEAR","CLOSE","CLS","COLOR","COM","COMMON","CONT","COS","CSNG","CSRLIN","CVD","CVI","CVS","DATA","DATE$","DEFDBL","DEFINT","DEFSNG","DEFSTR","DEF|0","SEG","USR","DELETE","DIM","DRAW","EDIT","END","ENVIRON","ENVIRON$","EOF","EQV","ERASE","ERDEV","ERDEV$","ERL","ERR","ERROR","EXP","FIELD","FILES","FIX","FOR|0","FRE","GET","GOSUB|10","GOTO","HEX$","IF","THEN","ELSE|0","INKEY$","INP","INPUT","INPUT#","INPUT$","INSTR","IMP","INT","IOCTL","IOCTL$","KEY","ON","OFF","LIST","KILL","LEFT$","LEN","LET","LINE","LLIST","LOAD","LOC","LOCATE","LOF","LOG","LPRINT","USING","LSET","MERGE","MID$","MKDIR","MKD$","MKI$","MKS$","MOD","NAME","NEW","NEXT","NOISE","NOT","OCT$","ON","OR","PEN","PLAY","STRIG","OPEN","OPTION","BASE","OUT","PAINT","PALETTE","PCOPY","PEEK","PMAP","POINT","POKE","POS","PRINT","PRINT]","PSET","PRESET","PUT","RANDOMIZE","READ","REM","RENUM","RESET|0","RESTORE","RESUME","RETURN|0","RIGHT$","RMDIR","RND","RSET","RUN","SAVE","SCREEN","SGN","SHELL","SIN","SOUND","SPACE$","SPC","SQR","STEP","STICK","STOP","STR$","STRING$","SWAP","SYSTEM","TAB","TAN","TIME$","TIMER","TROFF","TRON","TO","USR","VAL","VARPTR","VARPTR$","VIEW","WAIT","WHILE","WEND","WIDTH","WINDOW","WRITE","XOR"] +},contains:[E.QUOTE_STRING_MODE,E.COMMENT("REM","$",{relevance:10 +}),E.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ", +relevance:10},{className:"number",begin:"\\b\\d+(\\.\\d+)?([edED]\\d+)?[#!]?", +relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{ +className:"number",begin:"(&[oO][0-7]{1,6})"}]})})() +;hljs.registerLanguage("basic",E)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js new file mode 100644 index 0000000..76f748b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js @@ -0,0 +1,6 @@ +/*! `bnf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Backus\u2013Naur Form", +contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,end:/$/, +contains:[{begin:/</,end:/>/ +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +}]})})();hljs.registerLanguage("bnf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js new file mode 100644 index 0000000..8756627 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js @@ -0,0 +1,7 @@ +/*! `brainfuck` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"literal", +begin:/[+-]/,relevance:0};return{name:"Brainfuck",aliases:["bf"], +contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{ +returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{ +className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|--)/,contains:[n] +},n]}}})();hljs.registerLanguage("brainfuck",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js new file mode 100644 index 0000000..438ea14 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js @@ -0,0 +1,41 @@ +/*! `c` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),s="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0 +},d=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:g.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ +className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ +className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\(/,end:/\)/,keywords:u, +relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u, +disableAutodetect:!0,illegal:"</",contains:[].concat(m,p,g,[o,{ +begin:e.IDENT_RE+"::",keywords:u},{className:"class", +beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{ +beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o, +strings:i,keywords:u}}}})();hljs.registerLanguage("c",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js new file mode 100644 index 0000000..45a56fe --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js @@ -0,0 +1,14 @@ +/*! `cal` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",a=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{ +relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string", +begin:/'/,end:/'/,contains:[{begin:/''/}]},s={className:"string",begin:/(#\d+)+/ +},i={className:"function",beginKeywords:"procedure",end:/[:;]/, +keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/, +end:/\)/,keywords:n,contains:[r,s]}].concat(a)},t={className:"class", +begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)", +returnBegin:!0,contains:[e.TITLE_MODE,i]};return{name:"C/AL", +case_insensitive:!0,keywords:{keyword:n,literal:"false true"},illegal:/\/\*/, +contains:[r,s,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0 +},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,t,i]}}})() +;hljs.registerLanguage("cal",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js new file mode 100644 index 0000000..9a0e5a4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js @@ -0,0 +1,13 @@ +/*! `capnproto` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var n=(()=>{"use strict";return n=>({name:"Cap\u2019n Proto", +aliases:["capnp"],keywords:{ +keyword:["struct","enum","interface","union","group","import","using","const","annotation","extends","in","of","on","as","with","from","fixed"], +built_in:["Void","Bool","Int8","Int16","Int32","Int64","UInt8","UInt16","UInt32","UInt64","Float32","Float64","Text","Data","AnyPointer","AnyStruct","Capability","List"], +literal:["true","false"]}, +contains:[n.QUOTE_STRING_MODE,n.NUMBER_MODE,n.HASH_COMMENT_MODE,{ +className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol", +begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/, +illegal:/\n/,contains:[n.inherit(n.TITLE_MODE,{starts:{endsWithParent:!0, +excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/, +illegal:/\n/,contains:[n.inherit(n.TITLE_MODE,{starts:{endsWithParent:!0, +excludeEnd:!0}})]}]})})();hljs.registerLanguage("capnproto",n)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js new file mode 100644 index 0000000..a4f2d58 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js @@ -0,0 +1,15 @@ +/*! `ceylon` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=["assembly","module","package","import","alias","class","interface","object","given","value","assign","void","function","new","of","extends","satisfies","abstracts","in","out","return","break","continue","throw","assert","dynamic","if","else","switch","case","for","while","try","catch","finally","then","let","this","outer","super","is","exists","nonempty"],s={ +className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:a, +relevance:10},n=[{className:"string",begin:'"""',end:'"""',relevance:10},{ +className:"string",begin:'"',end:'"',contains:[s]},{className:"string", +begin:"'",end:"'"},{className:"number", +begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?", +relevance:0}];return s.contains=n,{name:"Ceylon",keywords:{ +keyword:a.concat(["shared","abstract","formal","default","actual","variable","late","native","deprecated","final","sealed","annotation","suppressWarnings","small"]), +meta:["doc","by","license","see","throws","tagged"]}, +illegal:"\\$[^01]|#[^0-9a-fA-F]", +contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{ +className:"meta",begin:'@[a-z]\\w*(?::"[^"]*")?'}].concat(n)}}})() +;hljs.registerLanguage("ceylon",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js new file mode 100644 index 0000000..b37069d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js @@ -0,0 +1,8 @@ +/*! `clean` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Clean",aliases:["icl","dcl"], +keywords:{ +keyword:["if","let","in","with","where","case","of","class","instance","otherwise","implementation","definition","system","module","from","import","qualified","as","special","code","inline","foreign","export","ccall","stdcall","generic","derive","infix","infixl","infixr"], +built_in:"Int Real Char Bool",literal:"True False"}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]})})() +;hljs.registerLanguage("clean",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js new file mode 100644 index 0000000..342d710 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js @@ -0,0 +1,4 @@ +/*! `clojure-repl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Clojure REPL",contains:[{ +className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/, +subLanguage:"clojure"}}]})})();hljs.registerLanguage("clojure-repl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js new file mode 100644 index 0000000..2b3bf73 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js @@ -0,0 +1,19 @@ +/*! `clojure` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +built_in:r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]",relevance:0 +},m={className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,keywords:{ +$pattern:n,keyword:r},end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{ +className:"title",begin:n,relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj","edn"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})() +;hljs.registerLanguage("clojure",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js new file mode 100644 index 0000000..2153090 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js @@ -0,0 +1,7 @@ +/*! `cmake` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"CMake",aliases:["cmake.in"], +case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})() +;hljs.registerLanguage("cmake",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js new file mode 100644 index 0000000..d3318c2 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js @@ -0,0 +1,29 @@ +/*! `coffeescript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],r=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]) +;return a=>{const t={ +keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((i=["var","const","let","function","static"], +e=>!i.includes(e))),literal:n.concat(["yes","no","on","off"]), +built_in:r.concat(["npm","print"])};var i;const s="[A-Za-z$_][0-9A-Za-z$_]*",o={ +className:"subst",begin:/#\{/,end:/\}/,keywords:t +},c=[a.BINARY_NUMBER_MODE,a.inherit(a.C_NUMBER_MODE,{starts:{end:"(\\s*/)?", +relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/, +contains:[a.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[a.BACKSLASH_ESCAPE] +},{begin:/"""/,end:/"""/,contains:[a.BACKSLASH_ESCAPE,o]},{begin:/"/,end:/"/, +contains:[a.BACKSLASH_ESCAPE,o]}]},{className:"regexp",variants:[{begin:"///", +end:"///",contains:[o,a.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)", +relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+s +},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{ +begin:"```",end:"```"},{begin:"`",end:"`"}]}];o.contains=c +;const l=a.inherit(a.TITLE_MODE,{begin:s}),d="(\\(.*\\)\\s*)?\\B[-=]>",g={ +className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/, +end:/\)/,keywords:t,contains:["self"].concat(c)}]};return{name:"CoffeeScript", +aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/, +contains:[...c,a.COMMENT("###","###"),a.HASH_COMMENT_MODE,{className:"function", +begin:"^\\s*"+s+"\\s*=\\s*"+d,end:"[-=]>",returnBegin:!0,contains:[l,g]},{ +begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:d, +end:"[-=]>",returnBegin:!0,contains:[g]}]},{className:"class", +beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{ +beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[l]},l] +},{begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}]}}})() +;hljs.registerLanguage("coffeescript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js new file mode 100644 index 0000000..2e4d81c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js @@ -0,0 +1,7 @@ +/*! `coq` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Coq",keywords:{ +keyword:["_|0","as","at","cofix","else","end","exists","exists2","fix","for","forall","fun","if","IF","in","let","match","mod","Prop","return","Set","then","Type","using","where","with","Abort","About","Add","Admit","Admitted","All","Arguments","Assumptions","Axiom","Back","BackTo","Backtrack","Bind","Blacklist","Canonical","Cd","Check","Class","Classes","Close","Coercion","Coercions","CoFixpoint","CoInductive","Collection","Combined","Compute","Conjecture","Conjectures","Constant","constr","Constraint","Constructors","Context","Corollary","CreateHintDb","Cut","Declare","Defined","Definition","Delimit","Dependencies","Dependent","Derive","Drop","eauto","End","Equality","Eval","Example","Existential","Existentials","Existing","Export","exporting","Extern","Extract","Extraction","Fact","Field","Fields","File","Fixpoint","Focus","for","From","Function","Functional","Generalizable","Global","Goal","Grab","Grammar","Graph","Guarded","Heap","Hint","HintDb","Hints","Hypotheses","Hypothesis","ident","Identity","If","Immediate","Implicit","Import","Include","Inductive","Infix","Info","Initial","Inline","Inspect","Instance","Instances","Intro","Intros","Inversion","Inversion_clear","Language","Left","Lemma","Let","Libraries","Library","Load","LoadPath","Local","Locate","Ltac","ML","Mode","Module","Modules","Monomorphic","Morphism","Next","NoInline","Notation","Obligation","Obligations","Opaque","Open","Optimize","Options","Parameter","Parameters","Parametric","Path","Paths","pattern","Polymorphic","Preterm","Print","Printing","Program","Projections","Proof","Proposition","Pwd","Qed","Quit","Rec","Record","Recursive","Redirect","Relation","Remark","Remove","Require","Reserved","Reset","Resolve","Restart","Rewrite","Right","Ring","Rings","Save","Scheme","Scope","Scopes","Script","Search","SearchAbout","SearchHead","SearchPattern","SearchRewrite","Section","Separate","Set","Setoid","Show","Solve","Sorted","Step","Strategies","Strategy","Structure","SubClass","Table","Tables","Tactic","Term","Test","Theorem","Time","Timeout","Transparent","Type","Typeclasses","Types","Undelimit","Undo","Unfocus","Unfocused","Unfold","Universe","Universes","Unset","Unshelve","using","Variable","Variables","Variant","Verbose","Visibility","where","with"], +built_in:["abstract","absurd","admit","after","apply","as","assert","assumption","at","auto","autorewrite","autounfold","before","bottom","btauto","by","case","case_eq","cbn","cbv","change","classical_left","classical_right","clear","clearbody","cofix","compare","compute","congruence","constr_eq","constructor","contradict","contradiction","cut","cutrewrite","cycle","decide","decompose","dependent","destruct","destruction","dintuition","discriminate","discrR","do","double","dtauto","eapply","eassumption","eauto","ecase","econstructor","edestruct","ediscriminate","eelim","eexact","eexists","einduction","einjection","eleft","elim","elimtype","enough","equality","erewrite","eright","esimplify_eq","esplit","evar","exact","exactly_once","exfalso","exists","f_equal","fail","field","field_simplify","field_simplify_eq","first","firstorder","fix","fold","fourier","functional","generalize","generalizing","gfail","give_up","has_evar","hnf","idtac","in","induction","injection","instantiate","intro","intro_pattern","intros","intuition","inversion","inversion_clear","is_evar","is_var","lapply","lazy","left","lia","lra","move","native_compute","nia","nsatz","omega","once","pattern","pose","progress","proof","psatz","quote","record","red","refine","reflexivity","remember","rename","repeat","replace","revert","revgoals","rewrite","rewrite_strat","right","ring","ring_simplify","rtauto","set","setoid_reflexivity","setoid_replace","setoid_rewrite","setoid_symmetry","setoid_transitivity","shelve","shelve_unifiable","simpl","simple","simplify_eq","solve","specialize","split","split_Rabs","split_Rmult","stepl","stepr","subst","sum","swap","symmetry","tactic","tauto","time","timeout","top","transitivity","trivial","try","tryif","unfold","unify","until","using","vm_compute","with"] +},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{ +className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}) +})();hljs.registerLanguage("coq",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js new file mode 100644 index 0000000..63f518f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js @@ -0,0 +1,15 @@ +/*! `cos` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Cach\xe9 Object Script", +case_insensitive:!0,aliases:["cls"], +keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii", +contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{ +className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""', +relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in", +begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in", +begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{ +className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword", +begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/, +excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</, +end:/>\s*>/,subLanguage:"xml"}]})})();hljs.registerLanguage("cos",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js new file mode 100644 index 0000000..f7d6cac --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js @@ -0,0 +1,47 @@ +/*! `cpp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,a=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),n="[a-zA-Z_]\\w*::",r="(?!struct)(decltype\\(auto\\)|"+t.optional(n)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={ +className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},c={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ +className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},l={ +className:"title",begin:t.optional(n)+e.IDENT_RE,relevance:0 +},d=t.optional(n)+e.IDENT_RE+"\\s*\\(",u={ +type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], +keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], +literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], +_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"] +},p={className:"function.dispatch",relevance:0,keywords:{ +_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] +}, +begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/)) +},_=[p,o,i,a,e.C_BLOCK_COMMENT_MODE,c,s],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:_.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:_.concat(["self"]),relevance:0}]),relevance:0},g={className:"function", +begin:"("+r+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[l],relevance:0},{ +begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,c]},{ +relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u, +relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,s,c,i,{begin:/\(/,end:/\)/, +keywords:u,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,s,c,i]}] +},i,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</", +classNameAliases:{"function.dispatch":"built_in"}, +contains:[].concat(m,g,p,_,[o,{ +begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<", +end:">",keywords:u,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:u},{ +match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], +className:{1:"keyword",3:"title.class"}}])}}})();hljs.registerLanguage("cpp",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js new file mode 100644 index 0000000..5c45bdf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js @@ -0,0 +1,19 @@ +/*! `crmsh` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml" +;return{name:"crmsh",aliases:["crm","pcmk"],case_insensitive:!0,keywords:{ +keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string", +literal:"Master Started Slave Stopped start promote demote stop monitor true false" +},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{ +end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}} +},{beginKeywords:"primitive rsc_template",starts:{className:"title", +end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{ +begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{ +className:"title",end:"[\\$\\w_][\\w_-]*"}},{ +beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title", +end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta", +begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number", +begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal", +begin:"[-]?(infinity|inf)",relevance:0},{className:"attr", +begin:/([A-Za-z$_#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?", +end:"/?>",relevance:0}]}}})();hljs.registerLanguage("crmsh",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js new file mode 100644 index 0000000..f033c02 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js @@ -0,0 +1,48 @@ +/*! `crystal` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="(_?[ui](8|16|32|64|128))?",i="[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",s="[A-Za-z_]\\w*(::\\w+)*(\\?|!)?",a={ +$pattern:"[a-zA-Z_]\\w*[!?=]?", +keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__", +literal:"false nil true"},t={className:"subst",begin:/#\{/,end:/\}/,keywords:a +},c={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{ +begin:"\\{%",end:"%\\}"}],keywords:a};function r(e,n){const i=[{begin:e,end:n}] +;return i[0].contains=i,i}const l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:r("\\(","\\)")},{ +begin:"%[Qwi]?\\[",end:"\\]",contains:r("\\[","\\]")},{begin:"%[Qwi]?\\{", +end:/\}/,contains:r(/\{/,/\}/)},{begin:"%[Qwi]?<",end:">",contains:r("<",">")},{ +begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},b={ +className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:r("\\(","\\)")},{ +begin:"%q\\[",end:"\\]",contains:r("\\[","\\]")},{begin:"%q\\{",end:/\}/, +contains:r(/\{/,/\}/)},{begin:"%q<",end:">",contains:r("<",">")},{begin:"%q\\|", +end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},o={ +begin:"(?!%\\})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*", +keywords:"case if select unless until when while",contains:[{className:"regexp", +contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"//[a-z]*",relevance:0},{ +begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},g=[c,l,b,{className:"regexp", +contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"%r\\(",end:"\\)", +contains:r("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:r("\\[","\\]")},{ +begin:"%r\\{",end:/\}/,contains:r(/\{/,/\}/)},{begin:"%r<",end:">", +contains:r("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},o,{ +className:"meta",begin:"@\\[",end:"\\]", +contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"string"})]},{ +className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])" +},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct", +end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{ +begin:s}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union", +end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{ +begin:s})]},{beginKeywords:"annotation",end:"$|;",illegal:/=/, +contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:s})],relevance:2},{ +className:"function",beginKeywords:"def",end:/\B\b/, +contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})]},{ +className:"function",beginKeywords:"fun macro",end:/\B\b/, +contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})],relevance:2},{ +className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{ +className:"symbol",begin:":",contains:[l,{begin:i}],relevance:0},{ +className:"number",variants:[{begin:"\\b0b([01_]+)"+n},{begin:"\\b0o([0-7_]+)"+n +},{begin:"\\b0x([A-Fa-f0-9_]+)"+n},{ +begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?(_?f(32|64))?(?!_)" +},{begin:"\\b([1-9][0-9_]*|0)"+n}],relevance:0}] +;return t.contains=g,c.contains=g.slice(1),{name:"Crystal",aliases:["cr"], +keywords:a,contains:g}}})();hljs.registerLanguage("crystal",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js new file mode 100644 index 0000000..c06e1b7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js @@ -0,0 +1,47 @@ +/*! `csharp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),i={className:"number",variants:[{ +begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={ +begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], +keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, +contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{ +begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}] +}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#", +end:"$",keywords:{ +keyword:"if else elif endif define undef warning error line region endregion pragma checksum" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta", +begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{ +className:"string",begin:/"/,end:/"/}]},{ +beginKeywords:"new return throw await else",relevance:0},{className:"function", +begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, +contains:[e.TITLE_MODE,E],relevance:0},{match:/\(\)/},{className:"params", +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, +contains:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})() +;hljs.registerLanguage("csharp",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js new file mode 100644 index 0000000..1c2aece --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js @@ -0,0 +1,7 @@ +/*! `csp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"CSP",case_insensitive:!1, +keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_-]*", +keyword:["base-uri","child-src","connect-src","default-src","font-src","form-action","frame-ancestors","frame-src","img-src","manifest-src","media-src","object-src","plugin-types","report-uri","sandbox","script-src","style-src","trusted-types","unsafe-hashes","worker-src"] +},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute", +begin:"^Content",end:":",excludeEnd:!0}]})})();hljs.registerLanguage("csp",s) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js new file mode 100644 index 0000000..ed15435 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js @@ -0,0 +1,31 @@ +/*! `css` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;return a=>{const n=a.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}))(a),s=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"},contains:[l.BLOCK_COMMENT,{ +begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{ +className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ +className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:":(:)?("+o.join("|")+")"}]},l.CSS_VARIABLE,{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:/:/,end:/[;}{]/, +contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},l.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0, +illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{ +begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:t.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})() +;hljs.registerLanguage("css",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js new file mode 100644 index 0000000..66490b4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js @@ -0,0 +1,20 @@ +/*! `d` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a={ +$pattern:e.UNDERSCORE_IDENT_RE, +keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__", +built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring", +literal:"false null true" +},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={ +className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={ +className:"number", +begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))", +relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={ +className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?' +},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{ +name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{ +className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{ +className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string", +begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{ +className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta", +begin:"#(line)",end:"$",relevance:5},{className:"keyword", +begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}})();hljs.registerLanguage("d",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js new file mode 100644 index 0000000..c6d69ef --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js @@ -0,0 +1,22 @@ +/*! `dart` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"subst",variants:[{ +begin:"\\$[A-Za-z0-9_]+"}]},a={className:"subst",variants:[{begin:/\$\{/, +end:/\}/}],keywords:"true false null this is new super"},t={className:"string", +variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'", +illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''", +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"""',end:'"""', +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:"'",end:"'",illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]}]};a.contains=[e.C_NUMBER_MODE,t] +;const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],r=i.map((e=>e+"?")) +;return{name:"Dart",keywords:{ +keyword:["abstract","as","assert","async","await","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","inferface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","while","with","yield"], +built_in:i.concat(r).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]), +$pattern:/[A-Za-z][A-Za-z0-9_]*\??/}, +contains:[t,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0 +}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".", +end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE] +},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}})() +;hljs.registerLanguage("dart",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js new file mode 100644 index 0000000..2fbed7f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js @@ -0,0 +1,17 @@ +/*! `delphi` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const r=["exports","register","file","shl","array","record","property","for","mod","while","set","ally","label","uses","raise","not","stored","class","safecall","var","interface","or","private","static","exit","index","inherited","to","else","stdcall","override","shr","asm","far","resourcestring","finalization","packed","virtual","out","and","protected","library","do","xorwrite","goto","near","function","end","div","overload","object","unit","begin","string","on","inline","repeat","until","destructor","write","message","program","with","read","initialization","except","default","nil","if","case","cdecl","in","downto","threadvar","of","try","pascal","const","external","constructor","type","public","then","implementation","finally","published","procedure","absolute","reintroduce","operator","as","is","abstract","alias","assembler","bitpacked","break","continue","cppdecl","cvar","enumerator","experimental","platform","deprecated","unimplemented","dynamic","export","far16","forward","generic","helper","implements","interrupt","iochecks","local","name","nodefault","noreturn","nostackframe","oldfpccall","otherwise","saveregisters","softfloat","specialize","strict","unaligned","varargs"],a=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{ +relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],t={className:"meta", +variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},n={ +className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={ +className:"string",begin:/(#\d+)+/},s={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(", +returnBegin:!0,contains:[e.TITLE_MODE]},c={className:"function", +beginKeywords:"function constructor destructor procedure",end:/[:;]/, +keywords:"function constructor|10 destructor|10 procedure|10", +contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:r, +contains:[n,i,t].concat(a)},t].concat(a)};return{name:"Delphi", +aliases:["dpr","dfm","pas","pascal"],case_insensitive:!0,keywords:r, +illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[n,i,e.NUMBER_MODE,{ +className:"number",relevance:0,variants:[{begin:"\\$[0-9A-Fa-f]+"},{ +begin:"&[0-7]+"},{begin:"%[01]+"}]},s,c,t].concat(a)}}})() +;hljs.registerLanguage("delphi",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js new file mode 100644 index 0000000..8912f8a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js @@ -0,0 +1,9 @@ +/*! `diff` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"Diff", +aliases:["patch"],contains:[{className:"meta",relevance:10, +match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +},{className:"comment",variants:[{ +begin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]}}})();hljs.registerLanguage("diff",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js new file mode 100644 index 0000000..bb1e609 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js @@ -0,0 +1,13 @@ +/*! `django` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={begin:/\|[A-Za-z]+:?/, +keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})() +;hljs.registerLanguage("django",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js new file mode 100644 index 0000000..2b5bd67 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js @@ -0,0 +1,11 @@ +/*! `dns` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var d=(()=>{"use strict";return d=>({name:"DNS Zone", +aliases:["bind","zone"], +keywords:["IN","A","AAAA","AFSDB","APL","CAA","CDNSKEY","CDS","CERT","CNAME","DHCID","DLV","DNAME","DNSKEY","DS","HIP","IPSECKEY","KEY","KX","LOC","MX","NAPTR","NS","NSEC","NSEC3","NSEC3PARAM","PTR","RRSIG","RP","SIG","SOA","SRV","SSHFP","TA","TKEY","TLSA","TSIG","TXT"], +contains:[d.COMMENT(";","$",{relevance:0}),{className:"meta", +begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number", +begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b" +},{className:"number", +begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b" +},d.inherit(d.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]})})() +;hljs.registerLanguage("dns",d)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js new file mode 100644 index 0000000..62ca9e6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js @@ -0,0 +1,8 @@ +/*! `dockerfile` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Dockerfile",aliases:["docker"], +case_insensitive:!0, +keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"], +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"})})() +;hljs.registerLanguage("dockerfile",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js new file mode 100644 index 0000000..2788c7f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js @@ -0,0 +1,12 @@ +/*! `dos` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const r=e.COMMENT(/^\s*@?rem\b/,/$/,{ +relevance:10});return{name:"Batch file (DOS)",aliases:["bat","cmd"], +case_insensitive:!0,illegal:/\/\*/,keywords:{ +keyword:["if","else","goto","for","in","do","call","exit","not","exist","errorlevel","defined","equ","neq","lss","leq","gtr","geq"], +built_in:["prn","nul","lpt3","lpt2","lpt1","con","com4","com3","com2","com1","aux","shift","cd","dir","echo","setlocal","endlocal","set","pause","copy","append","assoc","at","attrib","break","cacls","cd","chcp","chdir","chkdsk","chkntfs","cls","cmd","color","comp","compact","convert","date","dir","diskcomp","diskcopy","doskey","erase","fs","find","findstr","format","ftype","graftabl","help","keyb","label","md","mkdir","mode","more","move","path","pause","print","popd","pushd","promt","rd","recover","rem","rename","replace","restore","rmdir","shift","sort","start","subst","time","title","tree","type","ver","verify","vol","ping","net","ipconfig","taskkill","xcopy","ren","del"] +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),r]},{ +className:"number",begin:"\\b\\d+",relevance:0},r]}}})() +;hljs.registerLanguage("dos",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js new file mode 100644 index 0000000..b57e141 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js @@ -0,0 +1,9 @@ +/*! `dsconfig` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({keywords:"dsconfig",contains:[{ +className:"keyword",begin:"^dsconfig",end:/\s/,excludeEnd:!0,relevance:10},{ +className:"built_in",begin:/(list|create|get|set|delete)-(\w+)/,end:/\s/, +excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in", +begin:/--(\w+)/,end:/\s/,excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{ +className:"string",begin:/'/,end:/'/},{className:"string",begin:/[\w\-?]+:\w+/, +end:/\W/,relevance:0},{className:"string",begin:/\w+(\-\w+)*/,end:/(?=\W)/, +relevance:0},e.HASH_COMMENT_MODE]})})();hljs.registerLanguage("dsconfig",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js new file mode 100644 index 0000000..01d408a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js @@ -0,0 +1,22 @@ +/*! `dts` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a={className:"string", +variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{ +begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.", +end:"'",illegal:"."}]},n={className:"number",variants:[{ +begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}], +relevance:0},s={className:"meta",begin:"#",end:"$",keywords:{ +keyword:"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/, +relevance:0},{beginKeywords:"include",end:"$",keywords:{keyword:"include"}, +contains:[e.inherit(a,{className:"string"}),{className:"string",begin:"<", +end:">",illegal:"\\n"}]},a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i={ +className:"variable",begin:/&[a-z\d_]*\b/};return{name:"Device Tree",contains:[{ +className:"title.class",begin:/^\/(?=\s*\{)/,relevance:10},i,{ +className:"keyword",begin:"/[a-z][a-z\\d-]*/"},{className:"symbol", +begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},{className:"title.class", +begin:/[a-zA-Z_][a-zA-Z\d_@-]*(?=\s\{)/},{relevance:0, +match:[/[a-z][a-z-,]+/,/\s*/,/=/],scope:{1:"attr",3:"operator"}},{ +match:/[a-z][a-z-,]+(?=;)/,relevance:0,scope:"attr"},{className:"params", +relevance:0,begin:"<",end:">",contains:[n,i] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,a,s,{scope:"punctuation", +relevance:0,match:/\};|[;{}]/},{begin:e.IDENT_RE+"::",keywords:""}]}}})() +;hljs.registerLanguage("dts",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js new file mode 100644 index 0000000..15917da --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js @@ -0,0 +1,8 @@ +/*! `dust` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Dust",aliases:["dst"], +case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag", +begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name", +begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0, +contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/, +end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}] +})})();hljs.registerLanguage("dust",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js new file mode 100644 index 0000000..a8fc800 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js @@ -0,0 +1,7 @@ +/*! `ebnf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.COMMENT(/\(\*/,/\*\)/) +;return{name:"Extended Backus-Naur Form",illegal:/\S/,contains:[a,{ +className:"attribute",begin:/^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/},{begin:/=/, +end:/[.;]/,contains:[a,{className:"meta",begin:/\?.*\?/},{className:"string", +variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"`",end:"`"}]}]}]}}})() +;hljs.registerLanguage("ebnf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js new file mode 100644 index 0000000..99b949a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js @@ -0,0 +1,33 @@ +/*! `elixir` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,i="[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?",a={$pattern:i, +keyword:["after","alias","and","case","catch","cond","defstruct","do","else","end","fn","for","if","import","in","not","or","quote","raise","receive","require","reraise","rescue","try","unless","unquote","unquote_splicing","use","when","with|0"], +literal:["false","nil","true"]},s={className:"subst",begin:/#\{/,end:/\}/, +keywords:a},c={match:/\\[\s\S]/,scope:"char.escape",relevance:0},r=[{begin:/"/, +end:/"/},{begin:/'/,end:/'/},{begin:/\//,end:/\//},{begin:/\|/,end:/\|/},{ +begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/},{begin:/</, +end:/>/}],t=e=>({scope:"char.escape",begin:n.concat(/\\/,e),relevance:0}),d={ +className:"string",begin:"~[a-z](?=[/|([{<\"'])", +contains:r.map((n=>e.inherit(n,{contains:[t(n.end),c,s]})))},o={ +className:"string",begin:"~[A-Z](?=[/|([{<\"'])", +contains:r.map((n=>e.inherit(n,{contains:[t(n.end)]})))},b={className:"regex", +variants:[{begin:"~r(?=[/|([{<\"'])",contains:r.map((i=>e.inherit(i,{ +end:n.concat(i.end,/[uismxfU]{0,7}/),contains:[t(i.end),c,s]})))},{ +begin:"~R(?=[/|([{<\"'])",contains:r.map((i=>e.inherit(i,{ +end:n.concat(i.end,/[uismxfU]{0,7}/),contains:[t(i.end)]})))}]},g={ +className:"string",contains:[e.BACKSLASH_ESCAPE,s],variants:[{begin:/"""/, +end:/"""/},{begin:/'''/,end:/'''/},{begin:/~S"""/,end:/"""/,contains:[]},{ +begin:/~S"/,end:/"/,contains:[]},{begin:/~S'''/,end:/'''/,contains:[]},{ +begin:/~S'/,end:/'/,contains:[]},{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},l={ +className:"function",beginKeywords:"def defp defmacro defmacrop",end:/\B\b/, +contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})]},m=e.inherit(l,{ +className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord", +end:/\bdo\b|$|;/}),u=[g,b,o,d,e.HASH_COMMENT_MODE,m,l,{begin:"::"},{ +className:"symbol",begin:":(?![\\s:])",contains:[g,{ +begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?" +}],relevance:0},{className:"symbol",begin:i+":(?!:)",relevance:0},{ +className:"number", +begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[0-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)", +relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))"},{ +begin:"->"}];return s.contains=u,{name:"Elixir",aliases:["ex","exs"],keywords:a, +contains:u}}})();hljs.registerLanguage("elixir",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js new file mode 100644 index 0000000..f82b32b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js @@ -0,0 +1,18 @@ +/*! `elm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},i={ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},s={begin:"\\(",end:"\\)", +illegal:'"',contains:[{className:"type", +begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},n]};return{name:"Elm", +keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"], +contains:[{beginKeywords:"port effect module",end:"exposing", +keywords:"port effect module where command subscription exposing", +contains:[s,n],illegal:"\\W\\.|;"},{begin:"import",end:"$", +keywords:"import as exposing",contains:[s,n],illegal:"\\W\\.|;"},{begin:"type", +end:"$",keywords:"type alias",contains:[i,s,{begin:/\{/,end:/\}/, +contains:s.contains},n]},{beginKeywords:"infix infixl infixr",end:"$", +contains:[e.C_NUMBER_MODE,n]},{begin:"port",end:"$",keywords:"port",contains:[n] +},{className:"string",begin:"'\\\\?.",end:"'",illegal:"." +},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,i,e.inherit(e.TITLE_MODE,{ +begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}],illegal:/;/}}})() +;hljs.registerLanguage("elm",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js new file mode 100644 index 0000000..59a2841 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js @@ -0,0 +1,5 @@ +/*! `erb` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"ERB",subLanguage:"xml", +contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>", +subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})() +;hljs.registerLanguage("erb",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js new file mode 100644 index 0000000..6bbaacd --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js @@ -0,0 +1,13 @@ +/*! `erlang-repl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex;return{ +name:"Erlang REPL",keywords:{built_in:"spawn spawn_link self", +keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor" +},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10 +},e.COMMENT("%","$"),{className:"number", +begin:"\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)", +relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +begin:n.concat(/\?(::)?/,/([A-Z]\w*)/,/((::)[A-Z]\w*)*/)},{begin:"->"},{ +begin:"ok"},{begin:"!"},{ +begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)", +relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}})() +;hljs.registerLanguage("erlang-repl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js new file mode 100644 index 0000000..effbd66 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js @@ -0,0 +1,27 @@ +/*! `erlang` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="[a-z'][a-zA-Z0-9_']*",r="("+n+":"+n+"|"+n+")",a={ +keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor", +literal:"false true"},i=e.COMMENT("%","$"),s={className:"number", +begin:"\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)", +relevance:0},c={begin:"fun\\s+"+n+"/\\d+"},t={begin:r+"\\(",end:"\\)", +returnBegin:!0,relevance:0,contains:[{begin:r,relevance:0},{begin:"\\(", +end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},d={begin:/\{/,end:/\}/, +relevance:0},o={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},l={ +begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},b={begin:"#"+e.UNDERSCORE_IDENT_RE, +relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE, +relevance:0},{begin:/\{/,end:/\}/,relevance:0}]},g={ +beginKeywords:"fun receive if try case",end:"end",keywords:a} +;g.contains=[i,c,e.inherit(e.APOS_STRING_MODE,{className:"" +}),g,t,e.QUOTE_STRING_MODE,s,d,o,l,b] +;const E=[i,c,g,t,e.QUOTE_STRING_MODE,s,d,o,l,b] +;t.contains[1].contains=E,d.contains=E,b.contains[1].contains=E;const u={ +className:"params",begin:"\\(",end:"\\)",contains:E};return{name:"Erlang", +aliases:["erl"],keywords:a,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))", +contains:[{className:"function",begin:"^"+n+"\\s*\\(",end:"->",returnBegin:!0, +illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[u,e.inherit(e.TITLE_MODE,{begin:n})], +starts:{end:";|\\.",keywords:a,contains:E}},i,{begin:"^-",end:"\\.",relevance:0, +excludeEnd:!0,returnBegin:!0,keywords:{$pattern:"-"+e.IDENT_RE, +keyword:["-module","-record","-undef","-export","-ifdef","-ifndef","-author","-copyright","-doc","-vsn","-import","-include","-include_lib","-compile","-define","-else","-endif","-file","-behaviour","-behavior","-spec"].map((e=>e+"|1.5")).join(" ") +},contains:[u]},s,e.QUOTE_STRING_MODE,b,o,l,d,{begin:/\.$/}]}}})() +;hljs.registerLanguage("erlang",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js new file mode 100644 index 0000000..0354c90 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js @@ -0,0 +1,10 @@ +/*! `excel` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var E=(()=>{"use strict";return E=>({name:"Excel formulae", +aliases:["xlsx","xls"],case_insensitive:!0,keywords:{$pattern:/[a-zA-Z][\w\.]*/, +built_in:["ABS","ACCRINT","ACCRINTM","ACOS","ACOSH","ACOT","ACOTH","AGGREGATE","ADDRESS","AMORDEGRC","AMORLINC","AND","ARABIC","AREAS","ASC","ASIN","ASINH","ATAN","ATAN2","ATANH","AVEDEV","AVERAGE","AVERAGEA","AVERAGEIF","AVERAGEIFS","BAHTTEXT","BASE","BESSELI","BESSELJ","BESSELK","BESSELY","BETADIST","BETA.DIST","BETAINV","BETA.INV","BIN2DEC","BIN2HEX","BIN2OCT","BINOMDIST","BINOM.DIST","BINOM.DIST.RANGE","BINOM.INV","BITAND","BITLSHIFT","BITOR","BITRSHIFT","BITXOR","CALL","CEILING","CEILING.MATH","CEILING.PRECISE","CELL","CHAR","CHIDIST","CHIINV","CHITEST","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","CHISQ.TEST","CHOOSE","CLEAN","CODE","COLUMN","COLUMNS","COMBIN","COMBINA","COMPLEX","CONCAT","CONCATENATE","CONFIDENCE","CONFIDENCE.NORM","CONFIDENCE.T","CONVERT","CORREL","COS","COSH","COT","COTH","COUNT","COUNTA","COUNTBLANK","COUNTIF","COUNTIFS","COUPDAYBS","COUPDAYS","COUPDAYSNC","COUPNCD","COUPNUM","COUPPCD","COVAR","COVARIANCE.P","COVARIANCE.S","CRITBINOM","CSC","CSCH","CUBEKPIMEMBER","CUBEMEMBER","CUBEMEMBERPROPERTY","CUBERANKEDMEMBER","CUBESET","CUBESETCOUNT","CUBEVALUE","CUMIPMT","CUMPRINC","DATE","DATEDIF","DATEVALUE","DAVERAGE","DAY","DAYS","DAYS360","DB","DBCS","DCOUNT","DCOUNTA","DDB","DEC2BIN","DEC2HEX","DEC2OCT","DECIMAL","DEGREES","DELTA","DEVSQ","DGET","DISC","DMAX","DMIN","DOLLAR","DOLLARDE","DOLLARFR","DPRODUCT","DSTDEV","DSTDEVP","DSUM","DURATION","DVAR","DVARP","EDATE","EFFECT","ENCODEURL","EOMONTH","ERF","ERF.PRECISE","ERFC","ERFC.PRECISE","ERROR.TYPE","EUROCONVERT","EVEN","EXACT","EXP","EXPON.DIST","EXPONDIST","FACT","FACTDOUBLE","FALSE|0","F.DIST","FDIST","F.DIST.RT","FILTERXML","FIND","FINDB","F.INV","F.INV.RT","FINV","FISHER","FISHERINV","FIXED","FLOOR","FLOOR.MATH","FLOOR.PRECISE","FORECAST","FORECAST.ETS","FORECAST.ETS.CONFINT","FORECAST.ETS.SEASONALITY","FORECAST.ETS.STAT","FORECAST.LINEAR","FORMULATEXT","FREQUENCY","F.TEST","FTEST","FV","FVSCHEDULE","GAMMA","GAMMA.DIST","GAMMADIST","GAMMA.INV","GAMMAINV","GAMMALN","GAMMALN.PRECISE","GAUSS","GCD","GEOMEAN","GESTEP","GETPIVOTDATA","GROWTH","HARMEAN","HEX2BIN","HEX2DEC","HEX2OCT","HLOOKUP","HOUR","HYPERLINK","HYPGEOM.DIST","HYPGEOMDIST","IF","IFERROR","IFNA","IFS","IMABS","IMAGINARY","IMARGUMENT","IMCONJUGATE","IMCOS","IMCOSH","IMCOT","IMCSC","IMCSCH","IMDIV","IMEXP","IMLN","IMLOG10","IMLOG2","IMPOWER","IMPRODUCT","IMREAL","IMSEC","IMSECH","IMSIN","IMSINH","IMSQRT","IMSUB","IMSUM","IMTAN","INDEX","INDIRECT","INFO","INT","INTERCEPT","INTRATE","IPMT","IRR","ISBLANK","ISERR","ISERROR","ISEVEN","ISFORMULA","ISLOGICAL","ISNA","ISNONTEXT","ISNUMBER","ISODD","ISREF","ISTEXT","ISO.CEILING","ISOWEEKNUM","ISPMT","JIS","KURT","LARGE","LCM","LEFT","LEFTB","LEN","LENB","LINEST","LN","LOG","LOG10","LOGEST","LOGINV","LOGNORM.DIST","LOGNORMDIST","LOGNORM.INV","LOOKUP","LOWER","MATCH","MAX","MAXA","MAXIFS","MDETERM","MDURATION","MEDIAN","MID","MIDBs","MIN","MINIFS","MINA","MINUTE","MINVERSE","MIRR","MMULT","MOD","MODE","MODE.MULT","MODE.SNGL","MONTH","MROUND","MULTINOMIAL","MUNIT","N","NA","NEGBINOM.DIST","NEGBINOMDIST","NETWORKDAYS","NETWORKDAYS.INTL","NOMINAL","NORM.DIST","NORMDIST","NORMINV","NORM.INV","NORM.S.DIST","NORMSDIST","NORM.S.INV","NORMSINV","NOT","NOW","NPER","NPV","NUMBERVALUE","OCT2BIN","OCT2DEC","OCT2HEX","ODD","ODDFPRICE","ODDFYIELD","ODDLPRICE","ODDLYIELD","OFFSET","OR","PDURATION","PEARSON","PERCENTILE.EXC","PERCENTILE.INC","PERCENTILE","PERCENTRANK.EXC","PERCENTRANK.INC","PERCENTRANK","PERMUT","PERMUTATIONA","PHI","PHONETIC","PI","PMT","POISSON.DIST","POISSON","POWER","PPMT","PRICE","PRICEDISC","PRICEMAT","PROB","PRODUCT","PROPER","PV","QUARTILE","QUARTILE.EXC","QUARTILE.INC","QUOTIENT","RADIANS","RAND","RANDBETWEEN","RANK.AVG","RANK.EQ","RANK","RATE","RECEIVED","REGISTER.ID","REPLACE","REPLACEB","REPT","RIGHT","RIGHTB","ROMAN","ROUND","ROUNDDOWN","ROUNDUP","ROW","ROWS","RRI","RSQ","RTD","SEARCH","SEARCHB","SEC","SECH","SECOND","SERIESSUM","SHEET","SHEETS","SIGN","SIN","SINH","SKEW","SKEW.P","SLN","SLOPE","SMALL","SQL.REQUEST","SQRT","SQRTPI","STANDARDIZE","STDEV","STDEV.P","STDEV.S","STDEVA","STDEVP","STDEVPA","STEYX","SUBSTITUTE","SUBTOTAL","SUM","SUMIF","SUMIFS","SUMPRODUCT","SUMSQ","SUMX2MY2","SUMX2PY2","SUMXMY2","SWITCH","SYD","T","TAN","TANH","TBILLEQ","TBILLPRICE","TBILLYIELD","T.DIST","T.DIST.2T","T.DIST.RT","TDIST","TEXT","TEXTJOIN","TIME","TIMEVALUE","T.INV","T.INV.2T","TINV","TODAY","TRANSPOSE","TREND","TRIM","TRIMMEAN","TRUE|0","TRUNC","T.TEST","TTEST","TYPE","UNICHAR","UNICODE","UPPER","VALUE","VAR","VAR.P","VAR.S","VARA","VARP","VARPA","VDB","VLOOKUP","WEBSERVICE","WEEKDAY","WEEKNUM","WEIBULL","WEIBULL.DIST","WORKDAY","WORKDAY.INTL","XIRR","XNPV","XOR","YEAR","YEARFRAC","YIELD","YIELDDISC","YIELDMAT","Z.TEST","ZTEST"] +},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{ +className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0, +relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0 +},E.BACKSLASH_ESCAPE,E.QUOTE_STRING_MODE,{className:"number", +begin:E.NUMBER_RE+"(%)?",relevance:0},E.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0, +excludeEnd:!0,illegal:/\n/})]})})();hljs.registerLanguage("excel",E)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js new file mode 100644 index 0000000..f2b9f3a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js @@ -0,0 +1,7 @@ +/*! `fix` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"FIX",contains:[{ +begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0, +returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/, +returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/, +excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0})})() +;hljs.registerLanguage("fix",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js new file mode 100644 index 0000000..d6f0f02 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js @@ -0,0 +1,10 @@ +/*! `flix` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Flix",keywords:{ +keyword:["case","class","def","else","enum","if","impl","import","in","lat","rel","index","let","match","namespace","switch","type","yield","with"], +literal:["true","false"]}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string", +begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"', +end:'"'}]},{className:"function",beginKeywords:"def",end:/[:={\[(\n;]/, +excludeEnd:!0,contains:[{className:"title",relevance:0, +begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/ +}]},e.C_NUMBER_MODE]})})();hljs.registerLanguage("flix",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js new file mode 100644 index 0000000..5c179de --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js @@ -0,0 +1,16 @@ +/*! `fortran` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={ +variants:[e.COMMENT("!","$",{relevance:0}),e.COMMENT("^C[ ]","$",{relevance:0 +}),e.COMMENT("^C$","$",{relevance:0})] +},t=/(_[a-z_\d]+)?/,i=/([de][+-]?\d+)?/,c={className:"number",variants:[{ +begin:n.concat(/\b\d+/,/\.(\d*)/,i,t)},{begin:n.concat(/\b\d+/,i,t)},{ +begin:n.concat(/\.\d+/,i,t)}],relevance:0},o={className:"function", +beginKeywords:"subroutine function program",illegal:"[${=\\n]", +contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]} +;return{name:"Fortran",case_insensitive:!0,aliases:["f90","f95"],keywords:{ +keyword:["kind","do","concurrent","local","shared","while","private","call","intrinsic","where","elsewhere","type","endtype","endmodule","endselect","endinterface","end","enddo","endif","if","forall","endforall","only","contains","default","return","stop","then","block","endblock","endassociate","public","subroutine|10","function","program",".and.",".or.",".not.",".le.",".eq.",".ge.",".gt.",".lt.","goto","save","else","use","module","select","case","access","blank","direct","exist","file","fmt","form","formatted","iostat","name","named","nextrec","number","opened","rec","recl","sequential","status","unformatted","unit","continue","format","pause","cycle","exit","c_null_char","c_alert","c_backspace","c_form_feed","flush","wait","decimal","round","iomsg","synchronous","nopass","non_overridable","pass","protected","volatile","abstract","extends","import","non_intrinsic","value","deferred","generic","final","enumerator","class","associate","bind","enum","c_int","c_short","c_long","c_long_long","c_signed_char","c_size_t","c_int8_t","c_int16_t","c_int32_t","c_int64_t","c_int_least8_t","c_int_least16_t","c_int_least32_t","c_int_least64_t","c_int_fast8_t","c_int_fast16_t","c_int_fast32_t","c_int_fast64_t","c_intmax_t","C_intptr_t","c_float","c_double","c_long_double","c_float_complex","c_double_complex","c_long_double_complex","c_bool","c_char","c_null_ptr","c_null_funptr","c_new_line","c_carriage_return","c_horizontal_tab","c_vertical_tab","iso_c_binding","c_loc","c_funloc","c_associated","c_f_pointer","c_ptr","c_funptr","iso_fortran_env","character_storage_size","error_unit","file_storage_size","input_unit","iostat_end","iostat_eor","numeric_storage_size","output_unit","c_f_procpointer","ieee_arithmetic","ieee_support_underflow_control","ieee_get_underflow_mode","ieee_set_underflow_mode","newunit","contiguous","recursive","pad","position","action","delim","readwrite","eor","advance","nml","interface","procedure","namelist","include","sequence","elemental","pure","impure","integer","real","character","complex","logical","codimension","dimension","allocatable|10","parameter","external","implicit|10","none","double","precision","assign","intent","optional","pointer","target","in","out","common","equivalence","data"], +literal:[".False.",".True."], +built_in:["alog","alog10","amax0","amax1","amin0","amin1","amod","cabs","ccos","cexp","clog","csin","csqrt","dabs","dacos","dasin","datan","datan2","dcos","dcosh","ddim","dexp","dint","dlog","dlog10","dmax1","dmin1","dmod","dnint","dsign","dsin","dsinh","dsqrt","dtan","dtanh","float","iabs","idim","idint","idnint","ifix","isign","max0","max1","min0","min1","sngl","algama","cdabs","cdcos","cdexp","cdlog","cdsin","cdsqrt","cqabs","cqcos","cqexp","cqlog","cqsin","cqsqrt","dcmplx","dconjg","derf","derfc","dfloat","dgamma","dimag","dlgama","iqint","qabs","qacos","qasin","qatan","qatan2","qcmplx","qconjg","qcos","qcosh","qdim","qerf","qerfc","qexp","qgamma","qimag","qlgama","qlog","qlog10","qmax1","qmin1","qmod","qnint","qsign","qsin","qsinh","qsqrt","qtan","qtanh","abs","acos","aimag","aint","anint","asin","atan","atan2","char","cmplx","conjg","cos","cosh","exp","ichar","index","int","log","log10","max","min","nint","sign","sin","sinh","sqrt","tan","tanh","print","write","dim","lge","lgt","lle","llt","mod","nullify","allocate","deallocate","adjustl","adjustr","all","allocated","any","associated","bit_size","btest","ceiling","count","cshift","date_and_time","digits","dot_product","eoshift","epsilon","exponent","floor","fraction","huge","iand","ibclr","ibits","ibset","ieor","ior","ishft","ishftc","lbound","len_trim","matmul","maxexponent","maxloc","maxval","merge","minexponent","minloc","minval","modulo","mvbits","nearest","pack","present","product","radix","random_number","random_seed","range","repeat","reshape","rrspacing","scale","scan","selected_int_kind","selected_real_kind","set_exponent","shape","size","spacing","spread","sum","system_clock","tiny","transpose","trim","ubound","unpack","verify","achar","iachar","transfer","dble","entry","dprod","cpu_time","command_argument_count","get_command","get_command_argument","get_environment_variable","is_iostat_end","ieee_arithmetic","ieee_support_underflow_control","ieee_get_underflow_mode","ieee_set_underflow_mode","is_iostat_eor","move_alloc","new_line","selected_char_kind","same_type_as","extends_type_of","acosh","asinh","atanh","bessel_j0","bessel_j1","bessel_jn","bessel_y0","bessel_y1","bessel_yn","erf","erfc","erfc_scaled","gamma","log_gamma","hypot","norm2","atomic_define","atomic_ref","execute_command_line","leadz","trailz","storage_size","merge_bits","bge","bgt","ble","blt","dshiftl","dshiftr","findloc","iall","iany","iparity","image_index","lcobound","ucobound","maskl","maskr","num_images","parity","popcnt","poppar","shifta","shiftl","shiftr","this_image","sync","change","team","co_broadcast","co_max","co_min","co_sum","co_reduce"] +},illegal:/\/\*/,contains:[{className:"string",relevance:0, +variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o,{begin:/^C\s*=(?!=)/, +relevance:0},a,c]}}})();hljs.registerLanguage("fortran",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js new file mode 100644 index 0000000..68c262e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js @@ -0,0 +1,35 @@ +/*! `fsharp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(e){return t("(?=",e,")")} +function t(...n){return n.map((n=>e(n))).join("")}function i(...n){const t=(e=>{ +const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(n);return"("+(t.capture?"":"?:")+n.map((n=>e(n))).join("|")+")"}return e=>{ +const a={scope:"keyword",match:/\b(yield|return|let|do|match|use)!/},s={ +type:["bool","byte","sbyte","int8","int16","int32","uint8","uint16","uint32","int","uint","int64","uint64","nativeint","unativeint","decimal","float","double","float32","single","char","string","unit","bigint","option","voption","list","array","seq","byref","exn","inref","nativeptr","obj","outref","voidptr"], +keyword:["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","finally","fixed","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","of","open","or","override","private","public","rec","return","static","struct","then","to","try","type","upcast","use","val","void","when","while","with","yield"], +literal:["true","false","null","Some","None","Ok","Error","infinity","infinityf","nan","nanf"], +built_in:["not","ref","raise","reraise","dict","readOnlyDict","set","enum","sizeof","typeof","typedefof","nameof","nullArg","invalidArg","invalidOp","id","fst","snd","ignore","lock","using","box","unbox","tryUnbox","printf","printfn","sprintf","eprintf","eprintfn","fprintf","fprintfn","failwith","failwithf"], +"variable.constant":["__LINE__","__SOURCE_DIRECTORY__","__SOURCE_FILE__"]},r={ +variants:[e.COMMENT(/\(\*(?!\))/,/\*\)/,{contains:["self"] +}),e.C_LINE_COMMENT_MODE]},o={match:t(/('|\^)/,e.UNDERSCORE_IDENT_RE), +scope:"symbol",relevance:0},c={scope:"computation-expression", +match:/\b[_a-z]\w*(?=\s*\{)/},l={ +begin:[/^\s*/,t(/#/,i("if","else","endif","line","nowarn","light","r","i","I","load","time","help","quit")),/\b/], +beginScope:{2:"meta"},end:n(/\s|$/)},f={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},u={scope:"string",begin:/"/, +end:/"/,contains:[e.BACKSLASH_ESCAPE]},p={scope:"string",begin:/@"/,end:/"/, +contains:[{match:/""/},e.BACKSLASH_ESCAPE]},d={scope:"subst",begin:/\{/, +end:/\}/,keywords:s},g={scope:"string",begin:/\$"/,end:/"/,contains:[{ +match:/\{\{/},{match:/\}\}/},e.BACKSLASH_ESCAPE,d]},b={scope:"string", +begin:/(\$@|@\$)"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},{match:/""/ +},e.BACKSLASH_ESCAPE,d]},m={scope:"string",begin:/\$"""/,end:/"""/,contains:[{ +match:/\{\{/},{match:/\}\}/},d],relevance:2},_={scope:"string", +match:t(/'/,i(/[^\\']/,/\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/),/'/) +};return d.contains=[b,g,p,u,_,a,r,c,l,f,o],{name:"F#",aliases:["fs","f#"], +keywords:s,illegal:/\/\*/,classNameAliases:{"computation-expression":"keyword"}, +contains:[a,{variants:[m,b,g,{scope:"string",begin:/"""/,end:/"""/,relevance:2 +},p,u,_]},r,{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{1:"keyword", +3:"title.class"},end:n(/\(|=|$/),contains:[o]},{scope:"meta",begin:/^\s*\[</, +excludeBegin:!0,end:n(/>\]/),relevance:2,contains:[{scope:"string",begin:/"/, +end:/"/},f]},c,l,f,o]}}})();hljs.registerLanguage("fsharp",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js new file mode 100644 index 0000000..ac0d211 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js @@ -0,0 +1,28 @@ +/*! `gams` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,n={ +keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes", +literal:"eps inf na", +built_in:"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart" +},i={className:"symbol",variants:[{begin:/=[lgenxc]=/},{begin:/\$/}]},s={ +className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}], +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},o={begin:"/",end:"/",keywords:n, +contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE] +},t=/[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/,r={ +begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$", +endsWithParent:!0,contains:[s,o,{className:"comment", +begin:a.concat(t,a.anyNumberOfTimes(a.concat(/[ ]+/,t))),relevance:0}]};return{ +name:"GAMS",aliases:["gms"],case_insensitive:!0,keywords:n, +contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta", +begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"keyword", +begin:"^\\$[a-z0-9]+"}] +},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{ +beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations", +end:";", +contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,r] +},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{ +beginKeywords:"table",end:"$",contains:[r] +},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE] +},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0, +contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params", +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},i]},e.C_NUMBER_MODE,i]}}})() +;hljs.registerLanguage("gams",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js new file mode 100644 index 0000000..8a7fdd9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js @@ -0,0 +1,36 @@ +/*! `gauss` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={ +keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv", +built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim", +literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR" +},a=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{ +keyword:"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline" +},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$", +keywords:{keyword:"include"},contains:[{className:"string",begin:'"',end:'"', +illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},n={ +begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type", +begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},s=[{className:"params",begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{ +className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,a,n] +}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},d=(t,r,n)=>{ +const d=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0, +contains:[].concat(s)},n||{}) +;return d.contains.push(o),d.contains.push(e.C_NUMBER_MODE), +d.contains.push(e.C_BLOCK_COMMENT_MODE),d.contains.push(a),d},l={ +className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},i={ +className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0 +},c={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t, +relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in", +begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},p={begin:/\(/,end:/\)/,relevance:0, +keywords:{built_in:t.built_in,literal:t.literal}, +contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,a,l,c,i,"self"]} +;return c.contains.push(p),{name:"GAUSS",aliases:["gss"],case_insensitive:!0, +keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/, +contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{ +className:"keyword", +begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/ +},d("proc keyword",";"),d("fn","="),{beginKeywords:"for threadfor",end:/;/, +relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,a,p]},{variants:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},c,n]}}})() +;hljs.registerLanguage("gauss",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js new file mode 100644 index 0000000..b173436 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js @@ -0,0 +1,16 @@ +/*! `gcode` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.inherit(e.C_NUMBER_MODE,{ +begin:"([-+]?((\\.\\d+)|(\\d+)(\\.\\d*)?))|"+e.C_NUMBER_RE +}),n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),a,e.inherit(e.APOS_STRING_MODE,{ +illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name", +begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name", +begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)", +end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{ +className:"built_in", +begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",contains:[a], +end:"\\]"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}] +;return{name:"G-code (ISO 6983)",aliases:["nc"],case_insensitive:!0,keywords:{ +$pattern:"[A-Z_][A-Z0-9_.]*", +keyword:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR" +},contains:[{className:"meta",begin:"%"},{className:"meta",begin:"([O])([0-9]+)" +}].concat(n)}}})();hljs.registerLanguage("gcode",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js new file mode 100644 index 0000000..1ba0dfb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js @@ -0,0 +1,8 @@ +/*! `gherkin` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Gherkin",aliases:["feature"], +keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When", +contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta", +begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string", +begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{ +className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]})})() +;hljs.registerLanguage("gherkin",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js new file mode 100644 index 0000000..8ac2fae --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js @@ -0,0 +1,8 @@ +/*! `glsl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"GLSL",keywords:{ +keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly", +type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void", +built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow", +literal:"true false"},illegal:'"', +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"#",end:"$"}]})})();hljs.registerLanguage("glsl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js new file mode 100644 index 0000000..0335007 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js @@ -0,0 +1,11 @@ +/*! `gml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"GML",case_insensitive:!1, +keywords:{ +keyword:["begin","end","if","then","else","while","do","for","break","continue","with","until","repeat","exit","and","or","xor","not","return","mod","div","switch","case","default","var","globalvar","enum","function","constructor","delete","#macro","#region","#endregion"], +built_in:["is_real","is_string","is_array","is_undefined","is_int32","is_int64","is_ptr","is_vec3","is_vec4","is_matrix","is_bool","is_method","is_struct","is_infinity","is_nan","is_numeric","typeof","variable_global_exists","variable_global_get","variable_global_set","variable_instance_exists","variable_instance_get","variable_instance_set","variable_instance_get_names","variable_struct_exists","variable_struct_get","variable_struct_get_names","variable_struct_names_count","variable_struct_remove","variable_struct_set","array_delete","array_insert","array_length","array_length_1d","array_length_2d","array_height_2d","array_equals","array_create","array_copy","array_pop","array_push","array_resize","array_sort","random","random_range","irandom","irandom_range","random_set_seed","random_get_seed","randomize","randomise","choose","abs","round","floor","ceil","sign","frac","sqrt","sqr","exp","ln","log2","log10","sin","cos","tan","arcsin","arccos","arctan","arctan2","dsin","dcos","dtan","darcsin","darccos","darctan","darctan2","degtorad","radtodeg","power","logn","min","max","mean","median","clamp","lerp","dot_product","dot_product_3d","dot_product_normalised","dot_product_3d_normalised","dot_product_normalized","dot_product_3d_normalized","math_set_epsilon","math_get_epsilon","angle_difference","point_distance_3d","point_distance","point_direction","lengthdir_x","lengthdir_y","real","string","int64","ptr","string_format","chr","ansi_char","ord","string_length","string_byte_length","string_pos","string_copy","string_char_at","string_ord_at","string_byte_at","string_set_byte_at","string_delete","string_insert","string_lower","string_upper","string_repeat","string_letters","string_digits","string_lettersdigits","string_replace","string_replace_all","string_count","string_hash_to_newline","clipboard_has_text","clipboard_set_text","clipboard_get_text","date_current_datetime","date_create_datetime","date_valid_datetime","date_inc_year","date_inc_month","date_inc_week","date_inc_day","date_inc_hour","date_inc_minute","date_inc_second","date_get_year","date_get_month","date_get_week","date_get_day","date_get_hour","date_get_minute","date_get_second","date_get_weekday","date_get_day_of_year","date_get_hour_of_year","date_get_minute_of_year","date_get_second_of_year","date_year_span","date_month_span","date_week_span","date_day_span","date_hour_span","date_minute_span","date_second_span","date_compare_datetime","date_compare_date","date_compare_time","date_date_of","date_time_of","date_datetime_string","date_date_string","date_time_string","date_days_in_month","date_days_in_year","date_leap_year","date_is_today","date_set_timezone","date_get_timezone","game_set_speed","game_get_speed","motion_set","motion_add","place_free","place_empty","place_meeting","place_snapped","move_random","move_snap","move_towards_point","move_contact_solid","move_contact_all","move_outside_solid","move_outside_all","move_bounce_solid","move_bounce_all","move_wrap","distance_to_point","distance_to_object","position_empty","position_meeting","path_start","path_end","mp_linear_step","mp_potential_step","mp_linear_step_object","mp_potential_step_object","mp_potential_settings","mp_linear_path","mp_potential_path","mp_linear_path_object","mp_potential_path_object","mp_grid_create","mp_grid_destroy","mp_grid_clear_all","mp_grid_clear_cell","mp_grid_clear_rectangle","mp_grid_add_cell","mp_grid_get_cell","mp_grid_add_rectangle","mp_grid_add_instances","mp_grid_path","mp_grid_draw","mp_grid_to_ds_grid","collision_point","collision_rectangle","collision_circle","collision_ellipse","collision_line","collision_point_list","collision_rectangle_list","collision_circle_list","collision_ellipse_list","collision_line_list","instance_position_list","instance_place_list","point_in_rectangle","point_in_triangle","point_in_circle","rectangle_in_rectangle","rectangle_in_triangle","rectangle_in_circle","instance_find","instance_exists","instance_number","instance_position","instance_nearest","instance_furthest","instance_place","instance_create_depth","instance_create_layer","instance_copy","instance_change","instance_destroy","position_destroy","position_change","instance_id_get","instance_deactivate_all","instance_deactivate_object","instance_deactivate_region","instance_activate_all","instance_activate_object","instance_activate_region","room_goto","room_goto_previous","room_goto_next","room_previous","room_next","room_restart","game_end","game_restart","game_load","game_save","game_save_buffer","game_load_buffer","event_perform","event_user","event_perform_object","event_inherited","show_debug_message","show_debug_overlay","debug_event","debug_get_callstack","alarm_get","alarm_set","font_texture_page_size","keyboard_set_map","keyboard_get_map","keyboard_unset_map","keyboard_check","keyboard_check_pressed","keyboard_check_released","keyboard_check_direct","keyboard_get_numlock","keyboard_set_numlock","keyboard_key_press","keyboard_key_release","keyboard_clear","io_clear","mouse_check_button","mouse_check_button_pressed","mouse_check_button_released","mouse_wheel_up","mouse_wheel_down","mouse_clear","draw_self","draw_sprite","draw_sprite_pos","draw_sprite_ext","draw_sprite_stretched","draw_sprite_stretched_ext","draw_sprite_tiled","draw_sprite_tiled_ext","draw_sprite_part","draw_sprite_part_ext","draw_sprite_general","draw_clear","draw_clear_alpha","draw_point","draw_line","draw_line_width","draw_rectangle","draw_roundrect","draw_roundrect_ext","draw_triangle","draw_circle","draw_ellipse","draw_set_circle_precision","draw_arrow","draw_button","draw_path","draw_healthbar","draw_getpixel","draw_getpixel_ext","draw_set_colour","draw_set_color","draw_set_alpha","draw_get_colour","draw_get_color","draw_get_alpha","merge_colour","make_colour_rgb","make_colour_hsv","colour_get_red","colour_get_green","colour_get_blue","colour_get_hue","colour_get_saturation","colour_get_value","merge_color","make_color_rgb","make_color_hsv","color_get_red","color_get_green","color_get_blue","color_get_hue","color_get_saturation","color_get_value","merge_color","screen_save","screen_save_part","draw_set_font","draw_set_halign","draw_set_valign","draw_text","draw_text_ext","string_width","string_height","string_width_ext","string_height_ext","draw_text_transformed","draw_text_ext_transformed","draw_text_colour","draw_text_ext_colour","draw_text_transformed_colour","draw_text_ext_transformed_colour","draw_text_color","draw_text_ext_color","draw_text_transformed_color","draw_text_ext_transformed_color","draw_point_colour","draw_line_colour","draw_line_width_colour","draw_rectangle_colour","draw_roundrect_colour","draw_roundrect_colour_ext","draw_triangle_colour","draw_circle_colour","draw_ellipse_colour","draw_point_color","draw_line_color","draw_line_width_color","draw_rectangle_color","draw_roundrect_color","draw_roundrect_color_ext","draw_triangle_color","draw_circle_color","draw_ellipse_color","draw_primitive_begin","draw_vertex","draw_vertex_colour","draw_vertex_color","draw_primitive_end","sprite_get_uvs","font_get_uvs","sprite_get_texture","font_get_texture","texture_get_width","texture_get_height","texture_get_uvs","draw_primitive_begin_texture","draw_vertex_texture","draw_vertex_texture_colour","draw_vertex_texture_color","texture_global_scale","surface_create","surface_create_ext","surface_resize","surface_free","surface_exists","surface_get_width","surface_get_height","surface_get_texture","surface_set_target","surface_set_target_ext","surface_reset_target","surface_depth_disable","surface_get_depth_disable","draw_surface","draw_surface_stretched","draw_surface_tiled","draw_surface_part","draw_surface_ext","draw_surface_stretched_ext","draw_surface_tiled_ext","draw_surface_part_ext","draw_surface_general","surface_getpixel","surface_getpixel_ext","surface_save","surface_save_part","surface_copy","surface_copy_part","application_surface_draw_enable","application_get_position","application_surface_enable","application_surface_is_enabled","display_get_width","display_get_height","display_get_orientation","display_get_gui_width","display_get_gui_height","display_reset","display_mouse_get_x","display_mouse_get_y","display_mouse_set","display_set_ui_visibility","window_set_fullscreen","window_get_fullscreen","window_set_caption","window_set_min_width","window_set_max_width","window_set_min_height","window_set_max_height","window_get_visible_rects","window_get_caption","window_set_cursor","window_get_cursor","window_set_colour","window_get_colour","window_set_color","window_get_color","window_set_position","window_set_size","window_set_rectangle","window_center","window_get_x","window_get_y","window_get_width","window_get_height","window_mouse_get_x","window_mouse_get_y","window_mouse_set","window_view_mouse_get_x","window_view_mouse_get_y","window_views_mouse_get_x","window_views_mouse_get_y","audio_listener_position","audio_listener_velocity","audio_listener_orientation","audio_emitter_position","audio_emitter_create","audio_emitter_free","audio_emitter_exists","audio_emitter_pitch","audio_emitter_velocity","audio_emitter_falloff","audio_emitter_gain","audio_play_sound","audio_play_sound_on","audio_play_sound_at","audio_stop_sound","audio_resume_music","audio_music_is_playing","audio_resume_sound","audio_pause_sound","audio_pause_music","audio_channel_num","audio_sound_length","audio_get_type","audio_falloff_set_model","audio_play_music","audio_stop_music","audio_master_gain","audio_music_gain","audio_sound_gain","audio_sound_pitch","audio_stop_all","audio_resume_all","audio_pause_all","audio_is_playing","audio_is_paused","audio_exists","audio_sound_set_track_position","audio_sound_get_track_position","audio_emitter_get_gain","audio_emitter_get_pitch","audio_emitter_get_x","audio_emitter_get_y","audio_emitter_get_z","audio_emitter_get_vx","audio_emitter_get_vy","audio_emitter_get_vz","audio_listener_set_position","audio_listener_set_velocity","audio_listener_set_orientation","audio_listener_get_data","audio_set_master_gain","audio_get_master_gain","audio_sound_get_gain","audio_sound_get_pitch","audio_get_name","audio_sound_set_track_position","audio_sound_get_track_position","audio_create_stream","audio_destroy_stream","audio_create_sync_group","audio_destroy_sync_group","audio_play_in_sync_group","audio_start_sync_group","audio_stop_sync_group","audio_pause_sync_group","audio_resume_sync_group","audio_sync_group_get_track_pos","audio_sync_group_debug","audio_sync_group_is_playing","audio_debug","audio_group_load","audio_group_unload","audio_group_is_loaded","audio_group_load_progress","audio_group_name","audio_group_stop_all","audio_group_set_gain","audio_create_buffer_sound","audio_free_buffer_sound","audio_create_play_queue","audio_free_play_queue","audio_queue_sound","audio_get_recorder_count","audio_get_recorder_info","audio_start_recording","audio_stop_recording","audio_sound_get_listener_mask","audio_emitter_get_listener_mask","audio_get_listener_mask","audio_sound_set_listener_mask","audio_emitter_set_listener_mask","audio_set_listener_mask","audio_get_listener_count","audio_get_listener_info","audio_system","show_message","show_message_async","clickable_add","clickable_add_ext","clickable_change","clickable_change_ext","clickable_delete","clickable_exists","clickable_set_style","show_question","show_question_async","get_integer","get_string","get_integer_async","get_string_async","get_login_async","get_open_filename","get_save_filename","get_open_filename_ext","get_save_filename_ext","show_error","highscore_clear","highscore_add","highscore_value","highscore_name","draw_highscore","sprite_exists","sprite_get_name","sprite_get_number","sprite_get_width","sprite_get_height","sprite_get_xoffset","sprite_get_yoffset","sprite_get_bbox_left","sprite_get_bbox_right","sprite_get_bbox_top","sprite_get_bbox_bottom","sprite_save","sprite_save_strip","sprite_set_cache_size","sprite_set_cache_size_ext","sprite_get_tpe","sprite_prefetch","sprite_prefetch_multi","sprite_flush","sprite_flush_multi","sprite_set_speed","sprite_get_speed_type","sprite_get_speed","font_exists","font_get_name","font_get_fontname","font_get_bold","font_get_italic","font_get_first","font_get_last","font_get_size","font_set_cache_size","path_exists","path_get_name","path_get_length","path_get_time","path_get_kind","path_get_closed","path_get_precision","path_get_number","path_get_point_x","path_get_point_y","path_get_point_speed","path_get_x","path_get_y","path_get_speed","script_exists","script_get_name","timeline_add","timeline_delete","timeline_clear","timeline_exists","timeline_get_name","timeline_moment_clear","timeline_moment_add_script","timeline_size","timeline_max_moment","object_exists","object_get_name","object_get_sprite","object_get_solid","object_get_visible","object_get_persistent","object_get_mask","object_get_parent","object_get_physics","object_is_ancestor","room_exists","room_get_name","sprite_set_offset","sprite_duplicate","sprite_assign","sprite_merge","sprite_add","sprite_replace","sprite_create_from_surface","sprite_add_from_surface","sprite_delete","sprite_set_alpha_from_sprite","sprite_collision_mask","font_add_enable_aa","font_add_get_enable_aa","font_add","font_add_sprite","font_add_sprite_ext","font_replace","font_replace_sprite","font_replace_sprite_ext","font_delete","path_set_kind","path_set_closed","path_set_precision","path_add","path_assign","path_duplicate","path_append","path_delete","path_add_point","path_insert_point","path_change_point","path_delete_point","path_clear_points","path_reverse","path_mirror","path_flip","path_rotate","path_rescale","path_shift","script_execute","object_set_sprite","object_set_solid","object_set_visible","object_set_persistent","object_set_mask","room_set_width","room_set_height","room_set_persistent","room_set_background_colour","room_set_background_color","room_set_view","room_set_viewport","room_get_viewport","room_set_view_enabled","room_add","room_duplicate","room_assign","room_instance_add","room_instance_clear","room_get_camera","room_set_camera","asset_get_index","asset_get_type","file_text_open_from_string","file_text_open_read","file_text_open_write","file_text_open_append","file_text_close","file_text_write_string","file_text_write_real","file_text_writeln","file_text_read_string","file_text_read_real","file_text_readln","file_text_eof","file_text_eoln","file_exists","file_delete","file_rename","file_copy","directory_exists","directory_create","directory_destroy","file_find_first","file_find_next","file_find_close","file_attributes","filename_name","filename_path","filename_dir","filename_drive","filename_ext","filename_change_ext","file_bin_open","file_bin_rewrite","file_bin_close","file_bin_position","file_bin_size","file_bin_seek","file_bin_write_byte","file_bin_read_byte","parameter_count","parameter_string","environment_get_variable","ini_open_from_string","ini_open","ini_close","ini_read_string","ini_read_real","ini_write_string","ini_write_real","ini_key_exists","ini_section_exists","ini_key_delete","ini_section_delete","ds_set_precision","ds_exists","ds_stack_create","ds_stack_destroy","ds_stack_clear","ds_stack_copy","ds_stack_size","ds_stack_empty","ds_stack_push","ds_stack_pop","ds_stack_top","ds_stack_write","ds_stack_read","ds_queue_create","ds_queue_destroy","ds_queue_clear","ds_queue_copy","ds_queue_size","ds_queue_empty","ds_queue_enqueue","ds_queue_dequeue","ds_queue_head","ds_queue_tail","ds_queue_write","ds_queue_read","ds_list_create","ds_list_destroy","ds_list_clear","ds_list_copy","ds_list_size","ds_list_empty","ds_list_add","ds_list_insert","ds_list_replace","ds_list_delete","ds_list_find_index","ds_list_find_value","ds_list_mark_as_list","ds_list_mark_as_map","ds_list_sort","ds_list_shuffle","ds_list_write","ds_list_read","ds_list_set","ds_map_create","ds_map_destroy","ds_map_clear","ds_map_copy","ds_map_size","ds_map_empty","ds_map_add","ds_map_add_list","ds_map_add_map","ds_map_replace","ds_map_replace_map","ds_map_replace_list","ds_map_delete","ds_map_exists","ds_map_find_value","ds_map_find_previous","ds_map_find_next","ds_map_find_first","ds_map_find_last","ds_map_write","ds_map_read","ds_map_secure_save","ds_map_secure_load","ds_map_secure_load_buffer","ds_map_secure_save_buffer","ds_map_set","ds_priority_create","ds_priority_destroy","ds_priority_clear","ds_priority_copy","ds_priority_size","ds_priority_empty","ds_priority_add","ds_priority_change_priority","ds_priority_find_priority","ds_priority_delete_value","ds_priority_delete_min","ds_priority_find_min","ds_priority_delete_max","ds_priority_find_max","ds_priority_write","ds_priority_read","ds_grid_create","ds_grid_destroy","ds_grid_copy","ds_grid_resize","ds_grid_width","ds_grid_height","ds_grid_clear","ds_grid_set","ds_grid_add","ds_grid_multiply","ds_grid_set_region","ds_grid_add_region","ds_grid_multiply_region","ds_grid_set_disk","ds_grid_add_disk","ds_grid_multiply_disk","ds_grid_set_grid_region","ds_grid_add_grid_region","ds_grid_multiply_grid_region","ds_grid_get","ds_grid_get_sum","ds_grid_get_max","ds_grid_get_min","ds_grid_get_mean","ds_grid_get_disk_sum","ds_grid_get_disk_min","ds_grid_get_disk_max","ds_grid_get_disk_mean","ds_grid_value_exists","ds_grid_value_x","ds_grid_value_y","ds_grid_value_disk_exists","ds_grid_value_disk_x","ds_grid_value_disk_y","ds_grid_shuffle","ds_grid_write","ds_grid_read","ds_grid_sort","ds_grid_set","ds_grid_get","effect_create_below","effect_create_above","effect_clear","part_type_create","part_type_destroy","part_type_exists","part_type_clear","part_type_shape","part_type_sprite","part_type_size","part_type_scale","part_type_orientation","part_type_life","part_type_step","part_type_death","part_type_speed","part_type_direction","part_type_gravity","part_type_colour1","part_type_colour2","part_type_colour3","part_type_colour_mix","part_type_colour_rgb","part_type_colour_hsv","part_type_color1","part_type_color2","part_type_color3","part_type_color_mix","part_type_color_rgb","part_type_color_hsv","part_type_alpha1","part_type_alpha2","part_type_alpha3","part_type_blend","part_system_create","part_system_create_layer","part_system_destroy","part_system_exists","part_system_clear","part_system_draw_order","part_system_depth","part_system_position","part_system_automatic_update","part_system_automatic_draw","part_system_update","part_system_drawit","part_system_get_layer","part_system_layer","part_particles_create","part_particles_create_colour","part_particles_create_color","part_particles_clear","part_particles_count","part_emitter_create","part_emitter_destroy","part_emitter_destroy_all","part_emitter_exists","part_emitter_clear","part_emitter_region","part_emitter_burst","part_emitter_stream","external_call","external_define","external_free","window_handle","window_device","matrix_get","matrix_set","matrix_build_identity","matrix_build","matrix_build_lookat","matrix_build_projection_ortho","matrix_build_projection_perspective","matrix_build_projection_perspective_fov","matrix_multiply","matrix_transform_vertex","matrix_stack_push","matrix_stack_pop","matrix_stack_multiply","matrix_stack_set","matrix_stack_clear","matrix_stack_top","matrix_stack_is_empty","browser_input_capture","os_get_config","os_get_info","os_get_language","os_get_region","os_lock_orientation","display_get_dpi_x","display_get_dpi_y","display_set_gui_size","display_set_gui_maximise","display_set_gui_maximize","device_mouse_dbclick_enable","display_set_timing_method","display_get_timing_method","display_set_sleep_margin","display_get_sleep_margin","virtual_key_add","virtual_key_hide","virtual_key_delete","virtual_key_show","draw_enable_drawevent","draw_enable_swf_aa","draw_set_swf_aa_level","draw_get_swf_aa_level","draw_texture_flush","draw_flush","gpu_set_blendenable","gpu_set_ztestenable","gpu_set_zfunc","gpu_set_zwriteenable","gpu_set_lightingenable","gpu_set_fog","gpu_set_cullmode","gpu_set_blendmode","gpu_set_blendmode_ext","gpu_set_blendmode_ext_sepalpha","gpu_set_colorwriteenable","gpu_set_colourwriteenable","gpu_set_alphatestenable","gpu_set_alphatestref","gpu_set_alphatestfunc","gpu_set_texfilter","gpu_set_texfilter_ext","gpu_set_texrepeat","gpu_set_texrepeat_ext","gpu_set_tex_filter","gpu_set_tex_filter_ext","gpu_set_tex_repeat","gpu_set_tex_repeat_ext","gpu_set_tex_mip_filter","gpu_set_tex_mip_filter_ext","gpu_set_tex_mip_bias","gpu_set_tex_mip_bias_ext","gpu_set_tex_min_mip","gpu_set_tex_min_mip_ext","gpu_set_tex_max_mip","gpu_set_tex_max_mip_ext","gpu_set_tex_max_aniso","gpu_set_tex_max_aniso_ext","gpu_set_tex_mip_enable","gpu_set_tex_mip_enable_ext","gpu_get_blendenable","gpu_get_ztestenable","gpu_get_zfunc","gpu_get_zwriteenable","gpu_get_lightingenable","gpu_get_fog","gpu_get_cullmode","gpu_get_blendmode","gpu_get_blendmode_ext","gpu_get_blendmode_ext_sepalpha","gpu_get_blendmode_src","gpu_get_blendmode_dest","gpu_get_blendmode_srcalpha","gpu_get_blendmode_destalpha","gpu_get_colorwriteenable","gpu_get_colourwriteenable","gpu_get_alphatestenable","gpu_get_alphatestref","gpu_get_alphatestfunc","gpu_get_texfilter","gpu_get_texfilter_ext","gpu_get_texrepeat","gpu_get_texrepeat_ext","gpu_get_tex_filter","gpu_get_tex_filter_ext","gpu_get_tex_repeat","gpu_get_tex_repeat_ext","gpu_get_tex_mip_filter","gpu_get_tex_mip_filter_ext","gpu_get_tex_mip_bias","gpu_get_tex_mip_bias_ext","gpu_get_tex_min_mip","gpu_get_tex_min_mip_ext","gpu_get_tex_max_mip","gpu_get_tex_max_mip_ext","gpu_get_tex_max_aniso","gpu_get_tex_max_aniso_ext","gpu_get_tex_mip_enable","gpu_get_tex_mip_enable_ext","gpu_push_state","gpu_pop_state","gpu_get_state","gpu_set_state","draw_light_define_ambient","draw_light_define_direction","draw_light_define_point","draw_light_enable","draw_set_lighting","draw_light_get_ambient","draw_light_get","draw_get_lighting","shop_leave_rating","url_get_domain","url_open","url_open_ext","url_open_full","get_timer","achievement_login","achievement_logout","achievement_post","achievement_increment","achievement_post_score","achievement_available","achievement_show_achievements","achievement_show_leaderboards","achievement_load_friends","achievement_load_leaderboard","achievement_send_challenge","achievement_load_progress","achievement_reset","achievement_login_status","achievement_get_pic","achievement_show_challenge_notifications","achievement_get_challenges","achievement_event","achievement_show","achievement_get_info","cloud_file_save","cloud_string_save","cloud_synchronise","ads_enable","ads_disable","ads_setup","ads_engagement_launch","ads_engagement_available","ads_engagement_active","ads_event","ads_event_preload","ads_set_reward_callback","ads_get_display_height","ads_get_display_width","ads_move","ads_interstitial_available","ads_interstitial_display","device_get_tilt_x","device_get_tilt_y","device_get_tilt_z","device_is_keypad_open","device_mouse_check_button","device_mouse_check_button_pressed","device_mouse_check_button_released","device_mouse_x","device_mouse_y","device_mouse_raw_x","device_mouse_raw_y","device_mouse_x_to_gui","device_mouse_y_to_gui","iap_activate","iap_status","iap_enumerate_products","iap_restore_all","iap_acquire","iap_consume","iap_product_details","iap_purchase_details","facebook_init","facebook_login","facebook_status","facebook_graph_request","facebook_dialog","facebook_logout","facebook_launch_offerwall","facebook_post_message","facebook_send_invite","facebook_user_id","facebook_accesstoken","facebook_check_permission","facebook_request_read_permissions","facebook_request_publish_permissions","gamepad_is_supported","gamepad_get_device_count","gamepad_is_connected","gamepad_get_description","gamepad_get_button_threshold","gamepad_set_button_threshold","gamepad_get_axis_deadzone","gamepad_set_axis_deadzone","gamepad_button_count","gamepad_button_check","gamepad_button_check_pressed","gamepad_button_check_released","gamepad_button_value","gamepad_axis_count","gamepad_axis_value","gamepad_set_vibration","gamepad_set_colour","gamepad_set_color","os_is_paused","window_has_focus","code_is_compiled","http_get","http_get_file","http_post_string","http_request","json_encode","json_decode","zip_unzip","load_csv","base64_encode","base64_decode","md5_string_unicode","md5_string_utf8","md5_file","os_is_network_connected","sha1_string_unicode","sha1_string_utf8","sha1_file","os_powersave_enable","analytics_event","analytics_event_ext","win8_livetile_tile_notification","win8_livetile_tile_clear","win8_livetile_badge_notification","win8_livetile_badge_clear","win8_livetile_queue_enable","win8_secondarytile_pin","win8_secondarytile_badge_notification","win8_secondarytile_delete","win8_livetile_notification_begin","win8_livetile_notification_secondary_begin","win8_livetile_notification_expiry","win8_livetile_notification_tag","win8_livetile_notification_text_add","win8_livetile_notification_image_add","win8_livetile_notification_end","win8_appbar_enable","win8_appbar_add_element","win8_appbar_remove_element","win8_settingscharm_add_entry","win8_settingscharm_add_html_entry","win8_settingscharm_add_xaml_entry","win8_settingscharm_set_xaml_property","win8_settingscharm_get_xaml_property","win8_settingscharm_remove_entry","win8_share_image","win8_share_screenshot","win8_share_file","win8_share_url","win8_share_text","win8_search_enable","win8_search_disable","win8_search_add_suggestions","win8_device_touchscreen_available","win8_license_initialize_sandbox","win8_license_trial_version","winphone_license_trial_version","winphone_tile_title","winphone_tile_count","winphone_tile_back_title","winphone_tile_back_content","winphone_tile_back_content_wide","winphone_tile_front_image","winphone_tile_front_image_small","winphone_tile_front_image_wide","winphone_tile_back_image","winphone_tile_back_image_wide","winphone_tile_background_colour","winphone_tile_background_color","winphone_tile_icon_image","winphone_tile_small_icon_image","winphone_tile_wide_content","winphone_tile_cycle_images","winphone_tile_small_background_image","physics_world_create","physics_world_gravity","physics_world_update_speed","physics_world_update_iterations","physics_world_draw_debug","physics_pause_enable","physics_fixture_create","physics_fixture_set_kinematic","physics_fixture_set_density","physics_fixture_set_awake","physics_fixture_set_restitution","physics_fixture_set_friction","physics_fixture_set_collision_group","physics_fixture_set_sensor","physics_fixture_set_linear_damping","physics_fixture_set_angular_damping","physics_fixture_set_circle_shape","physics_fixture_set_box_shape","physics_fixture_set_edge_shape","physics_fixture_set_polygon_shape","physics_fixture_set_chain_shape","physics_fixture_add_point","physics_fixture_bind","physics_fixture_bind_ext","physics_fixture_delete","physics_apply_force","physics_apply_impulse","physics_apply_angular_impulse","physics_apply_local_force","physics_apply_local_impulse","physics_apply_torque","physics_mass_properties","physics_draw_debug","physics_test_overlap","physics_remove_fixture","physics_set_friction","physics_set_density","physics_set_restitution","physics_get_friction","physics_get_density","physics_get_restitution","physics_joint_distance_create","physics_joint_rope_create","physics_joint_revolute_create","physics_joint_prismatic_create","physics_joint_pulley_create","physics_joint_wheel_create","physics_joint_weld_create","physics_joint_friction_create","physics_joint_gear_create","physics_joint_enable_motor","physics_joint_get_value","physics_joint_set_value","physics_joint_delete","physics_particle_create","physics_particle_delete","physics_particle_delete_region_circle","physics_particle_delete_region_box","physics_particle_delete_region_poly","physics_particle_set_flags","physics_particle_set_category_flags","physics_particle_draw","physics_particle_draw_ext","physics_particle_count","physics_particle_get_data","physics_particle_get_data_particle","physics_particle_group_begin","physics_particle_group_circle","physics_particle_group_box","physics_particle_group_polygon","physics_particle_group_add_point","physics_particle_group_end","physics_particle_group_join","physics_particle_group_delete","physics_particle_group_count","physics_particle_group_get_data","physics_particle_group_get_mass","physics_particle_group_get_inertia","physics_particle_group_get_centre_x","physics_particle_group_get_centre_y","physics_particle_group_get_vel_x","physics_particle_group_get_vel_y","physics_particle_group_get_ang_vel","physics_particle_group_get_x","physics_particle_group_get_y","physics_particle_group_get_angle","physics_particle_set_group_flags","physics_particle_get_group_flags","physics_particle_get_max_count","physics_particle_get_radius","physics_particle_get_density","physics_particle_get_damping","physics_particle_get_gravity_scale","physics_particle_set_max_count","physics_particle_set_radius","physics_particle_set_density","physics_particle_set_damping","physics_particle_set_gravity_scale","network_create_socket","network_create_socket_ext","network_create_server","network_create_server_raw","network_connect","network_connect_raw","network_send_packet","network_send_raw","network_send_broadcast","network_send_udp","network_send_udp_raw","network_set_timeout","network_set_config","network_resolve","network_destroy","buffer_create","buffer_write","buffer_read","buffer_seek","buffer_get_surface","buffer_set_surface","buffer_delete","buffer_exists","buffer_get_type","buffer_get_alignment","buffer_poke","buffer_peek","buffer_save","buffer_save_ext","buffer_load","buffer_load_ext","buffer_load_partial","buffer_copy","buffer_fill","buffer_get_size","buffer_tell","buffer_resize","buffer_md5","buffer_sha1","buffer_base64_encode","buffer_base64_decode","buffer_base64_decode_ext","buffer_sizeof","buffer_get_address","buffer_create_from_vertex_buffer","buffer_create_from_vertex_buffer_ext","buffer_copy_from_vertex_buffer","buffer_async_group_begin","buffer_async_group_option","buffer_async_group_end","buffer_load_async","buffer_save_async","gml_release_mode","gml_pragma","steam_activate_overlay","steam_is_overlay_enabled","steam_is_overlay_activated","steam_get_persona_name","steam_initialised","steam_is_cloud_enabled_for_app","steam_is_cloud_enabled_for_account","steam_file_persisted","steam_get_quota_total","steam_get_quota_free","steam_file_write","steam_file_write_file","steam_file_read","steam_file_delete","steam_file_exists","steam_file_size","steam_file_share","steam_is_screenshot_requested","steam_send_screenshot","steam_is_user_logged_on","steam_get_user_steam_id","steam_user_owns_dlc","steam_user_installed_dlc","steam_set_achievement","steam_get_achievement","steam_clear_achievement","steam_set_stat_int","steam_set_stat_float","steam_set_stat_avg_rate","steam_get_stat_int","steam_get_stat_float","steam_get_stat_avg_rate","steam_reset_all_stats","steam_reset_all_stats_achievements","steam_stats_ready","steam_create_leaderboard","steam_upload_score","steam_upload_score_ext","steam_download_scores_around_user","steam_download_scores","steam_download_friends_scores","steam_upload_score_buffer","steam_upload_score_buffer_ext","steam_current_game_language","steam_available_languages","steam_activate_overlay_browser","steam_activate_overlay_user","steam_activate_overlay_store","steam_get_user_persona_name","steam_get_app_id","steam_get_user_account_id","steam_ugc_download","steam_ugc_create_item","steam_ugc_start_item_update","steam_ugc_set_item_title","steam_ugc_set_item_description","steam_ugc_set_item_visibility","steam_ugc_set_item_tags","steam_ugc_set_item_content","steam_ugc_set_item_preview","steam_ugc_submit_item_update","steam_ugc_get_item_update_progress","steam_ugc_subscribe_item","steam_ugc_unsubscribe_item","steam_ugc_num_subscribed_items","steam_ugc_get_subscribed_items","steam_ugc_get_item_install_info","steam_ugc_get_item_update_info","steam_ugc_request_item_details","steam_ugc_create_query_user","steam_ugc_create_query_user_ex","steam_ugc_create_query_all","steam_ugc_create_query_all_ex","steam_ugc_query_set_cloud_filename_filter","steam_ugc_query_set_match_any_tag","steam_ugc_query_set_search_text","steam_ugc_query_set_ranked_by_trend_days","steam_ugc_query_add_required_tag","steam_ugc_query_add_excluded_tag","steam_ugc_query_set_return_long_description","steam_ugc_query_set_return_total_only","steam_ugc_query_set_allow_cached_response","steam_ugc_send_query","shader_set","shader_get_name","shader_reset","shader_current","shader_is_compiled","shader_get_sampler_index","shader_get_uniform","shader_set_uniform_i","shader_set_uniform_i_array","shader_set_uniform_f","shader_set_uniform_f_array","shader_set_uniform_matrix","shader_set_uniform_matrix_array","shader_enable_corner_id","texture_set_stage","texture_get_texel_width","texture_get_texel_height","shaders_are_supported","vertex_format_begin","vertex_format_end","vertex_format_delete","vertex_format_add_position","vertex_format_add_position_3d","vertex_format_add_colour","vertex_format_add_color","vertex_format_add_normal","vertex_format_add_texcoord","vertex_format_add_textcoord","vertex_format_add_custom","vertex_create_buffer","vertex_create_buffer_ext","vertex_delete_buffer","vertex_begin","vertex_end","vertex_position","vertex_position_3d","vertex_colour","vertex_color","vertex_argb","vertex_texcoord","vertex_normal","vertex_float1","vertex_float2","vertex_float3","vertex_float4","vertex_ubyte4","vertex_submit","vertex_freeze","vertex_get_number","vertex_get_buffer_size","vertex_create_buffer_from_buffer","vertex_create_buffer_from_buffer_ext","push_local_notification","push_get_first_local_notification","push_get_next_local_notification","push_cancel_local_notification","skeleton_animation_set","skeleton_animation_get","skeleton_animation_mix","skeleton_animation_set_ext","skeleton_animation_get_ext","skeleton_animation_get_duration","skeleton_animation_get_frames","skeleton_animation_clear","skeleton_skin_set","skeleton_skin_get","skeleton_attachment_set","skeleton_attachment_get","skeleton_attachment_create","skeleton_collision_draw_set","skeleton_bone_data_get","skeleton_bone_data_set","skeleton_bone_state_get","skeleton_bone_state_set","skeleton_get_minmax","skeleton_get_num_bounds","skeleton_get_bounds","skeleton_animation_get_frame","skeleton_animation_set_frame","draw_skeleton","draw_skeleton_time","draw_skeleton_instance","draw_skeleton_collision","skeleton_animation_list","skeleton_skin_list","skeleton_slot_data","layer_get_id","layer_get_id_at_depth","layer_get_depth","layer_create","layer_destroy","layer_destroy_instances","layer_add_instance","layer_has_instance","layer_set_visible","layer_get_visible","layer_exists","layer_x","layer_y","layer_get_x","layer_get_y","layer_hspeed","layer_vspeed","layer_get_hspeed","layer_get_vspeed","layer_script_begin","layer_script_end","layer_shader","layer_get_script_begin","layer_get_script_end","layer_get_shader","layer_set_target_room","layer_get_target_room","layer_reset_target_room","layer_get_all","layer_get_all_elements","layer_get_name","layer_depth","layer_get_element_layer","layer_get_element_type","layer_element_move","layer_force_draw_depth","layer_is_draw_depth_forced","layer_get_forced_depth","layer_background_get_id","layer_background_exists","layer_background_create","layer_background_destroy","layer_background_visible","layer_background_change","layer_background_sprite","layer_background_htiled","layer_background_vtiled","layer_background_stretch","layer_background_yscale","layer_background_xscale","layer_background_blend","layer_background_alpha","layer_background_index","layer_background_speed","layer_background_get_visible","layer_background_get_sprite","layer_background_get_htiled","layer_background_get_vtiled","layer_background_get_stretch","layer_background_get_yscale","layer_background_get_xscale","layer_background_get_blend","layer_background_get_alpha","layer_background_get_index","layer_background_get_speed","layer_sprite_get_id","layer_sprite_exists","layer_sprite_create","layer_sprite_destroy","layer_sprite_change","layer_sprite_index","layer_sprite_speed","layer_sprite_xscale","layer_sprite_yscale","layer_sprite_angle","layer_sprite_blend","layer_sprite_alpha","layer_sprite_x","layer_sprite_y","layer_sprite_get_sprite","layer_sprite_get_index","layer_sprite_get_speed","layer_sprite_get_xscale","layer_sprite_get_yscale","layer_sprite_get_angle","layer_sprite_get_blend","layer_sprite_get_alpha","layer_sprite_get_x","layer_sprite_get_y","layer_tilemap_get_id","layer_tilemap_exists","layer_tilemap_create","layer_tilemap_destroy","tilemap_tileset","tilemap_x","tilemap_y","tilemap_set","tilemap_set_at_pixel","tilemap_get_tileset","tilemap_get_tile_width","tilemap_get_tile_height","tilemap_get_width","tilemap_get_height","tilemap_get_x","tilemap_get_y","tilemap_get","tilemap_get_at_pixel","tilemap_get_cell_x_at_pixel","tilemap_get_cell_y_at_pixel","tilemap_clear","draw_tilemap","draw_tile","tilemap_set_global_mask","tilemap_get_global_mask","tilemap_set_mask","tilemap_get_mask","tilemap_get_frame","tile_set_empty","tile_set_index","tile_set_flip","tile_set_mirror","tile_set_rotate","tile_get_empty","tile_get_index","tile_get_flip","tile_get_mirror","tile_get_rotate","layer_tile_exists","layer_tile_create","layer_tile_destroy","layer_tile_change","layer_tile_xscale","layer_tile_yscale","layer_tile_blend","layer_tile_alpha","layer_tile_x","layer_tile_y","layer_tile_region","layer_tile_visible","layer_tile_get_sprite","layer_tile_get_xscale","layer_tile_get_yscale","layer_tile_get_blend","layer_tile_get_alpha","layer_tile_get_x","layer_tile_get_y","layer_tile_get_region","layer_tile_get_visible","layer_instance_get_instance","instance_activate_layer","instance_deactivate_layer","camera_create","camera_create_view","camera_destroy","camera_apply","camera_get_active","camera_get_default","camera_set_default","camera_set_view_mat","camera_set_proj_mat","camera_set_update_script","camera_set_begin_script","camera_set_end_script","camera_set_view_pos","camera_set_view_size","camera_set_view_speed","camera_set_view_border","camera_set_view_angle","camera_set_view_target","camera_get_view_mat","camera_get_proj_mat","camera_get_update_script","camera_get_begin_script","camera_get_end_script","camera_get_view_x","camera_get_view_y","camera_get_view_width","camera_get_view_height","camera_get_view_speed_x","camera_get_view_speed_y","camera_get_view_border_x","camera_get_view_border_y","camera_get_view_angle","camera_get_view_target","view_get_camera","view_get_visible","view_get_xport","view_get_yport","view_get_wport","view_get_hport","view_get_surface_id","view_set_camera","view_set_visible","view_set_xport","view_set_yport","view_set_wport","view_set_hport","view_set_surface_id","gesture_drag_time","gesture_drag_distance","gesture_flick_speed","gesture_double_tap_time","gesture_double_tap_distance","gesture_pinch_distance","gesture_pinch_angle_towards","gesture_pinch_angle_away","gesture_rotate_time","gesture_rotate_angle","gesture_tap_count","gesture_get_drag_time","gesture_get_drag_distance","gesture_get_flick_speed","gesture_get_double_tap_time","gesture_get_double_tap_distance","gesture_get_pinch_distance","gesture_get_pinch_angle_towards","gesture_get_pinch_angle_away","gesture_get_rotate_time","gesture_get_rotate_angle","gesture_get_tap_count","keyboard_virtual_show","keyboard_virtual_hide","keyboard_virtual_status","keyboard_virtual_height"], +literal:["true","false","all","noone","undefined","pointer_invalid","pointer_null"], +symbol:["other","global","local","path_action_stop","path_action_restart","path_action_continue","path_action_reverse","pi","GM_build_date","GM_version","GM_runtime_version","timezone_local","timezone_utc","gamespeed_fps","gamespeed_microseconds","ev_create","ev_destroy","ev_step","ev_alarm","ev_keyboard","ev_mouse","ev_collision","ev_other","ev_draw","ev_draw_begin","ev_draw_end","ev_draw_pre","ev_draw_post","ev_keypress","ev_keyrelease","ev_trigger","ev_left_button","ev_right_button","ev_middle_button","ev_no_button","ev_left_press","ev_right_press","ev_middle_press","ev_left_release","ev_right_release","ev_middle_release","ev_mouse_enter","ev_mouse_leave","ev_mouse_wheel_up","ev_mouse_wheel_down","ev_global_left_button","ev_global_right_button","ev_global_middle_button","ev_global_left_press","ev_global_right_press","ev_global_middle_press","ev_global_left_release","ev_global_right_release","ev_global_middle_release","ev_joystick1_left","ev_joystick1_right","ev_joystick1_up","ev_joystick1_down","ev_joystick1_button1","ev_joystick1_button2","ev_joystick1_button3","ev_joystick1_button4","ev_joystick1_button5","ev_joystick1_button6","ev_joystick1_button7","ev_joystick1_button8","ev_joystick2_left","ev_joystick2_right","ev_joystick2_up","ev_joystick2_down","ev_joystick2_button1","ev_joystick2_button2","ev_joystick2_button3","ev_joystick2_button4","ev_joystick2_button5","ev_joystick2_button6","ev_joystick2_button7","ev_joystick2_button8","ev_outside","ev_boundary","ev_game_start","ev_game_end","ev_room_start","ev_room_end","ev_no_more_lives","ev_animation_end","ev_end_of_path","ev_no_more_health","ev_close_button","ev_user0","ev_user1","ev_user2","ev_user3","ev_user4","ev_user5","ev_user6","ev_user7","ev_user8","ev_user9","ev_user10","ev_user11","ev_user12","ev_user13","ev_user14","ev_user15","ev_step_normal","ev_step_begin","ev_step_end","ev_gui","ev_gui_begin","ev_gui_end","ev_cleanup","ev_gesture","ev_gesture_tap","ev_gesture_double_tap","ev_gesture_drag_start","ev_gesture_dragging","ev_gesture_drag_end","ev_gesture_flick","ev_gesture_pinch_start","ev_gesture_pinch_in","ev_gesture_pinch_out","ev_gesture_pinch_end","ev_gesture_rotate_start","ev_gesture_rotating","ev_gesture_rotate_end","ev_global_gesture_tap","ev_global_gesture_double_tap","ev_global_gesture_drag_start","ev_global_gesture_dragging","ev_global_gesture_drag_end","ev_global_gesture_flick","ev_global_gesture_pinch_start","ev_global_gesture_pinch_in","ev_global_gesture_pinch_out","ev_global_gesture_pinch_end","ev_global_gesture_rotate_start","ev_global_gesture_rotating","ev_global_gesture_rotate_end","vk_nokey","vk_anykey","vk_enter","vk_return","vk_shift","vk_control","vk_alt","vk_escape","vk_space","vk_backspace","vk_tab","vk_pause","vk_printscreen","vk_left","vk_right","vk_up","vk_down","vk_home","vk_end","vk_delete","vk_insert","vk_pageup","vk_pagedown","vk_f1","vk_f2","vk_f3","vk_f4","vk_f5","vk_f6","vk_f7","vk_f8","vk_f9","vk_f10","vk_f11","vk_f12","vk_numpad0","vk_numpad1","vk_numpad2","vk_numpad3","vk_numpad4","vk_numpad5","vk_numpad6","vk_numpad7","vk_numpad8","vk_numpad9","vk_divide","vk_multiply","vk_subtract","vk_add","vk_decimal","vk_lshift","vk_lcontrol","vk_lalt","vk_rshift","vk_rcontrol","vk_ralt","mb_any","mb_none","mb_left","mb_right","mb_middle","c_aqua","c_black","c_blue","c_dkgray","c_fuchsia","c_gray","c_green","c_lime","c_ltgray","c_maroon","c_navy","c_olive","c_purple","c_red","c_silver","c_teal","c_white","c_yellow","c_orange","fa_left","fa_center","fa_right","fa_top","fa_middle","fa_bottom","pr_pointlist","pr_linelist","pr_linestrip","pr_trianglelist","pr_trianglestrip","pr_trianglefan","bm_complex","bm_normal","bm_add","bm_max","bm_subtract","bm_zero","bm_one","bm_src_colour","bm_inv_src_colour","bm_src_color","bm_inv_src_color","bm_src_alpha","bm_inv_src_alpha","bm_dest_alpha","bm_inv_dest_alpha","bm_dest_colour","bm_inv_dest_colour","bm_dest_color","bm_inv_dest_color","bm_src_alpha_sat","tf_point","tf_linear","tf_anisotropic","mip_off","mip_on","mip_markedonly","audio_falloff_none","audio_falloff_inverse_distance","audio_falloff_inverse_distance_clamped","audio_falloff_linear_distance","audio_falloff_linear_distance_clamped","audio_falloff_exponent_distance","audio_falloff_exponent_distance_clamped","audio_old_system","audio_new_system","audio_mono","audio_stereo","audio_3d","cr_default","cr_none","cr_arrow","cr_cross","cr_beam","cr_size_nesw","cr_size_ns","cr_size_nwse","cr_size_we","cr_uparrow","cr_hourglass","cr_drag","cr_appstart","cr_handpoint","cr_size_all","spritespeed_framespersecond","spritespeed_framespergameframe","asset_object","asset_unknown","asset_sprite","asset_sound","asset_room","asset_path","asset_script","asset_font","asset_timeline","asset_tiles","asset_shader","fa_readonly","fa_hidden","fa_sysfile","fa_volumeid","fa_directory","fa_archive","ds_type_map","ds_type_list","ds_type_stack","ds_type_queue","ds_type_grid","ds_type_priority","ef_explosion","ef_ring","ef_ellipse","ef_firework","ef_smoke","ef_smokeup","ef_star","ef_spark","ef_flare","ef_cloud","ef_rain","ef_snow","pt_shape_pixel","pt_shape_disk","pt_shape_square","pt_shape_line","pt_shape_star","pt_shape_circle","pt_shape_ring","pt_shape_sphere","pt_shape_flare","pt_shape_spark","pt_shape_explosion","pt_shape_cloud","pt_shape_smoke","pt_shape_snow","ps_distr_linear","ps_distr_gaussian","ps_distr_invgaussian","ps_shape_rectangle","ps_shape_ellipse","ps_shape_diamond","ps_shape_line","ty_real","ty_string","dll_cdecl","dll_stdcall","matrix_view","matrix_projection","matrix_world","os_win32","os_windows","os_macosx","os_ios","os_android","os_symbian","os_linux","os_unknown","os_winphone","os_tizen","os_win8native","os_wiiu","os_3ds","os_psvita","os_bb10","os_ps4","os_xboxone","os_ps3","os_xbox360","os_uwp","os_tvos","os_switch","browser_not_a_browser","browser_unknown","browser_ie","browser_firefox","browser_chrome","browser_safari","browser_safari_mobile","browser_opera","browser_tizen","browser_edge","browser_windows_store","browser_ie_mobile","device_ios_unknown","device_ios_iphone","device_ios_iphone_retina","device_ios_ipad","device_ios_ipad_retina","device_ios_iphone5","device_ios_iphone6","device_ios_iphone6plus","device_emulator","device_tablet","display_landscape","display_landscape_flipped","display_portrait","display_portrait_flipped","tm_sleep","tm_countvsyncs","of_challenge_win","of_challen","ge_lose","of_challenge_tie","leaderboard_type_number","leaderboard_type_time_mins_secs","cmpfunc_never","cmpfunc_less","cmpfunc_equal","cmpfunc_lessequal","cmpfunc_greater","cmpfunc_notequal","cmpfunc_greaterequal","cmpfunc_always","cull_noculling","cull_clockwise","cull_counterclockwise","lighttype_dir","lighttype_point","iap_ev_storeload","iap_ev_product","iap_ev_purchase","iap_ev_consume","iap_ev_restore","iap_storeload_ok","iap_storeload_failed","iap_status_uninitialised","iap_status_unavailable","iap_status_loading","iap_status_available","iap_status_processing","iap_status_restoring","iap_failed","iap_unavailable","iap_available","iap_purchased","iap_canceled","iap_refunded","fb_login_default","fb_login_fallback_to_webview","fb_login_no_fallback_to_webview","fb_login_forcing_webview","fb_login_use_system_account","fb_login_forcing_safari","phy_joint_anchor_1_x","phy_joint_anchor_1_y","phy_joint_anchor_2_x","phy_joint_anchor_2_y","phy_joint_reaction_force_x","phy_joint_reaction_force_y","phy_joint_reaction_torque","phy_joint_motor_speed","phy_joint_angle","phy_joint_motor_torque","phy_joint_max_motor_torque","phy_joint_translation","phy_joint_speed","phy_joint_motor_force","phy_joint_max_motor_force","phy_joint_length_1","phy_joint_length_2","phy_joint_damping_ratio","phy_joint_frequency","phy_joint_lower_angle_limit","phy_joint_upper_angle_limit","phy_joint_angle_limits","phy_joint_max_length","phy_joint_max_torque","phy_joint_max_force","phy_debug_render_aabb","phy_debug_render_collision_pairs","phy_debug_render_coms","phy_debug_render_core_shapes","phy_debug_render_joints","phy_debug_render_obb","phy_debug_render_shapes","phy_particle_flag_water","phy_particle_flag_zombie","phy_particle_flag_wall","phy_particle_flag_spring","phy_particle_flag_elastic","phy_particle_flag_viscous","phy_particle_flag_powder","phy_particle_flag_tensile","phy_particle_flag_colourmixing","phy_particle_flag_colormixing","phy_particle_group_flag_solid","phy_particle_group_flag_rigid","phy_particle_data_flag_typeflags","phy_particle_data_flag_position","phy_particle_data_flag_velocity","phy_particle_data_flag_colour","phy_particle_data_flag_color","phy_particle_data_flag_category","achievement_our_info","achievement_friends_info","achievement_leaderboard_info","achievement_achievement_info","achievement_filter_all_players","achievement_filter_friends_only","achievement_filter_favorites_only","achievement_type_achievement_challenge","achievement_type_score_challenge","achievement_pic_loaded","achievement_show_ui","achievement_show_profile","achievement_show_leaderboard","achievement_show_achievement","achievement_show_bank","achievement_show_friend_picker","achievement_show_purchase_prompt","network_socket_tcp","network_socket_udp","network_socket_bluetooth","network_type_connect","network_type_disconnect","network_type_data","network_type_non_blocking_connect","network_config_connect_timeout","network_config_use_non_blocking_socket","network_config_enable_reliable_udp","network_config_disable_reliable_udp","buffer_fixed","buffer_grow","buffer_wrap","buffer_fast","buffer_vbuffer","buffer_network","buffer_u8","buffer_s8","buffer_u16","buffer_s16","buffer_u32","buffer_s32","buffer_u64","buffer_f16","buffer_f32","buffer_f64","buffer_bool","buffer_text","buffer_string","buffer_surface_copy","buffer_seek_start","buffer_seek_relative","buffer_seek_end","buffer_generalerror","buffer_outofspace","buffer_outofbounds","buffer_invalidtype","text_type","button_type","input_type","ANSI_CHARSET","DEFAULT_CHARSET","EASTEUROPE_CHARSET","RUSSIAN_CHARSET","SYMBOL_CHARSET","SHIFTJIS_CHARSET","HANGEUL_CHARSET","GB2312_CHARSET","CHINESEBIG5_CHARSET","JOHAB_CHARSET","HEBREW_CHARSET","ARABIC_CHARSET","GREEK_CHARSET","TURKISH_CHARSET","VIETNAMESE_CHARSET","THAI_CHARSET","MAC_CHARSET","BALTIC_CHARSET","OEM_CHARSET","gp_face1","gp_face2","gp_face3","gp_face4","gp_shoulderl","gp_shoulderr","gp_shoulderlb","gp_shoulderrb","gp_select","gp_start","gp_stickl","gp_stickr","gp_padu","gp_padd","gp_padl","gp_padr","gp_axislh","gp_axislv","gp_axisrh","gp_axisrv","ov_friends","ov_community","ov_players","ov_settings","ov_gamegroup","ov_achievements","lb_sort_none","lb_sort_ascending","lb_sort_descending","lb_disp_none","lb_disp_numeric","lb_disp_time_sec","lb_disp_time_ms","ugc_result_success","ugc_filetype_community","ugc_filetype_microtrans","ugc_visibility_public","ugc_visibility_friends_only","ugc_visibility_private","ugc_query_RankedByVote","ugc_query_RankedByPublicationDate","ugc_query_AcceptedForGameRankedByAcceptanceDate","ugc_query_RankedByTrend","ugc_query_FavoritedByFriendsRankedByPublicationDate","ugc_query_CreatedByFriendsRankedByPublicationDate","ugc_query_RankedByNumTimesReported","ugc_query_CreatedByFollowedUsersRankedByPublicationDate","ugc_query_NotYetRated","ugc_query_RankedByTotalVotesAsc","ugc_query_RankedByVotesUp","ugc_query_RankedByTextSearch","ugc_sortorder_CreationOrderDesc","ugc_sortorder_CreationOrderAsc","ugc_sortorder_TitleAsc","ugc_sortorder_LastUpdatedDesc","ugc_sortorder_SubscriptionDateDesc","ugc_sortorder_VoteScoreDesc","ugc_sortorder_ForModeration","ugc_list_Published","ugc_list_VotedOn","ugc_list_VotedUp","ugc_list_VotedDown","ugc_list_WillVoteLater","ugc_list_Favorited","ugc_list_Subscribed","ugc_list_UsedOrPlayed","ugc_list_Followed","ugc_match_Items","ugc_match_Items_Mtx","ugc_match_Items_ReadyToUse","ugc_match_Collections","ugc_match_Artwork","ugc_match_Videos","ugc_match_Screenshots","ugc_match_AllGuides","ugc_match_WebGuides","ugc_match_IntegratedGuides","ugc_match_UsableInGame","ugc_match_ControllerBindings","vertex_usage_position","vertex_usage_colour","vertex_usage_color","vertex_usage_normal","vertex_usage_texcoord","vertex_usage_textcoord","vertex_usage_blendweight","vertex_usage_blendindices","vertex_usage_psize","vertex_usage_tangent","vertex_usage_binormal","vertex_usage_fog","vertex_usage_depth","vertex_usage_sample","vertex_type_float1","vertex_type_float2","vertex_type_float3","vertex_type_float4","vertex_type_colour","vertex_type_color","vertex_type_ubyte4","layerelementtype_undefined","layerelementtype_background","layerelementtype_instance","layerelementtype_oldtilemap","layerelementtype_sprite","layerelementtype_tilemap","layerelementtype_particlesystem","layerelementtype_tile","tile_rotate","tile_flip","tile_mirror","tile_index_mask","kbv_type_default","kbv_type_ascii","kbv_type_url","kbv_type_email","kbv_type_numbers","kbv_type_phone","kbv_type_phone_name","kbv_returnkey_default","kbv_returnkey_go","kbv_returnkey_google","kbv_returnkey_join","kbv_returnkey_next","kbv_returnkey_route","kbv_returnkey_search","kbv_returnkey_send","kbv_returnkey_yahoo","kbv_returnkey_done","kbv_returnkey_continue","kbv_returnkey_emergency","kbv_autocapitalize_none","kbv_autocapitalize_words","kbv_autocapitalize_sentences","kbv_autocapitalize_characters"], +"variable.language":["self","argument_relative","argument","argument0","argument1","argument2","argument3","argument4","argument5","argument6","argument7","argument8","argument9","argument10","argument11","argument12","argument13","argument14","argument15","argument_count","x|0","y|0","xprevious","yprevious","xstart","ystart","hspeed","vspeed","direction","speed","friction","gravity","gravity_direction","path_index","path_position","path_positionprevious","path_speed","path_scale","path_orientation","path_endaction","object_index","id|0","solid","persistent","mask_index","instance_count","instance_id","room_speed","fps","fps_real","current_time","current_year","current_month","current_day","current_weekday","current_hour","current_minute","current_second","alarm","timeline_index","timeline_position","timeline_speed","timeline_running","timeline_loop","room","room_first","room_last","room_width","room_height","room_caption","room_persistent","score","lives","health","show_score","show_lives","show_health","caption_score","caption_lives","caption_health","event_type","event_number","event_object","event_action","application_surface","gamemaker_pro","gamemaker_registered","gamemaker_version","error_occurred","error_last","debug_mode","keyboard_key","keyboard_lastkey","keyboard_lastchar","keyboard_string","mouse_x","mouse_y","mouse_button","mouse_lastbutton","cursor_sprite","visible","sprite_index","sprite_width","sprite_height","sprite_xoffset","sprite_yoffset","image_number","image_index","image_speed","depth","image_xscale","image_yscale","image_angle","image_alpha","image_blend","bbox_left","bbox_right","bbox_top","bbox_bottom","layer","background_colour","background_showcolour","background_color","background_showcolor","view_enabled","view_current","view_visible","view_xview","view_yview","view_wview","view_hview","view_xport","view_yport","view_wport","view_hport","view_angle","view_hborder","view_vborder","view_hspeed","view_vspeed","view_object","view_surface_id","view_camera","game_id","game_display_name","game_project_name","game_save_id","working_directory","temp_directory","program_directory","browser_width","browser_height","os_type","os_device","os_browser","os_version","display_aa","async_load","delta_time","webgl_enabled","event_data","iap_data","phy_rotation","phy_position_x","phy_position_y","phy_angular_velocity","phy_linear_velocity_x","phy_linear_velocity_y","phy_speed_x","phy_speed_y","phy_speed","phy_angular_damping","phy_linear_damping","phy_bullet","phy_fixed_rotation","phy_active","phy_mass","phy_inertia","phy_com_x","phy_com_y","phy_dynamic","phy_kinematic","phy_sleeping","phy_collision_points","phy_collision_x","phy_collision_y","phy_col_normal_x","phy_col_normal_y","phy_position_xprevious","phy_position_yprevious"] +}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE] +})})();hljs.registerLanguage("gml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js new file mode 100644 index 0000000..f973476 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js @@ -0,0 +1,14 @@ +/*! `go` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], +type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], +literal:["true","false","iota","nil"], +built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] +};return{name:"Go",aliases:["golang"],keywords:n,illegal:"</", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string", +variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{ +className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1 +},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func", +end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params", +begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}}})() +;hljs.registerLanguage("go",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js new file mode 100644 index 0000000..e2b5cbe --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js @@ -0,0 +1,6 @@ +/*! `golo` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Golo",keywords:{ +keyword:["println","readln","print","import","module","function","local","return","let","var","while","for","foreach","times","in","case","when","match","with","break","continue","augment","augmentation","each","find","filter","reduce","if","then","else","otherwise","try","catch","finally","raise","throw","orIfNull","DynamicObject|10","DynamicVariable","struct","Observable","map","set","vector","list","array"], +literal:["true","false","null"]}, +contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"@[A-Za-z]+"}]})})();hljs.registerLanguage("golo",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js new file mode 100644 index 0000000..11e0043 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js @@ -0,0 +1,5 @@ +/*! `gradle` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Gradle",case_insensitive:!0, +keywords:["task","project","allprojects","subprojects","artifacts","buildscript","configurations","dependencies","repositories","sourceSets","description","delete","from","into","include","exclude","source","classpath","destinationDir","includes","options","sourceCompatibility","targetCompatibility","group","flatDir","doLast","doFirst","flatten","todir","fromdir","ant","def","abstract","break","case","catch","continue","default","do","else","extends","final","finally","for","if","implements","instanceof","native","new","private","protected","public","return","static","switch","synchronized","throw","throws","transient","try","volatile","while","strictfp","package","import","false","null","super","this","true","antlrtask","checkstyle","codenarc","copy","boolean","byte","char","class","double","float","int","interface","long","short","void","compile","runTime","file","fileTree","abs","any","append","asList","asWritable","call","collect","compareTo","count","div","dump","each","eachByte","eachFile","eachLine","every","find","findAll","flatten","getAt","getErr","getIn","getOut","getText","grep","immutable","inject","inspect","intersect","invokeMethods","isCase","join","leftShift","minus","multiply","newInputStream","newOutputStream","newPrintWriter","newReader","newWriter","next","plus","pop","power","previous","print","println","push","putAt","read","readBytes","readLines","reverse","reverseEach","round","size","sort","splitEachLine","step","subMap","times","toInteger","toList","tokenize","upto","waitForOrKill","withPrintWriter","withReader","withStream","withWriter","withWriterAppend","write","writeLine"], +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE] +})})();hljs.registerLanguage("gradle",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js new file mode 100644 index 0000000..99133a9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js @@ -0,0 +1,20 @@ +/*! `groovy` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";function e(e,n={}){return n.variants=e,n} +return n=>{ +const a=n.regex,t="[A-Za-z0-9_$]+",s=e([n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.COMMENT("/\\*\\*","\\*/",{ +relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag", +begin:"@[A-Za-z]+"}]})]),r={className:"regexp",begin:/~?\/[^\/\n]+\//, +contains:[n.BACKSLASH_ESCAPE] +},i=e([n.BINARY_NUMBER_MODE,n.C_NUMBER_MODE]),l=e([{begin:/"""/,end:/"""/},{ +begin:/'''/,end:/'''/},{begin:"\\$/",end:"/\\$",relevance:10 +},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE],{className:"string"});return{ +name:"Groovy",keywords:{built_in:"this super",literal:"true false null", +keyword:"byte short char int long boolean float double void def as in assert trait abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof" +},contains:[n.SHEBANG({binary:"groovy",relevance:10}),s,l,r,i,{ +className:"class",beginKeywords:"class interface trait enum",end:/\{/, +illegal:":",contains:[{beginKeywords:"extends implements" +},n.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"@[A-Za-z]+",relevance:0},{ +className:"attr",begin:t+"[ \t]*:",relevance:0},{begin:/\?/,end:/:/,relevance:0, +contains:[s,l,r,i,"self"]},{className:"symbol", +begin:"^[ \t]*"+a.lookahead(t+":"),excludeBegin:!0,end:t+":",relevance:0}], +illegal:/#|<\//}}})();hljs.registerLanguage("groovy",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js new file mode 100644 index 0000000..c8b01ea --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js @@ -0,0 +1,18 @@ +/*! `haml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"HAML",case_insensitive:!0, +contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",null,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",end:/$/,subLanguage:"ruby",excludeBegin:!0, +excludeEnd:!0},{className:"tag",begin:"^\\s*%",contains:[{ +className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+" +},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/, +contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0, +contains:[{className:"attr",begin:":\\w+" +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{ +begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,end:/\}/, +subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})() +;hljs.registerLanguage("haml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js new file mode 100644 index 0000000..9c0f0f4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js @@ -0,0 +1,29 @@ +/*! `handlebars` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,n={ +$pattern:/[\w.\/]+/, +built_in:["action","bindattr","collection","component","concat","debugger","each","each-in","get","hash","if","in","input","link-to","loc","log","lookup","mut","outlet","partial","query-params","render","template","textarea","unbound","unless","view","with","yield"] +},t=/\[\]|\[[^\]]+\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=a.either(/""|"[^"]+"/,/''|'[^']+'/,t,s),r=a.concat(a.optional(/\.|\.\/|\//),i,a.anyNumberOfTimes(a.concat(/(\.|\/)/,i))),l=a.concat("(",t,"|",s,")(?==)"),c={ +begin:r},o=e.inherit(c,{keywords:{$pattern:/[\w.\/]+/, +literal:["true","false","undefined","null"]}}),m={begin:/\(/,end:/\)/},d={ +className:"attr",begin:l,relevance:0,starts:{begin:/=/,end:/=/,starts:{ +contains:[e.NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,m]}}},g={ +contains:[e.NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:/as\s+\|/, +keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},d,o,m],returnEnd:!0 +},b=e.inherit(c,{className:"name",keywords:n,starts:e.inherit(g,{end:/\)/})}) +;m.contains=[b];const u=e.inherit(c,{keywords:n,className:"name", +starts:e.inherit(g,{end:/\}\}/})}),h=e.inherit(c,{keywords:n,className:"name" +}),N=e.inherit(c,{className:"name",keywords:n,starts:e.inherit(g,{end:/\}\}/})}) +;return{name:"Handlebars", +aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0, +subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/, +skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{ +className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u], +starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{ +className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[h]},{ +className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{ +className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{ +className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if" +},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[h]},{ +className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[N]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[N]}]}}})() +;hljs.registerLanguage("handlebars",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js new file mode 100644 index 0000000..4091d3a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js @@ -0,0 +1,29 @@ +/*! `haskell` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},a={ +className:"meta",begin:/\{-#/,end:/#-\}/},i={className:"meta",begin:"^#",end:"$" +},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(", +end:"\\)",illegal:'"',contains:[a,i,{className:"type", +begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{ +begin:"[_a-z][\\w']*"}),n]},t="([0-9a-fA-F]_*)+",c={className:"number", +relevance:0,variants:[{ +match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +match:`\\b0[xX]_*(${t})(\\.(${t}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +match:"\\b0[oO](([0-7]_*)+)\\b"},{match:"\\b0[bB](([01]_*)+)\\b"}]};return{ +name:"Haskell",aliases:["hs"], +keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec", +contains:[{beginKeywords:"module",end:"where",keywords:"module where", +contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$", +keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{ +className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where", +keywords:"class family instance where",contains:[s,l,n]},{className:"class", +begin:"\\b(data|(new)?type)\\b",end:"$", +keywords:"data family type newtype deriving",contains:[a,s,l,{begin:/\{/, +end:/\}/,contains:l.contains},n]},{beginKeywords:"default",end:"$", +contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$", +contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$", +keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe", +contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta", +begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$" +},a,i,e.QUOTE_STRING_MODE,c,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*" +}),n,{begin:"->|<-"}]}}})();hljs.registerLanguage("haskell",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js new file mode 100644 index 0000000..18b2a82 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js @@ -0,0 +1,26 @@ +/*! `haxe` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Haxe",aliases:["hx"],keywords:{ +keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ", +built_in:"trace this",literal:"true false null _"},contains:[{ +className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{ +className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$", +end:/\W\}/}] +},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$", +keywords:{keyword:"if else elseif end error"}},{className:"type", +begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0, +excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0, +excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{", +contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract", +end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0, +excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0, +excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0, +excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{ +className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0, +keywords:"class interface",contains:[{className:"keyword", +begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{ +className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{ +className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0, +illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//})})() +;hljs.registerLanguage("haxe",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js new file mode 100644 index 0000000..dc8f845 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js @@ -0,0 +1,14 @@ +/*! `hsp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"HSP",case_insensitive:!0, +keywords:{$pattern:/[\w._]+/, +keyword:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop" +}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{ +className:"string",begin:/\{"/,end:/"\}/,contains:[e.BACKSLASH_ESCAPE] +},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$", +keywords:{ +keyword:"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib" +},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"string" +}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE] +},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]})})() +;hljs.registerLanguage("hsp",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js new file mode 100644 index 0000000..2c929c5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js @@ -0,0 +1,14 @@ +/*! `http` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n="HTTP/(2|1\\.[01])",a={ +className:"attribute", +begin:e.regex.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{ +contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$", +relevance:0}}]}},s=[a,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0} +}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{ +begin:"^(?="+n+" \\d{3})",end:/$/,contains:[{className:"meta",begin:n},{ +className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/, +contains:s}},{begin:"(?=^[A-Z]+ (.*?) "+n+"$)",end:/$/,contains:[{ +className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{ +className:"meta",begin:n},{className:"keyword",begin:"[A-Z]+"}],starts:{ +end:/\b\B/,illegal:/\S/,contains:s}},e.inherit(a,{relevance:0})]}}})() +;hljs.registerLanguage("http",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js new file mode 100644 index 0000000..cba37cc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js @@ -0,0 +1,16 @@ +/*! `hy` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a="a-zA-Z_\\-!.?+*=<>&#'",t="["+a+"]["+a+"0-9/;:]*",i={$pattern:t, +built_in:"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~" +},r={begin:t,relevance:0},n={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},s=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),o=e.COMMENT(";","$",{relevance:0}),l={className:"literal", +begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},c={begin:"[\\[\\{]",end:"[\\]\\}]", +relevance:0},d={className:"comment",begin:"\\^"+t +},m=e.COMMENT("\\^\\{","\\}"),p={className:"symbol",begin:"[:]{1,2}"+t},u={ +begin:"\\(",end:"\\)"},f={endsWithParent:!0,relevance:0},g={className:"name", +relevance:0,keywords:i,begin:t,starts:f},h=[u,s,d,m,o,p,c,n,l,r] +;return u.contains=[e.COMMENT("comment",""),g,f],f.contains=h,c.contains=h,{ +name:"Hy",aliases:["hylang"],illegal:/\S/, +contains:[e.SHEBANG(),u,s,d,m,o,p,c,n,l]}}})();hljs.registerLanguage("hy",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js new file mode 100644 index 0000000..57f7726 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js @@ -0,0 +1,11 @@ +/*! `inform7` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Inform 7",aliases:["i7"], +case_insensitive:!0,keywords:{ +keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule" +},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{ +className:"subst",begin:"\\[",end:"\\]"}]},{className:"section", +begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{ +begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/, +end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment", +begin:"\\[",end:"\\]",contains:["self"]}]})})() +;hljs.registerLanguage("inform7",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js new file mode 100644 index 0000000..b22f5e4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js @@ -0,0 +1,15 @@ +/*! `ini` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}] +},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={ +className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/ +}]},t={className:"literal",begin:/\bon|off|true|false|yes|no\b/},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[s,t,i,r,a,"self"], +relevance:0},c=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{ +name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, +contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{ +begin:n.concat(c,"(\\s*\\.\\s*",c,")*",n.lookahead(/\s*=\s*[^#\s]/)), +className:"attr",starts:{end:/$/,contains:[s,l,t,i,r,a]}}]}}})() +;hljs.registerLanguage("ini",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js new file mode 100644 index 0000000..4f66f86 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js @@ -0,0 +1,15 @@ +/*! `irpf90` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,t=/(_[a-z_\d]+)?/,a=/([de][+-]?\d+)?/,i={className:"number", +variants:[{begin:n.concat(/\b\d+/,/\.(\d*)/,a,t)},{begin:n.concat(/\b\d+/,a,t) +},{begin:n.concat(/\.\d+/,a,t)}],relevance:0};return{name:"IRPF90", +case_insensitive:!0,keywords:{literal:".False. .True.", +keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read", +built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here" +},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{ +className:"function",beginKeywords:"subroutine function program", +illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params", +begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0 +}),e.COMMENT("begin_doc","end_doc",{relevance:10}),i]}}})() +;hljs.registerLanguage("irpf90",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js new file mode 100644 index 0000000..a225533 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js @@ -0,0 +1,25 @@ +/*! `isbl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var S=(()=>{"use strict";return S=>{ +const E="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_!][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]*",_={ +className:"number",begin:S.NUMBER_RE,relevance:0},T={className:"string", +variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},R={className:"doctag", +begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0 +},O={variants:[{className:"comment",begin:"//",end:"$",relevance:0, +contains:[S.PHRASAL_WORDS_MODE,R]},{className:"comment",begin:"/\\*",end:"\\*/", +relevance:0,contains:[S.PHRASAL_WORDS_MODE,R]}]},C={$pattern:E, +keyword:"and \u0438 else \u0438\u043d\u0430\u0447\u0435 endexcept endfinally endforeach \u043a\u043e\u043d\u0435\u0446\u0432\u0441\u0435 endif \u043a\u043e\u043d\u0435\u0446\u0435\u0441\u043b\u0438 endwhile \u043a\u043e\u043d\u0435\u0446\u043f\u043e\u043a\u0430 except exitfor finally foreach \u0432\u0441\u0435 if \u0435\u0441\u043b\u0438 in \u0432 not \u043d\u0435 or \u0438\u043b\u0438 try while \u043f\u043e\u043a\u0430 ", +built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STAT\u0415 SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ", +class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work \u0412\u044b\u0437\u043e\u0432\u0421\u043f\u043e\u0441\u043e\u0431 \u0418\u043c\u044f\u041e\u0442\u0447\u0435\u0442\u0430 \u0420\u0435\u043a\u0432\u0417\u043d\u0430\u0447 ", +literal:"null true false nil "},I={begin:"\\.\\s*"+S.UNDERSCORE_IDENT_RE, +keywords:C,relevance:0},N={className:"type", +begin:":[ \\t]*(IApplication|IAccessRights|IAccountRepository|IAccountSelectionRestrictions|IAction|IActionList|IAdministrationHistoryDescription|IAnchors|IApplication|IArchiveInfo|IAttachment|IAttachmentList|ICheckListBox|ICheckPointedList|IColumn|IComponent|IComponentDescription|IComponentToken|IComponentTokenFactory|IComponentTokenInfo|ICompRecordInfo|IConnection|IContents|IControl|IControlJob|IControlJobInfo|IControlList|ICrypto|ICrypto2|ICustomJob|ICustomJobInfo|ICustomListBox|ICustomObjectWizardStep|ICustomWork|ICustomWorkInfo|IDataSet|IDataSetAccessInfo|IDataSigner|IDateCriterion|IDateRequisite|IDateRequisiteDescription|IDateValue|IDeaAccessRights|IDeaObjectInfo|IDevelopmentComponentLock|IDialog|IDialogFactory|IDialogPickRequisiteItems|IDialogsFactory|IDICSFactory|IDocRequisite|IDocumentInfo|IDualListDialog|IECertificate|IECertificateInfo|IECertificates|IEditControl|IEditorForm|IEdmsExplorer|IEdmsObject|IEdmsObjectDescription|IEdmsObjectFactory|IEdmsObjectInfo|IEDocument|IEDocumentAccessRights|IEDocumentDescription|IEDocumentEditor|IEDocumentFactory|IEDocumentInfo|IEDocumentStorage|IEDocumentVersion|IEDocumentVersionListDialog|IEDocumentVersionSource|IEDocumentWizardStep|IEDocVerSignature|IEDocVersionState|IEnabledMode|IEncodeProvider|IEncrypter|IEvent|IEventList|IException|IExternalEvents|IExternalHandler|IFactory|IField|IFileDialog|IFolder|IFolderDescription|IFolderDialog|IFolderFactory|IFolderInfo|IForEach|IForm|IFormTitle|IFormWizardStep|IGlobalIDFactory|IGlobalIDInfo|IGrid|IHasher|IHistoryDescription|IHyperLinkControl|IImageButton|IImageControl|IInnerPanel|IInplaceHint|IIntegerCriterion|IIntegerList|IIntegerRequisite|IIntegerValue|IISBLEditorForm|IJob|IJobDescription|IJobFactory|IJobForm|IJobInfo|ILabelControl|ILargeIntegerCriterion|ILargeIntegerRequisite|ILargeIntegerValue|ILicenseInfo|ILifeCycleStage|IList|IListBox|ILocalIDInfo|ILocalization|ILock|IMemoryDataSet|IMessagingFactory|IMetadataRepository|INotice|INoticeInfo|INumericCriterion|INumericRequisite|INumericValue|IObject|IObjectDescription|IObjectImporter|IObjectInfo|IObserver|IPanelGroup|IPickCriterion|IPickProperty|IPickRequisite|IPickRequisiteDescription|IPickRequisiteItem|IPickRequisiteItems|IPickValue|IPrivilege|IPrivilegeList|IProcess|IProcessFactory|IProcessMessage|IProgress|IProperty|IPropertyChangeEvent|IQuery|IReference|IReferenceCriterion|IReferenceEnabledMode|IReferenceFactory|IReferenceHistoryDescription|IReferenceInfo|IReferenceRecordCardWizardStep|IReferenceRequisiteDescription|IReferencesFactory|IReferenceValue|IRefRequisite|IReport|IReportFactory|IRequisite|IRequisiteDescription|IRequisiteDescriptionList|IRequisiteFactory|IRichEdit|IRouteStep|IRule|IRuleList|ISchemeBlock|IScript|IScriptFactory|ISearchCriteria|ISearchCriterion|ISearchDescription|ISearchFactory|ISearchFolderInfo|ISearchForObjectDescription|ISearchResultRestrictions|ISecuredContext|ISelectDialog|IServerEvent|IServerEventFactory|IServiceDialog|IServiceFactory|ISignature|ISignProvider|ISignProvider2|ISignProvider3|ISimpleCriterion|IStringCriterion|IStringList|IStringRequisite|IStringRequisiteDescription|IStringValue|ISystemDialogsFactory|ISystemInfo|ITabSheet|ITask|ITaskAbortReasonInfo|ITaskCardWizardStep|ITaskDescription|ITaskFactory|ITaskInfo|ITaskRoute|ITextCriterion|ITextRequisite|ITextValue|ITreeListSelectDialog|IUser|IUserList|IValue|IView|IWebBrowserControl|IWizard|IWizardAction|IWizardFactory|IWizardFormElement|IWizardParam|IWizardPickParam|IWizardReferenceParam|IWizardStep|IWorkAccessRights|IWorkDescription|IWorkflowAskableParam|IWorkflowAskableParams|IWorkflowBlock|IWorkflowBlockResult|IWorkflowEnabledMode|IWorkflowParam|IWorkflowPickParam|IWorkflowReferenceParam|IWorkState|IWorkTreeCustomNode|IWorkTreeJobNode|IWorkTreeTaskNode|IXMLEditorForm|SBCrypto)", +end:"[ \\t]*=",excludeEnd:!0},A={className:"variable",keywords:C,begin:E, +relevance:0,contains:[N,I] +},e="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]*\\(" +;return{name:"ISBL",case_insensitive:!0,keywords:C, +illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:e, +end:"\\)$",returnBegin:!0,keywords:C,illegal:"[\\[\\]\\|\\$\\?%,~#@]", +contains:[{className:"title",keywords:{$pattern:E, +built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory \u0410\u043d\u0430\u043b\u0438\u0437 \u0411\u0430\u0437\u0430\u0414\u0430\u043d\u043d\u044b\u0445 \u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c \u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c\u0420\u0430\u0441\u0448 \u0411\u043b\u043e\u043a\u0418\u043d\u0444\u043e \u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c \u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c\u0420\u0430\u0441\u0448 \u0411\u043b\u043e\u043a\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0412\u0432\u043e\u0434 \u0412\u0432\u043e\u0434\u041c\u0435\u043d\u044e \u0412\u0435\u0434\u0421 \u0412\u0435\u0434\u0421\u043f\u0440 \u0412\u0435\u0440\u0445\u043d\u044f\u044f\u0413\u0440\u0430\u043d\u0438\u0446\u0430\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0412\u043d\u0435\u0448\u041f\u0440\u043e\u0433\u0440 \u0412\u043e\u0441\u0441\u0442 \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f\u041f\u0430\u043f\u043a\u0430 \u0412\u0440\u0435\u043c\u044f \u0412\u044b\u0431\u043e\u0440SQL \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u0417\u0430\u043f\u0438\u0441\u044c \u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c\u0421\u0442\u0440 \u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0412\u044b\u043f\u041f\u0440\u043e\u0433\u0440 \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u0424\u0430\u0439\u043b \u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0414\u0430\u0442\u0430\u0412\u0440\u0435\u043c\u044f\u0421\u0435\u0440\u0432 \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438 \u0414\u0438\u0430\u043b\u043e\u0433\u0414\u0430\u041d\u0435\u0442 \u0414\u043b\u0438\u043d\u0430\u0421\u0442\u0440 \u0414\u043e\u0431\u041f\u043e\u0434\u0441\u0442\u0440 \u0415\u041f\u0443\u0441\u0442\u043e \u0415\u0441\u043b\u0438\u0422\u043e \u0415\u0427\u0438\u0441\u043b\u043e \u0417\u0430\u043c\u041f\u043e\u0434\u0441\u0442\u0440 \u0417\u0430\u043f\u0438\u0441\u044c\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0417\u043d\u0430\u0447\u041f\u043e\u043b\u044f\u0421\u043f\u0440 \u0418\u0414\u0422\u0438\u043f\u0421\u043f\u0440 \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0414\u0438\u0441\u043a \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0418\u043c\u044f\u0424\u0430\u0439\u043b\u0430 \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u041f\u0443\u0442\u044c \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0418\u0437\u043c\u0414\u0430\u0442 \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0420\u0430\u0437\u043c\u0435\u0440\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0418\u043c\u044f\u041e\u0440\u0433 \u0418\u043c\u044f\u041f\u043e\u043b\u044f\u0421\u043f\u0440 \u0418\u043d\u0434\u0435\u043a\u0441 \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0428\u0430\u0433 \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439\u0420\u0435\u0436\u0438\u043c \u0418\u0442\u043e\u0433\u0422\u0431\u043b\u0421\u043f\u0440 \u041a\u043e\u0434\u0412\u0438\u0434\u0412\u0435\u0434\u0421\u043f\u0440 \u041a\u043e\u0434\u0412\u0438\u0434\u0421\u043f\u0440\u041f\u043e\u0418\u0414 \u041a\u043e\u0434\u041f\u043eAnalit \u041a\u043e\u0434\u0421\u0438\u043c\u0432\u043e\u043b\u0430 \u041a\u043e\u0434\u0421\u043f\u0440 \u041a\u043e\u043b\u041f\u043e\u0434\u0441\u0442\u0440 \u041a\u043e\u043b\u041f\u0440\u043e\u043f \u041a\u043e\u043d\u041c\u0435\u0441 \u041a\u043e\u043d\u0441\u0442 \u041a\u043e\u043d\u0441\u0442\u0415\u0441\u0442\u044c \u041a\u043e\u043d\u0441\u0442\u0417\u043d\u0430\u0447 \u041a\u043e\u043d\u0422\u0440\u0430\u043d \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0424\u0430\u0439\u043b \u041a\u043e\u043f\u0438\u044f\u0421\u0442\u0440 \u041a\u041f\u0435\u0440\u0438\u043e\u0434 \u041a\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u041c\u0430\u043a\u0441 \u041c\u0430\u043a\u0441\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u041c\u0430\u0441\u0441\u0438\u0432 \u041c\u0435\u043d\u044e \u041c\u0435\u043d\u044e\u0420\u0430\u0441\u0448 \u041c\u0438\u043d \u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445\u041d\u0430\u0439\u0442\u0438\u0420\u0430\u0441\u0448 \u041d\u0430\u0438\u043c\u0412\u0438\u0434\u0421\u043f\u0440 \u041d\u0430\u0438\u043c\u041f\u043eAnalit \u041d\u0430\u0438\u043c\u0421\u043f\u0440 \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b\u0421\u0442\u0440\u043e\u043a \u041d\u0430\u0447\u041c\u0435\u0441 \u041d\u0430\u0447\u0422\u0440\u0430\u043d \u041d\u0438\u0436\u043d\u044f\u044f\u0413\u0440\u0430\u043d\u0438\u0446\u0430\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u041d\u043e\u043c\u0435\u0440\u0421\u043f\u0440 \u041d\u041f\u0435\u0440\u0438\u043e\u0434 \u041e\u043a\u043d\u043e \u041e\u043a\u0440 \u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u041e\u0442\u043b\u0418\u043d\u0444\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u041e\u0442\u043b\u0418\u043d\u0444\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u041e\u0442\u0447\u0435\u0442 \u041e\u0442\u0447\u0435\u0442\u0410\u043d\u0430\u043b \u041e\u0442\u0447\u0435\u0442\u0418\u043d\u0442 \u041f\u0430\u043f\u043a\u0430\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u041f\u0430\u0443\u0437\u0430 \u041f\u0412\u044b\u0431\u043e\u0440SQL \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c\u0424\u0430\u0439\u043b \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0424\u0430\u0439\u043b \u041f\u043e\u0434\u0441\u0442\u0440 \u041f\u043e\u0438\u0441\u043a\u041f\u043e\u0434\u0441\u0442\u0440 \u041f\u043e\u0438\u0441\u043a\u0421\u0442\u0440 \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0418\u0414\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0418\u0414 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0418\u043c\u044f \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0421\u0442\u0430\u0442\u0443\u0441 \u041f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0417\u043d\u0430\u0447 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0420\u0430\u0437\u0431\u0421\u0442\u0440 \u0420\u0430\u0437\u043d\u0412\u0440\u0435\u043c\u044f \u0420\u0430\u0437\u043d\u0414\u0430\u0442 \u0420\u0430\u0437\u043d\u0414\u0430\u0442\u0430\u0412\u0440\u0435\u043c\u044f \u0420\u0430\u0437\u043d\u0420\u0430\u0431\u0412\u0440\u0435\u043c\u044f \u0420\u0435\u0433\u0423\u0441\u0442\u0412\u0440\u0435\u043c \u0420\u0435\u0433\u0423\u0441\u0442\u0414\u0430\u0442 \u0420\u0435\u0433\u0423\u0441\u0442\u0427\u0441\u043b \u0420\u0435\u0434\u0422\u0435\u043a\u0441\u0442 \u0420\u0435\u0435\u0441\u0442\u0440\u0417\u0430\u043f\u0438\u0441\u044c \u0420\u0435\u0435\u0441\u0442\u0440\u0421\u043f\u0438\u0441\u043e\u043a\u0418\u043c\u0435\u043d\u041f\u0430\u0440\u0430\u043c \u0420\u0435\u0435\u0441\u0442\u0440\u0427\u0442\u0435\u043d\u0438\u0435 \u0420\u0435\u043a\u0432\u0421\u043f\u0440 \u0420\u0435\u043a\u0432\u0421\u043f\u0440\u041f\u0440 \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0421\u0435\u0439\u0447\u0430\u0441 \u0421\u0435\u0440\u0432\u0435\u0440 \u0421\u0435\u0440\u0432\u0435\u0440\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u0418\u0414 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0424\u0430\u0439\u043b\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0421\u0436\u041f\u0440\u043e\u0431 \u0421\u0438\u043c\u0432\u043e\u043b \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u0414\u0438\u0440\u0435\u043a\u0442\u0443\u043c\u041a\u043e\u0434 \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u041a\u043e\u0434 \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0412\u044b\u0431\u043e\u0440\u0430\u0418\u0437\u0414\u0432\u0443\u0445\u0421\u043f\u0438\u0441\u043a\u043e\u0432 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0412\u044b\u0431\u043e\u0440\u0430\u041f\u0430\u043f\u043a\u0438 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0424\u0430\u0439\u043b\u0430 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u0424\u0430\u0439\u043b\u0430 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0417\u0430\u043f\u0440\u043e\u0441 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041c\u0430\u0441\u0441\u0438\u0432 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041e\u0431\u044a\u0435\u043a\u0442 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041e\u0442\u0447\u0435\u0442 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041f\u0430\u043f\u043a\u0443 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0438\u0441\u043e\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0438\u0441\u043e\u043a\u0421\u0442\u0440\u043e\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0421\u043e\u0437\u0434\u0421\u043f\u0440 \u0421\u043e\u0441\u0442\u0421\u043f\u0440 \u0421\u043e\u0445\u0440 \u0421\u043e\u0445\u0440\u0421\u043f\u0440 \u0421\u043f\u0438\u0441\u043e\u043a\u0421\u0438\u0441\u0442\u0435\u043c \u0421\u043f\u0440 \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c\u0420\u0430\u0441\u0448 \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0421\u043f\u0440\u0418\u0437\u043c\u041d\u0430\u0431\u0414\u0430\u043d \u0421\u043f\u0440\u041a\u043e\u0434 \u0421\u043f\u0440\u041d\u043e\u043c\u0435\u0440 \u0421\u043f\u0440\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0421\u043f\u0440\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0421\u043f\u0440\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0421\u043f\u0440\u041f\u0430\u0440\u0430\u043c \u0421\u043f\u0440\u041f\u043e\u043b\u0435\u0417\u043d\u0430\u0447 \u0421\u043f\u0440\u041f\u043e\u043b\u0435\u0418\u043c\u044f \u0421\u043f\u0440\u0420\u0435\u043a\u0432 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0412\u0432\u0435\u0434\u0417\u043d \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041d\u043e\u0432\u044b\u0435 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041f\u0440 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041f\u0440\u0435\u0434\u0417\u043d \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0420\u0435\u0436\u0438\u043c \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0422\u0438\u043f\u0422\u0435\u043a\u0441\u0442 \u0421\u043f\u0440\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0421\u043f\u0440\u0421\u043e\u0441\u0442 \u0421\u043f\u0440\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0421\u043f\u0440\u0422\u0431\u043b\u0418\u0442\u043e\u0433 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041a\u043e\u043b \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041c\u0430\u043a\u0441 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041c\u0438\u043d \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041f\u0440\u0435\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0421\u043b\u0435\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0421\u043e\u0437\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0423\u0434 \u0421\u043f\u0440\u0422\u0435\u043a\u041f\u0440\u0435\u0434\u0441\u0442 \u0421\u043f\u0440\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c\u0421\u0442\u0440 \u0421\u0442\u0440\u0412\u0435\u0440\u0445\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0421\u0442\u0440\u041d\u0438\u0436\u043d\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u0421\u0443\u043c\u041f\u0440\u043e\u043f \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u041f\u0430\u0440\u0430\u043c \u0422\u0435\u043a\u0412\u0435\u0440\u0441\u0438\u044f \u0422\u0435\u043a\u041e\u0440\u0433 \u0422\u043e\u0447\u043d \u0422\u0440\u0430\u043d \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0423\u0434\u0430\u043b\u0438\u0442\u044c\u0422\u0430\u0431\u043b\u0438\u0446\u0443 \u0423\u0434\u0430\u043b\u0438\u0442\u044c\u0424\u0430\u0439\u043b \u0423\u0434\u0421\u043f\u0440 \u0423\u0434\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u0423\u0441\u0442 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0424\u0430\u0439\u043b\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u0412\u0440\u0435\u043c\u044f \u0424\u0430\u0439\u043b\u0412\u0440\u0435\u043c\u044f\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0417\u0430\u043d\u044f\u0442 \u0424\u0430\u0439\u043b\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0418\u0441\u043a\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041c\u043e\u0436\u043d\u043e\u0427\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0424\u0430\u0439\u043b\u0420\u0430\u0437\u043c\u0435\u0440 \u0424\u0430\u0439\u043b\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0421\u0441\u044b\u043b\u043a\u0430\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0424\u0430\u0439\u043b\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0424\u043c\u0442SQL\u0414\u0430\u0442 \u0424\u043c\u0442\u0414\u0430\u0442 \u0424\u043c\u0442\u0421\u0442\u0440 \u0424\u043c\u0442\u0427\u0441\u043b \u0424\u043e\u0440\u043c\u0430\u0442 \u0426\u041c\u0430\u0441\u0441\u0438\u0432\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0426\u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445\u0420\u0435\u043a\u0432\u0438\u0437\u0438\u0442 \u0426\u041f\u043e\u0434\u0441\u0442\u0440 " +},begin:e,end:"\\(",returnBegin:!0,excludeEnd:!0},I,A,T,_,O]},N,I,A,T,_,O]}}})() +;hljs.registerLanguage("isbl",S)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js new file mode 100644 index 0000000..fe4abda --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js @@ -0,0 +1,37 @@ +/*! `java` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",a="[0-9a-fA-F](_*[0-9a-fA-F])*",n={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function s(e,a,n){return-1===n?"":e.replace(a,(t=>s(e,a,n-1)))} +return e=>{e.regex +;const a="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=a+s("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),i={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"], +literal:["false","true","null"], +type:["char","boolean","long","float","int","byte","short","double"], +built_in:["super","this"]},r={className:"meta",begin:"@"+a,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},l={className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, +className:"string",contains:[e.BACKSLASH_ESCAPE] +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{ +1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword", +3:"title.class"},contains:[l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{ +begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0, +contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,r]}}})() +;hljs.registerLanguage("java",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js new file mode 100644 index 0000000..e2d66b7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js @@ -0,0 +1,76 @@ +/*! `javascript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s) +;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const a=e[0].length+e.index,t=e.input[a] +;if("<"===t||","===t)return void n.ignoreMatch();let s +;">"===t&&(((e,{after:n})=>{const a="</"+e[0].slice(1) +;return-1!==e.input.indexOf(a,n)})(e,{after:a +})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch() +}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c +},u="\\.([0-9](_?[0-9])*)",m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={ +className:"number",variants:[{ +begin:`(\\b(${m})((${u})|\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{ +begin:`\\b(${m})\\b((${u})\\b|\\.)?|(${u})\\b`},{ +begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ +begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ +begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{", +end:"\\}",keywords:g,contains:[]},y={begin:"html`",end:"",starts:{end:"`", +returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},N={ +begin:"css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"css"}},_={className:"string", +begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,A]},f={className:"comment", +variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ +begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, +excludeBegin:!0,relevance:0},{className:"variable",begin:b+"(?=\\s*(-)|$)", +endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] +}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] +},h=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,E];A.contains=h.concat({ +begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(h)}) +;const v=[].concat(f,A.contains),p=v.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:["self"].concat(v)}]),S={className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:p},w={variants:[{ +match:[/class/,/\s+/,b,/\s+/,/extends/,/\s+/,l.concat(b,"(",l.concat(/\./,b),")*")], +scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ +match:[/class/,/\s+/,b],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0, +match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/), +className:"title.class",keywords:{_:[...t,...s]}},O={variants:[{ +match:[/function/,/\s+/,b,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], +className:{1:"keyword",3:"title.function"},label:"func.def",contains:[S], +illegal:/%/},I={ +match:l.concat(/\b/,(k=[...r,"super"],l.concat("(?!",k.join("|"),")")),b,l.lookahead(/\(/)), +className:"title.function",relevance:0};var k;const x={ +begin:l.concat(/\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b, +excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},T={ +match:[/get|set/,/\s+/,b,/(?=\()/],className:{1:"keyword",3:"title.function"}, +contains:[{begin:/\(\)/},S] +},C="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",M={ +match:[/const|var|let/,/\s+/,b,/\s*/,/=\s*/,l.lookahead(C)],className:{ +1:"keyword",3:"title.function"},contains:[S]};return{name:"Javascript", +aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{PARAMS_CONTAINS:p, +CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[o.SHEBANG({label:"shebang", +binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,f,E,R,{className:"attr", +begin:b+l.lookahead(":"),relevance:0},M,{ +begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[f,o.REGEXP_MODE,{ +className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:"</>"},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin, +"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ +begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},O,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:b, +className:"title.function"})]},{match:/\.\.\./,relevance:0},x,{match:"\\$"+b, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[S]},I,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},w,T,{match:/\$[(.]/}]}}})() +;hljs.registerLanguage("javascript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js new file mode 100644 index 0000000..05527a4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js @@ -0,0 +1,10 @@ +/*! `jboss-cli` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"JBoss CLI", +aliases:["wildfly-cli"],keywords:{$pattern:"[a-z-]+", +keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source", +literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{ +className:"params",begin:/--[\w\-=\/]+/},{className:"function", +begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B([\/.])[\w\-.\/=]+/ +},{className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/, +returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}], +relevance:0}]})})();hljs.registerLanguage("jboss-cli",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js new file mode 100644 index 0000000..70b209b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js @@ -0,0 +1,7 @@ +/*! `json` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"JSON",contains:[{ +className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{ +match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{ +beginKeywords:"true false null" +},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}) +})();hljs.registerLanguage("json",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js new file mode 100644 index 0000000..8642d61 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js @@ -0,0 +1,5 @@ +/*! `julia-repl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var a=(()=>{"use strict";return a=>({name:"Julia REPL",contains:[{ +className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/, +subLanguage:"julia"},aliases:["jldoctest"]}]})})() +;hljs.registerLanguage("julia-repl",a)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js new file mode 100644 index 0000000..ac75e5e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js @@ -0,0 +1,18 @@ +/*! `julia` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r, +keyword:["baremodule","begin","break","catch","ccall","const","continue","do","else","elseif","end","export","false","finally","for","function","global","if","import","in","isa","let","local","macro","module","quote","return","true","try","using","where","while"], +literal:["ARGS","C_NULL","DEPOT_PATH","ENDIAN_BOM","ENV","Inf","Inf16","Inf32","Inf64","InsertionSort","LOAD_PATH","MergeSort","NaN","NaN16","NaN32","NaN64","PROGRAM_FILE","QuickSort","RoundDown","RoundFromZero","RoundNearest","RoundNearestTiesAway","RoundNearestTiesUp","RoundToZero","RoundUp","VERSION|0","devnull","false","im","missing","nothing","pi","stderr","stdin","stdout","true","undef","\u03c0","\u212f"], +built_in:["AbstractArray","AbstractChannel","AbstractChar","AbstractDict","AbstractDisplay","AbstractFloat","AbstractIrrational","AbstractMatrix","AbstractRange","AbstractSet","AbstractString","AbstractUnitRange","AbstractVecOrMat","AbstractVector","Any","ArgumentError","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError","LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","ProcessFailedException","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","TaskFailedException","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","UndefKeywordError","UndefRefError","UndefVarError","Union","UnionAll","UnitRange","Unsigned","Val","Vararg","VecElement","VecOrMat","Vector","VersionNumber","WeakKeyDict","WeakRef"] +},n={keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/, +keywords:t},i={className:"variable",begin:"\\$"+r},o={className:"string", +contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/, +relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string", +contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta", +begin:"@"+r};return n.name="Julia",n.contains=[{className:"number", +begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/, +relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{ +className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#", +end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword", +begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/ +}],a.contains=n.contains,n}})();hljs.registerLanguage("julia",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js new file mode 100644 index 0000000..db1a94e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js @@ -0,0 +1,45 @@ +/*! `kotlin` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},i={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},t={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[t,s]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},c={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"string"})]}] +},o=a,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d], +{name:"Kotlin",aliases:["kt","kts"],keywords:n, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},i,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0 +},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:"class", +beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/, +excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js new file mode 100644 index 0000000..58d441a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js @@ -0,0 +1,29 @@ +/*! `lasso` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a="<\\?(lasso(script)?|=)",n="\\]|\\?>",r={ +$pattern:"[a-zA-Z_][\\w.]*|&[lg]t;", +literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft", +built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock", +keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome" +},t=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),s={className:"meta", +begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[t] +}},i={className:"meta",begin:"\\[/noprocess|"+a +},l=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{ +begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{ +illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{ +className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*" +},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*", +end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{ +begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{ +begin:/(->|\.)\s*/,relevance:0,contains:[{className:"symbol", +begin:"'[a-zA-Z_][\\w.]*'"}]},{className:"class",beginKeywords:"define", +returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{name:"Lasso", +aliases:["ls","lassoscript"],case_insensitive:!0,keywords:r,contains:[{ +className:"meta",begin:n,relevance:0,starts:{end:"\\[|"+a,returnEnd:!0, +relevance:0,contains:[t]}},s,i,{className:"meta",begin:"\\[no_square_brackets", +starts:{end:"\\[/no_square_brackets\\]",keywords:r,contains:[{className:"meta", +begin:n,relevance:0,starts:{end:"\\[noprocess\\]|"+a,returnEnd:!0,contains:[t]} +},s,i].concat(l)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta", +begin:"^#!",end:"lasso9$",relevance:10}].concat(l)}}})() +;hljs.registerLanguage("lasso",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js new file mode 100644 index 0000000..a465cd1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js @@ -0,0 +1,33 @@ +/*! `latex` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=[{begin:/\^{6}[0-9a-f]{6}/},{ +begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/},{begin:/\^{3}[0-9a-f]{3}/ +},{begin:/\^{2}[0-9a-f]{2}/},{begin:/\^{2}[\u0000-\u007f]/}],a=[{ +className:"keyword",begin:/\\/,relevance:0,contains:[{endsParent:!0, +begin:e.regex.either(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:/% ?!(T[eE]X|tex|BIB|bib)/,end:"$",relevance:10 +},e.COMMENT("%","$",{relevance:0})],i={begin:/\{/,end:/\}/,relevance:0, +contains:["self",...a]},t=e.inherit(i,{relevance:0,endsParent:!0, +contains:[i,...a]}),r={begin:/\[/,end:/\]/,endsParent:!0,relevance:0, +contains:[i,...a]},s={begin:/\s+/,relevance:0},c=[t],l=[r],o=(e,n)=>({ +contains:[s],starts:{relevance:0,contains:e,starts:n}}),d=(e,n)=>({ +begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/,keyword:"\\"+e +},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["tex"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})();hljs.registerLanguage("latex",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js new file mode 100644 index 0000000..aa7a5af --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js @@ -0,0 +1,5 @@ +/*! `ldif` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var a=(()=>{"use strict";return a=>({name:"LDIF",contains:[{ +className:"attribute",match:"^dn(?=:)",relevance:10},{className:"attribute", +match:"^\\w+(?=:)"},{className:"literal",match:"^-"},a.HASH_COMMENT_MODE]})})() +;hljs.registerLanguage("ldif",a)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js new file mode 100644 index 0000000..ada6f7a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js @@ -0,0 +1,8 @@ +/*! `leaf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Leaf",contains:[{ +className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:/ \{/,returnBegin:!0, +excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title", +begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)", +endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{ +className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]})})() +;hljs.registerLanguage("leaf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js new file mode 100644 index 0000000..3e457ca --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js @@ -0,0 +1,43 @@ +/*! `less` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),n=i.concat(r) +;return a=>{const s=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}))(a),l=n,d="([\\w-]+|@\\{[\\w-]+\\})",c=[],g=[],m=e=>({className:"string", +begin:"~?"+e+".*?"+e}),p=(e,t,i)=>({className:e,begin:t,relevance:i}),b={ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:t.join(" ")},u={ +begin:"\\(",end:"\\)",contains:g,keywords:b,relevance:0} +;g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,m("'"),m('"'),s.CSS_NUMBER_MODE,{ +begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", +excludeEnd:!0} +},s.HEXCOLOR,u,p("variable","@@?[\\w-]+",10),p("variable","@\\{[\\w-]+\\}"),p("built_in","~?`[^`]*?`"),{ +className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0 +},s.IMPORTANT);const h=g.concat({begin:/\{/,end:/\}/,contains:c}),f={ +beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not" +}].concat(g)},v={begin:d+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0, +contains:[{begin:/-(webkit|moz|ms|o)-/},s.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+o.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0, +illegal:"[<=$]",relevance:0,contains:g}}]},w={className:"keyword", +begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", +starts:{end:"[;{}]",keywords:b,returnEnd:!0,contains:g,relevance:0}},k={ +className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{ +begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:h}},y={variants:[{ +begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:d,end:/\{/}],returnBegin:!0, +returnEnd:!0,illegal:"[<='$\"]",relevance:0, +contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,f,p("keyword","all\\b"),p("variable","@\\{[\\w-]+\\}"),{ +begin:"\\b("+e.join("|")+")\\b",className:"selector-tag" +},s.CSS_NUMBER_MODE,p("selector-tag",d,0),p("selector-id","#"+d),p("selector-class","\\."+d,0),p("selector-tag","&",0),s.ATTRIBUTE_SELECTOR_MODE,{ +className:"selector-pseudo",begin:":("+i.join("|")+")"},{ +className:"selector-pseudo",begin:":(:)?("+r.join("|")+")"},{begin:/\(/, +end:/\)/,relevance:0,contains:h},{begin:"!important"},s.FUNCTION_DISPATCH]},x={ +begin:`[\\w-]+:(:)?(${l.join("|")})`,returnBegin:!0,contains:[y]} +;return c.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,w,k,x,v,y),{ +name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:c}}})() +;hljs.registerLanguage("less",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js new file mode 100644 index 0000000..ec971f1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js @@ -0,0 +1,17 @@ +/*! `lisp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},v={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},o={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[v,o,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,v,o,m,c]}}})();hljs.registerLanguage("lisp",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js new file mode 100644 index 0000000..168ba4c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js @@ -0,0 +1,21 @@ +/*! `livecodeserver` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const r={className:"variable", +variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{ +begin:"\\$_[A-Z]+"}],relevance:0 +},t=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],a=e.inherit(e.TITLE_MODE,{ +variants:[{begin:"\\b_*rig[A-Z][A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}] +}),o=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{ +name:"LiveCode",case_insensitive:!1,keywords:{ +keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys", +literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK", +built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write" +},contains:[r,{className:"keyword",begin:"\\bend\\sif\\b"},{ +className:"function",beginKeywords:"function",end:"$", +contains:[r,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a] +},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end", +contains:[o,a],relevance:0},{beginKeywords:"command on",end:"$", +contains:[r,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a] +},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{ +begin:"<\\?"},{begin:"\\?>"}] +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a].concat(t), +illegal:";$|^\\[|^=|&|\\{"}}})();hljs.registerLanguage("livecodeserver",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js new file mode 100644 index 0000000..e9d2e70 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js @@ -0,0 +1,35 @@ +/*! `livescript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]) +;return r=>{const t={ +keyword:e.concat(["then","unless","until","loop","of","by","when","and","or","is","isnt","not","it","that","otherwise","from","to","til","fallthrough","case","enum","native","list","map","__hasProp","__extends","__slice","__bind","__indexOf"]), +literal:n.concat(["yes","no","on","off","it","that","void"]), +built_in:a.concat(["npm","print"]) +},i="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",s=r.inherit(r.TITLE_MODE,{ +begin:i}),o={className:"subst",begin:/#\{/,end:/\}/,keywords:t},c={ +className:"subst",begin:/#[A-Za-z$_]/,end:/(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/, +keywords:t},l=[r.BINARY_NUMBER_MODE,{className:"number", +begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)", +relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{ +begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/, +contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/, +contains:[r.BACKSLASH_ESCAPE,o,c]},{begin:/"/,end:/"/, +contains:[r.BACKSLASH_ESCAPE,o,c]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{ +className:"regexp",variants:[{begin:"//",end:"//[gim]*", +contains:[o,r.HASH_COMMENT_MODE]},{ +begin:/\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/}]},{begin:"@"+i},{begin:"``", +end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];o.contains=l +;const d={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/, +end:/\)/,keywords:t,contains:["self"].concat(l)}]};return{name:"LiveScript", +aliases:["ls"],keywords:t,illegal:/\/\*/, +contains:l.concat([r.COMMENT("\\/\\*","\\*\\/"),r.HASH_COMMENT_MODE,{ +begin:"(#=>|=>|\\|>>|-?->|!->)"},{className:"function",contains:[s,d], +returnBegin:!0,variants:[{ +begin:"("+i+"\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B->\\*?",end:"->\\*?"},{ +begin:"("+i+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\)\\s*)?\\B[-~]{1,2}>\\*?", +end:"[-~]{1,2}>\\*?"},{ +begin:"("+i+"\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B!?[-~]{1,2}>\\*?", +end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$", +illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0, +illegal:/[:="\[\]]/,contains:[s]},s]},{begin:i+":",end:":",returnBegin:!0, +returnEnd:!0,relevance:0}])}}})();hljs.registerLanguage("livescript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js new file mode 100644 index 0000000..b56058a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js @@ -0,0 +1,14 @@ +/*! `llvm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,n=/([-a-zA-Z$._][\w$.-]*)/,t={className:"variable",variants:[{ +begin:a.concat(/%/,n)},{begin:/%\d+/},{begin:/#\d+/}]},i={className:"title", +variants:[{begin:a.concat(/@/,n)},{begin:/@\d+/},{begin:a.concat(/!/,n)},{ +begin:a.concat(/!\d+/,n)},{begin:/!\d+/}]};return{name:"LLVM IR", +keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double", +contains:[{className:"type",begin:/\bi\d+(?=\s|\b)/},e.COMMENT(/;\s*$/,null,{ +relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string", +variants:[{begin:/"/,end:/[^\\]"/}]},i,{className:"punctuation",relevance:0, +begin:/,/},{className:"operator",relevance:0,begin:/=/},t,{className:"symbol", +variants:[{begin:/^\s*[a-z]+:/}],relevance:0},{className:"number",variants:[{ +begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/ +}],relevance:0}]}}})();hljs.registerLanguage("llvm",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js new file mode 100644 index 0000000..9fa9d9c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js @@ -0,0 +1,19 @@ +/*! `lsl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var E=(()=>{"use strict";return E=>{var T={className:"number",relevance:0, +begin:E.C_NUMBER_RE};return{name:"LSL (Linden Scripting Language)",illegal:":", +contains:[{className:"string",begin:'"',end:'"',contains:[{className:"subst", +begin:/\\[tn"\\]/}]},{className:"comment", +variants:[E.COMMENT("//","$"),E.COMMENT("/\\*","\\*/")],relevance:0},T,{ +className:"section",variants:[{begin:"\\b(state|default)\\b"},{ +begin:"\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b" +}]},{className:"built_in", +begin:"\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b" +},{className:"literal",variants:[{ +begin:"\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{ +begin:"\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b" +},{begin:"\\b(FALSE|TRUE)\\b"},{begin:"\\b(ZERO_ROTATION)\\b"},{ +begin:"\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b" +},{begin:"\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b"}]},{ +className:"type", +begin:"\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}})() +;hljs.registerLanguage("lsl",E)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js new file mode 100644 index 0000000..4c73a41 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js @@ -0,0 +1,15 @@ +/*! `lua` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t="\\[=*\\[",a="\\]=*\\]",n={ +begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE, +literal:"true false nil", +keyword:"and break do else elseif end for goto if in local not or repeat return then until while", +built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" +},contains:o.concat([{className:"function",beginKeywords:"function",end:"\\)", +contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", +begin:"\\(",endsWithParent:!0,contains:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage("lua",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js new file mode 100644 index 0000000..b99e22f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js @@ -0,0 +1,14 @@ +/*! `makefile` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const i={className:"variable", +variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},a={className:"string", +begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i]},n={className:"variable", +begin:/\$\([\w-]+\s/,end:/\)/,keywords:{ +built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value" +},contains:[i]},s={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={ +className:"section",begin:/^[^\s]+:/,end:/$/,contains:[i]};return{ +name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/, +keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath" +},contains:[e.HASH_COMMENT_MODE,i,a,n,s,{className:"meta",begin:/^\.PHONY:/, +end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}}})() +;hljs.registerLanguage("makefile",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js new file mode 100644 index 0000000..1c7a076 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js @@ -0,0 +1,31 @@ +/*! `markdown` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, +end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, +relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i) +;let c=[n,a] +;return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c), +c=c.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:c}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() +;hljs.registerLanguage("markdown",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js new file mode 100644 index 0000000..8441420 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js @@ -0,0 +1,21 @@ +/*! `mathematica` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["AASTriangle","AbelianGroup","Abort","AbortKernels","AbortProtect","AbortScheduledTask","Above","Abs","AbsArg","AbsArgPlot","Absolute","AbsoluteCorrelation","AbsoluteCorrelationFunction","AbsoluteCurrentValue","AbsoluteDashing","AbsoluteFileName","AbsoluteOptions","AbsolutePointSize","AbsoluteThickness","AbsoluteTime","AbsoluteTiming","AcceptanceThreshold","AccountingForm","Accumulate","Accuracy","AccuracyGoal","ActionDelay","ActionMenu","ActionMenuBox","ActionMenuBoxOptions","Activate","Active","ActiveClassification","ActiveClassificationObject","ActiveItem","ActivePrediction","ActivePredictionObject","ActiveStyle","AcyclicGraphQ","AddOnHelpPath","AddSides","AddTo","AddToSearchIndex","AddUsers","AdjacencyGraph","AdjacencyList","AdjacencyMatrix","AdjacentMeshCells","AdjustmentBox","AdjustmentBoxOptions","AdjustTimeSeriesForecast","AdministrativeDivisionData","AffineHalfSpace","AffineSpace","AffineStateSpaceModel","AffineTransform","After","AggregatedEntityClass","AggregationLayer","AircraftData","AirportData","AirPressureData","AirTemperatureData","AiryAi","AiryAiPrime","AiryAiZero","AiryBi","AiryBiPrime","AiryBiZero","AlgebraicIntegerQ","AlgebraicNumber","AlgebraicNumberDenominator","AlgebraicNumberNorm","AlgebraicNumberPolynomial","AlgebraicNumberTrace","AlgebraicRules","AlgebraicRulesData","Algebraics","AlgebraicUnitQ","Alignment","AlignmentMarker","AlignmentPoint","All","AllowAdultContent","AllowedCloudExtraParameters","AllowedCloudParameterExtensions","AllowedDimensions","AllowedFrequencyRange","AllowedHeads","AllowGroupClose","AllowIncomplete","AllowInlineCells","AllowKernelInitialization","AllowLooseGrammar","AllowReverseGroupClose","AllowScriptLevelChange","AllowVersionUpdate","AllTrue","Alphabet","AlphabeticOrder","AlphabeticSort","AlphaChannel","AlternateImage","AlternatingFactorial","AlternatingGroup","AlternativeHypothesis","Alternatives","AltitudeMethod","AmbientLight","AmbiguityFunction","AmbiguityList","Analytic","AnatomyData","AnatomyForm","AnatomyPlot3D","AnatomySkinStyle","AnatomyStyling","AnchoredSearch","And","AndersonDarlingTest","AngerJ","AngleBisector","AngleBracket","AnglePath","AnglePath3D","AngleVector","AngularGauge","Animate","AnimationCycleOffset","AnimationCycleRepetitions","AnimationDirection","AnimationDisplayTime","AnimationRate","AnimationRepetitions","AnimationRunning","AnimationRunTime","AnimationTimeIndex","Animator","AnimatorBox","AnimatorBoxOptions","AnimatorElements","Annotate","Annotation","AnnotationDelete","AnnotationKeys","AnnotationRules","AnnotationValue","Annuity","AnnuityDue","Annulus","AnomalyDetection","AnomalyDetector","AnomalyDetectorFunction","Anonymous","Antialiasing","AntihermitianMatrixQ","Antisymmetric","AntisymmetricMatrixQ","Antonyms","AnyOrder","AnySubset","AnyTrue","Apart","ApartSquareFree","APIFunction","Appearance","AppearanceElements","AppearanceRules","AppellF1","Append","AppendCheck","AppendLayer","AppendTo","Apply","ApplySides","ArcCos","ArcCosh","ArcCot","ArcCoth","ArcCsc","ArcCsch","ArcCurvature","ARCHProcess","ArcLength","ArcSec","ArcSech","ArcSin","ArcSinDistribution","ArcSinh","ArcTan","ArcTanh","Area","Arg","ArgMax","ArgMin","ArgumentCountQ","ARIMAProcess","ArithmeticGeometricMean","ARMAProcess","Around","AroundReplace","ARProcess","Array","ArrayComponents","ArrayDepth","ArrayFilter","ArrayFlatten","ArrayMesh","ArrayPad","ArrayPlot","ArrayQ","ArrayResample","ArrayReshape","ArrayRules","Arrays","Arrow","Arrow3DBox","ArrowBox","Arrowheads","ASATriangle","Ask","AskAppend","AskConfirm","AskDisplay","AskedQ","AskedValue","AskFunction","AskState","AskTemplateDisplay","AspectRatio","AspectRatioFixed","Assert","AssociateTo","Association","AssociationFormat","AssociationMap","AssociationQ","AssociationThread","AssumeDeterministic","Assuming","Assumptions","AstronomicalData","Asymptotic","AsymptoticDSolveValue","AsymptoticEqual","AsymptoticEquivalent","AsymptoticGreater","AsymptoticGreaterEqual","AsymptoticIntegrate","AsymptoticLess","AsymptoticLessEqual","AsymptoticOutputTracker","AsymptoticProduct","AsymptoticRSolveValue","AsymptoticSolve","AsymptoticSum","Asynchronous","AsynchronousTaskObject","AsynchronousTasks","Atom","AtomCoordinates","AtomCount","AtomDiagramCoordinates","AtomList","AtomQ","AttentionLayer","Attributes","Audio","AudioAmplify","AudioAnnotate","AudioAnnotationLookup","AudioBlockMap","AudioCapture","AudioChannelAssignment","AudioChannelCombine","AudioChannelMix","AudioChannels","AudioChannelSeparate","AudioData","AudioDelay","AudioDelete","AudioDevice","AudioDistance","AudioEncoding","AudioFade","AudioFrequencyShift","AudioGenerator","AudioIdentify","AudioInputDevice","AudioInsert","AudioInstanceQ","AudioIntervals","AudioJoin","AudioLabel","AudioLength","AudioLocalMeasurements","AudioLooping","AudioLoudness","AudioMeasurements","AudioNormalize","AudioOutputDevice","AudioOverlay","AudioPad","AudioPan","AudioPartition","AudioPause","AudioPitchShift","AudioPlay","AudioPlot","AudioQ","AudioRecord","AudioReplace","AudioResample","AudioReverb","AudioReverse","AudioSampleRate","AudioSpectralMap","AudioSpectralTransformation","AudioSplit","AudioStop","AudioStream","AudioStreams","AudioTimeStretch","AudioTracks","AudioTrim","AudioType","AugmentedPolyhedron","AugmentedSymmetricPolynomial","Authenticate","Authentication","AuthenticationDialog","AutoAction","Autocomplete","AutocompletionFunction","AutoCopy","AutocorrelationTest","AutoDelete","AutoEvaluateEvents","AutoGeneratedPackage","AutoIndent","AutoIndentSpacings","AutoItalicWords","AutoloadPath","AutoMatch","Automatic","AutomaticImageSize","AutoMultiplicationSymbol","AutoNumberFormatting","AutoOpenNotebooks","AutoOpenPalettes","AutoQuoteCharacters","AutoRefreshed","AutoRemove","AutorunSequencing","AutoScaling","AutoScroll","AutoSpacing","AutoStyleOptions","AutoStyleWords","AutoSubmitting","Axes","AxesEdge","AxesLabel","AxesOrigin","AxesStyle","AxiomaticTheory","Axis","BabyMonsterGroupB","Back","Background","BackgroundAppearance","BackgroundTasksSettings","Backslash","Backsubstitution","Backward","Ball","Band","BandpassFilter","BandstopFilter","BarabasiAlbertGraphDistribution","BarChart","BarChart3D","BarcodeImage","BarcodeRecognize","BaringhausHenzeTest","BarLegend","BarlowProschanImportance","BarnesG","BarOrigin","BarSpacing","BartlettHannWindow","BartlettWindow","BaseDecode","BaseEncode","BaseForm","Baseline","BaselinePosition","BaseStyle","BasicRecurrentLayer","BatchNormalizationLayer","BatchSize","BatesDistribution","BattleLemarieWavelet","BayesianMaximization","BayesianMaximizationObject","BayesianMinimization","BayesianMinimizationObject","Because","BeckmannDistribution","Beep","Before","Begin","BeginDialogPacket","BeginFrontEndInteractionPacket","BeginPackage","BellB","BellY","Below","BenfordDistribution","BeniniDistribution","BenktanderGibratDistribution","BenktanderWeibullDistribution","BernoulliB","BernoulliDistribution","BernoulliGraphDistribution","BernoulliProcess","BernsteinBasis","BesselFilterModel","BesselI","BesselJ","BesselJZero","BesselK","BesselY","BesselYZero","Beta","BetaBinomialDistribution","BetaDistribution","BetaNegativeBinomialDistribution","BetaPrimeDistribution","BetaRegularized","Between","BetweennessCentrality","BeveledPolyhedron","BezierCurve","BezierCurve3DBox","BezierCurve3DBoxOptions","BezierCurveBox","BezierCurveBoxOptions","BezierFunction","BilateralFilter","Binarize","BinaryDeserialize","BinaryDistance","BinaryFormat","BinaryImageQ","BinaryRead","BinaryReadList","BinarySerialize","BinaryWrite","BinCounts","BinLists","Binomial","BinomialDistribution","BinomialProcess","BinormalDistribution","BiorthogonalSplineWavelet","BipartiteGraphQ","BiquadraticFilterModel","BirnbaumImportance","BirnbaumSaundersDistribution","BitAnd","BitClear","BitGet","BitLength","BitNot","BitOr","BitSet","BitShiftLeft","BitShiftRight","BitXor","BiweightLocation","BiweightMidvariance","Black","BlackmanHarrisWindow","BlackmanNuttallWindow","BlackmanWindow","Blank","BlankForm","BlankNullSequence","BlankSequence","Blend","Block","BlockchainAddressData","BlockchainBase","BlockchainBlockData","BlockchainContractValue","BlockchainData","BlockchainGet","BlockchainKeyEncode","BlockchainPut","BlockchainTokenData","BlockchainTransaction","BlockchainTransactionData","BlockchainTransactionSign","BlockchainTransactionSubmit","BlockMap","BlockRandom","BlomqvistBeta","BlomqvistBetaTest","Blue","Blur","BodePlot","BohmanWindow","Bold","Bond","BondCount","BondList","BondQ","Bookmarks","Boole","BooleanConsecutiveFunction","BooleanConvert","BooleanCountingFunction","BooleanFunction","BooleanGraph","BooleanMaxterms","BooleanMinimize","BooleanMinterms","BooleanQ","BooleanRegion","Booleans","BooleanStrings","BooleanTable","BooleanVariables","BorderDimensions","BorelTannerDistribution","Bottom","BottomHatTransform","BoundaryDiscretizeGraphics","BoundaryDiscretizeRegion","BoundaryMesh","BoundaryMeshRegion","BoundaryMeshRegionQ","BoundaryStyle","BoundedRegionQ","BoundingRegion","Bounds","Box","BoxBaselineShift","BoxData","BoxDimensions","Boxed","Boxes","BoxForm","BoxFormFormatTypes","BoxFrame","BoxID","BoxMargins","BoxMatrix","BoxObject","BoxRatios","BoxRotation","BoxRotationPoint","BoxStyle","BoxWhiskerChart","Bra","BracketingBar","BraKet","BrayCurtisDistance","BreadthFirstScan","Break","BridgeData","BrightnessEqualize","BroadcastStationData","Brown","BrownForsytheTest","BrownianBridgeProcess","BrowserCategory","BSplineBasis","BSplineCurve","BSplineCurve3DBox","BSplineCurve3DBoxOptions","BSplineCurveBox","BSplineCurveBoxOptions","BSplineFunction","BSplineSurface","BSplineSurface3DBox","BSplineSurface3DBoxOptions","BubbleChart","BubbleChart3D","BubbleScale","BubbleSizes","BuildingData","BulletGauge","BusinessDayQ","ButterflyGraph","ButterworthFilterModel","Button","ButtonBar","ButtonBox","ButtonBoxOptions","ButtonCell","ButtonContents","ButtonData","ButtonEvaluator","ButtonExpandable","ButtonFrame","ButtonFunction","ButtonMargins","ButtonMinHeight","ButtonNote","ButtonNotebook","ButtonSource","ButtonStyle","ButtonStyleMenuListing","Byte","ByteArray","ByteArrayFormat","ByteArrayQ","ByteArrayToString","ByteCount","ByteOrdering","C","CachedValue","CacheGraphics","CachePersistence","CalendarConvert","CalendarData","CalendarType","Callout","CalloutMarker","CalloutStyle","CallPacket","CanberraDistance","Cancel","CancelButton","CandlestickChart","CanonicalGraph","CanonicalizePolygon","CanonicalizePolyhedron","CanonicalName","CanonicalWarpingCorrespondence","CanonicalWarpingDistance","CantorMesh","CantorStaircase","Cap","CapForm","CapitalDifferentialD","Capitalize","CapsuleShape","CaptureRunning","CardinalBSplineBasis","CarlemanLinearize","CarmichaelLambda","CaseOrdering","Cases","CaseSensitive","Cashflow","Casoratian","Catalan","CatalanNumber","Catch","CategoricalDistribution","Catenate","CatenateLayer","CauchyDistribution","CauchyWindow","CayleyGraph","CDF","CDFDeploy","CDFInformation","CDFWavelet","Ceiling","CelestialSystem","Cell","CellAutoOverwrite","CellBaseline","CellBoundingBox","CellBracketOptions","CellChangeTimes","CellContents","CellContext","CellDingbat","CellDynamicExpression","CellEditDuplicate","CellElementsBoundingBox","CellElementSpacings","CellEpilog","CellEvaluationDuplicate","CellEvaluationFunction","CellEvaluationLanguage","CellEventActions","CellFrame","CellFrameColor","CellFrameLabelMargins","CellFrameLabels","CellFrameMargins","CellGroup","CellGroupData","CellGrouping","CellGroupingRules","CellHorizontalScrolling","CellID","CellLabel","CellLabelAutoDelete","CellLabelMargins","CellLabelPositioning","CellLabelStyle","CellLabelTemplate","CellMargins","CellObject","CellOpen","CellPrint","CellProlog","Cells","CellSize","CellStyle","CellTags","CellularAutomaton","CensoredDistribution","Censoring","Center","CenterArray","CenterDot","CentralFeature","CentralMoment","CentralMomentGeneratingFunction","Cepstrogram","CepstrogramArray","CepstrumArray","CForm","ChampernowneNumber","ChangeOptions","ChannelBase","ChannelBrokerAction","ChannelDatabin","ChannelHistoryLength","ChannelListen","ChannelListener","ChannelListeners","ChannelListenerWait","ChannelObject","ChannelPreSendFunction","ChannelReceiverFunction","ChannelSend","ChannelSubscribers","ChanVeseBinarize","Character","CharacterCounts","CharacterEncoding","CharacterEncodingsPath","CharacteristicFunction","CharacteristicPolynomial","CharacterName","CharacterNormalize","CharacterRange","Characters","ChartBaseStyle","ChartElementData","ChartElementDataFunction","ChartElementFunction","ChartElements","ChartLabels","ChartLayout","ChartLegends","ChartStyle","Chebyshev1FilterModel","Chebyshev2FilterModel","ChebyshevDistance","ChebyshevT","ChebyshevU","Check","CheckAbort","CheckAll","Checkbox","CheckboxBar","CheckboxBox","CheckboxBoxOptions","ChemicalData","ChessboardDistance","ChiDistribution","ChineseRemainder","ChiSquareDistribution","ChoiceButtons","ChoiceDialog","CholeskyDecomposition","Chop","ChromaticityPlot","ChromaticityPlot3D","ChromaticPolynomial","Circle","CircleBox","CircleDot","CircleMinus","CirclePlus","CirclePoints","CircleThrough","CircleTimes","CirculantGraph","CircularOrthogonalMatrixDistribution","CircularQuaternionMatrixDistribution","CircularRealMatrixDistribution","CircularSymplecticMatrixDistribution","CircularUnitaryMatrixDistribution","Circumsphere","CityData","ClassifierFunction","ClassifierInformation","ClassifierMeasurements","ClassifierMeasurementsObject","Classify","ClassPriors","Clear","ClearAll","ClearAttributes","ClearCookies","ClearPermissions","ClearSystemCache","ClebschGordan","ClickPane","Clip","ClipboardNotebook","ClipFill","ClippingStyle","ClipPlanes","ClipPlanesStyle","ClipRange","Clock","ClockGauge","ClockwiseContourIntegral","Close","Closed","CloseKernels","ClosenessCentrality","Closing","ClosingAutoSave","ClosingEvent","ClosingSaveDialog","CloudAccountData","CloudBase","CloudConnect","CloudConnections","CloudDeploy","CloudDirectory","CloudDisconnect","CloudEvaluate","CloudExport","CloudExpression","CloudExpressions","CloudFunction","CloudGet","CloudImport","CloudLoggingData","CloudObject","CloudObjectInformation","CloudObjectInformationData","CloudObjectNameFormat","CloudObjects","CloudObjectURLType","CloudPublish","CloudPut","CloudRenderingMethod","CloudSave","CloudShare","CloudSubmit","CloudSymbol","CloudUnshare","CloudUserID","ClusterClassify","ClusterDissimilarityFunction","ClusteringComponents","ClusteringTree","CMYKColor","Coarse","CodeAssistOptions","Coefficient","CoefficientArrays","CoefficientDomain","CoefficientList","CoefficientRules","CoifletWavelet","Collect","Colon","ColonForm","ColorBalance","ColorCombine","ColorConvert","ColorCoverage","ColorData","ColorDataFunction","ColorDetect","ColorDistance","ColorFunction","ColorFunctionScaling","Colorize","ColorNegate","ColorOutput","ColorProfileData","ColorQ","ColorQuantize","ColorReplace","ColorRules","ColorSelectorSettings","ColorSeparate","ColorSetter","ColorSetterBox","ColorSetterBoxOptions","ColorSlider","ColorsNear","ColorSpace","ColorToneMapping","Column","ColumnAlignments","ColumnBackgrounds","ColumnForm","ColumnLines","ColumnsEqual","ColumnSpacings","ColumnWidths","CombinedEntityClass","CombinerFunction","CometData","CommonDefaultFormatTypes","Commonest","CommonestFilter","CommonName","CommonUnits","CommunityBoundaryStyle","CommunityGraphPlot","CommunityLabels","CommunityRegionStyle","CompanyData","CompatibleUnitQ","CompilationOptions","CompilationTarget","Compile","Compiled","CompiledCodeFunction","CompiledFunction","CompilerOptions","Complement","ComplementedEntityClass","CompleteGraph","CompleteGraphQ","CompleteKaryTree","CompletionsListPacket","Complex","ComplexContourPlot","Complexes","ComplexExpand","ComplexInfinity","ComplexityFunction","ComplexListPlot","ComplexPlot","ComplexPlot3D","ComplexRegionPlot","ComplexStreamPlot","ComplexVectorPlot","ComponentMeasurements","ComponentwiseContextMenu","Compose","ComposeList","ComposeSeries","CompositeQ","Composition","CompoundElement","CompoundExpression","CompoundPoissonDistribution","CompoundPoissonProcess","CompoundRenewalProcess","Compress","CompressedData","CompressionLevel","ComputeUncertainty","Condition","ConditionalExpression","Conditioned","Cone","ConeBox","ConfidenceLevel","ConfidenceRange","ConfidenceTransform","ConfigurationPath","ConformAudio","ConformImages","Congruent","ConicHullRegion","ConicHullRegion3DBox","ConicHullRegionBox","ConicOptimization","Conjugate","ConjugateTranspose","Conjunction","Connect","ConnectedComponents","ConnectedGraphComponents","ConnectedGraphQ","ConnectedMeshComponents","ConnectedMoleculeComponents","ConnectedMoleculeQ","ConnectionSettings","ConnectLibraryCallbackFunction","ConnectSystemModelComponents","ConnesWindow","ConoverTest","ConsoleMessage","ConsoleMessagePacket","Constant","ConstantArray","ConstantArrayLayer","ConstantImage","ConstantPlusLayer","ConstantRegionQ","Constants","ConstantTimesLayer","ConstellationData","ConstrainedMax","ConstrainedMin","Construct","Containing","ContainsAll","ContainsAny","ContainsExactly","ContainsNone","ContainsOnly","ContentFieldOptions","ContentLocationFunction","ContentObject","ContentPadding","ContentsBoundingBox","ContentSelectable","ContentSize","Context","ContextMenu","Contexts","ContextToFileName","Continuation","Continue","ContinuedFraction","ContinuedFractionK","ContinuousAction","ContinuousMarkovProcess","ContinuousTask","ContinuousTimeModelQ","ContinuousWaveletData","ContinuousWaveletTransform","ContourDetect","ContourGraphics","ContourIntegral","ContourLabels","ContourLines","ContourPlot","ContourPlot3D","Contours","ContourShading","ContourSmoothing","ContourStyle","ContraharmonicMean","ContrastiveLossLayer","Control","ControlActive","ControlAlignment","ControlGroupContentsBox","ControllabilityGramian","ControllabilityMatrix","ControllableDecomposition","ControllableModelQ","ControllerDuration","ControllerInformation","ControllerInformationData","ControllerLinking","ControllerManipulate","ControllerMethod","ControllerPath","ControllerState","ControlPlacement","ControlsRendering","ControlType","Convergents","ConversionOptions","ConversionRules","ConvertToBitmapPacket","ConvertToPostScript","ConvertToPostScriptPacket","ConvexHullMesh","ConvexPolygonQ","ConvexPolyhedronQ","ConvolutionLayer","Convolve","ConwayGroupCo1","ConwayGroupCo2","ConwayGroupCo3","CookieFunction","Cookies","CoordinateBoundingBox","CoordinateBoundingBoxArray","CoordinateBounds","CoordinateBoundsArray","CoordinateChartData","CoordinatesToolOptions","CoordinateTransform","CoordinateTransformData","CoprimeQ","Coproduct","CopulaDistribution","Copyable","CopyDatabin","CopyDirectory","CopyFile","CopyTag","CopyToClipboard","CornerFilter","CornerNeighbors","Correlation","CorrelationDistance","CorrelationFunction","CorrelationTest","Cos","Cosh","CoshIntegral","CosineDistance","CosineWindow","CosIntegral","Cot","Coth","Count","CountDistinct","CountDistinctBy","CounterAssignments","CounterBox","CounterBoxOptions","CounterClockwiseContourIntegral","CounterEvaluator","CounterFunction","CounterIncrements","CounterStyle","CounterStyleMenuListing","CountRoots","CountryData","Counts","CountsBy","Covariance","CovarianceEstimatorFunction","CovarianceFunction","CoxianDistribution","CoxIngersollRossProcess","CoxModel","CoxModelFit","CramerVonMisesTest","CreateArchive","CreateCellID","CreateChannel","CreateCloudExpression","CreateDatabin","CreateDataStructure","CreateDataSystemModel","CreateDialog","CreateDirectory","CreateDocument","CreateFile","CreateIntermediateDirectories","CreateManagedLibraryExpression","CreateNotebook","CreatePacletArchive","CreatePalette","CreatePalettePacket","CreatePermissionsGroup","CreateScheduledTask","CreateSearchIndex","CreateSystemModel","CreateTemporary","CreateUUID","CreateWindow","CriterionFunction","CriticalityFailureImportance","CriticalitySuccessImportance","CriticalSection","Cross","CrossEntropyLossLayer","CrossingCount","CrossingDetect","CrossingPolygon","CrossMatrix","Csc","Csch","CTCLossLayer","Cube","CubeRoot","Cubics","Cuboid","CuboidBox","Cumulant","CumulantGeneratingFunction","Cup","CupCap","Curl","CurlyDoubleQuote","CurlyQuote","CurrencyConvert","CurrentDate","CurrentImage","CurrentlySpeakingPacket","CurrentNotebookImage","CurrentScreenImage","CurrentValue","Curry","CurryApplied","CurvatureFlowFilter","CurveClosed","Cyan","CycleGraph","CycleIndexPolynomial","Cycles","CyclicGroup","Cyclotomic","Cylinder","CylinderBox","CylindricalDecomposition","D","DagumDistribution","DamData","DamerauLevenshteinDistance","DampingFactor","Darker","Dashed","Dashing","DatabaseConnect","DatabaseDisconnect","DatabaseReference","Databin","DatabinAdd","DatabinRemove","Databins","DatabinUpload","DataCompression","DataDistribution","DataRange","DataReversed","Dataset","DatasetDisplayPanel","DataStructure","DataStructureQ","Date","DateBounds","Dated","DateDelimiters","DateDifference","DatedUnit","DateFormat","DateFunction","DateHistogram","DateInterval","DateList","DateListLogPlot","DateListPlot","DateListStepPlot","DateObject","DateObjectQ","DateOverlapsQ","DatePattern","DatePlus","DateRange","DateReduction","DateString","DateTicksFormat","DateValue","DateWithinQ","DaubechiesWavelet","DavisDistribution","DawsonF","DayCount","DayCountConvention","DayHemisphere","DaylightQ","DayMatchQ","DayName","DayNightTerminator","DayPlus","DayRange","DayRound","DeBruijnGraph","DeBruijnSequence","Debug","DebugTag","Decapitalize","Decimal","DecimalForm","DeclareKnownSymbols","DeclarePackage","Decompose","DeconvolutionLayer","Decrement","Decrypt","DecryptFile","DedekindEta","DeepSpaceProbeData","Default","DefaultAxesStyle","DefaultBaseStyle","DefaultBoxStyle","DefaultButton","DefaultColor","DefaultControlPlacement","DefaultDuplicateCellStyle","DefaultDuration","DefaultElement","DefaultFaceGridsStyle","DefaultFieldHintStyle","DefaultFont","DefaultFontProperties","DefaultFormatType","DefaultFormatTypeForStyle","DefaultFrameStyle","DefaultFrameTicksStyle","DefaultGridLinesStyle","DefaultInlineFormatType","DefaultInputFormatType","DefaultLabelStyle","DefaultMenuStyle","DefaultNaturalLanguage","DefaultNewCellStyle","DefaultNewInlineCellStyle","DefaultNotebook","DefaultOptions","DefaultOutputFormatType","DefaultPrintPrecision","DefaultStyle","DefaultStyleDefinitions","DefaultTextFormatType","DefaultTextInlineFormatType","DefaultTicksStyle","DefaultTooltipStyle","DefaultValue","DefaultValues","Defer","DefineExternal","DefineInputStreamMethod","DefineOutputStreamMethod","DefineResourceFunction","Definition","Degree","DegreeCentrality","DegreeGraphDistribution","DegreeLexicographic","DegreeReverseLexicographic","DEigensystem","DEigenvalues","Deinitialization","Del","DelaunayMesh","Delayed","Deletable","Delete","DeleteAnomalies","DeleteBorderComponents","DeleteCases","DeleteChannel","DeleteCloudExpression","DeleteContents","DeleteDirectory","DeleteDuplicates","DeleteDuplicatesBy","DeleteFile","DeleteMissing","DeleteObject","DeletePermissionsKey","DeleteSearchIndex","DeleteSmallComponents","DeleteStopwords","DeleteWithContents","DeletionWarning","DelimitedArray","DelimitedSequence","Delimiter","DelimiterFlashTime","DelimiterMatching","Delimiters","DeliveryFunction","Dendrogram","Denominator","DensityGraphics","DensityHistogram","DensityPlot","DensityPlot3D","DependentVariables","Deploy","Deployed","Depth","DepthFirstScan","Derivative","DerivativeFilter","DerivedKey","DescriptorStateSpace","DesignMatrix","DestroyAfterEvaluation","Det","DeviceClose","DeviceConfigure","DeviceExecute","DeviceExecuteAsynchronous","DeviceObject","DeviceOpen","DeviceOpenQ","DeviceRead","DeviceReadBuffer","DeviceReadLatest","DeviceReadList","DeviceReadTimeSeries","Devices","DeviceStreams","DeviceWrite","DeviceWriteBuffer","DGaussianWavelet","DiacriticalPositioning","Diagonal","DiagonalizableMatrixQ","DiagonalMatrix","DiagonalMatrixQ","Dialog","DialogIndent","DialogInput","DialogLevel","DialogNotebook","DialogProlog","DialogReturn","DialogSymbols","Diamond","DiamondMatrix","DiceDissimilarity","DictionaryLookup","DictionaryWordQ","DifferenceDelta","DifferenceOrder","DifferenceQuotient","DifferenceRoot","DifferenceRootReduce","Differences","DifferentialD","DifferentialRoot","DifferentialRootReduce","DifferentiatorFilter","DigitalSignature","DigitBlock","DigitBlockMinimum","DigitCharacter","DigitCount","DigitQ","DihedralAngle","DihedralGroup","Dilation","DimensionalCombinations","DimensionalMeshComponents","DimensionReduce","DimensionReducerFunction","DimensionReduction","Dimensions","DiracComb","DiracDelta","DirectedEdge","DirectedEdges","DirectedGraph","DirectedGraphQ","DirectedInfinity","Direction","Directive","Directory","DirectoryName","DirectoryQ","DirectoryStack","DirichletBeta","DirichletCharacter","DirichletCondition","DirichletConvolve","DirichletDistribution","DirichletEta","DirichletL","DirichletLambda","DirichletTransform","DirichletWindow","DisableConsolePrintPacket","DisableFormatting","DiscreteAsymptotic","DiscreteChirpZTransform","DiscreteConvolve","DiscreteDelta","DiscreteHadamardTransform","DiscreteIndicator","DiscreteLimit","DiscreteLQEstimatorGains","DiscreteLQRegulatorGains","DiscreteLyapunovSolve","DiscreteMarkovProcess","DiscreteMaxLimit","DiscreteMinLimit","DiscretePlot","DiscretePlot3D","DiscreteRatio","DiscreteRiccatiSolve","DiscreteShift","DiscreteTimeModelQ","DiscreteUniformDistribution","DiscreteVariables","DiscreteWaveletData","DiscreteWaveletPacketTransform","DiscreteWaveletTransform","DiscretizeGraphics","DiscretizeRegion","Discriminant","DisjointQ","Disjunction","Disk","DiskBox","DiskMatrix","DiskSegment","Dispatch","DispatchQ","DispersionEstimatorFunction","Display","DisplayAllSteps","DisplayEndPacket","DisplayFlushImagePacket","DisplayForm","DisplayFunction","DisplayPacket","DisplayRules","DisplaySetSizePacket","DisplayString","DisplayTemporary","DisplayWith","DisplayWithRef","DisplayWithVariable","DistanceFunction","DistanceMatrix","DistanceTransform","Distribute","Distributed","DistributedContexts","DistributeDefinitions","DistributionChart","DistributionDomain","DistributionFitTest","DistributionParameterAssumptions","DistributionParameterQ","Dithering","Div","Divergence","Divide","DivideBy","Dividers","DivideSides","Divisible","Divisors","DivisorSigma","DivisorSum","DMSList","DMSString","Do","DockedCells","DocumentGenerator","DocumentGeneratorInformation","DocumentGeneratorInformationData","DocumentGenerators","DocumentNotebook","DocumentWeightingRules","Dodecahedron","DomainRegistrationInformation","DominantColors","DOSTextFormat","Dot","DotDashed","DotEqual","DotLayer","DotPlusLayer","Dotted","DoubleBracketingBar","DoubleContourIntegral","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DoublyInfinite","Down","DownArrow","DownArrowBar","DownArrowUpArrow","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","Downsample","DownTee","DownTeeArrow","DownValues","DragAndDrop","DrawEdges","DrawFrontFaces","DrawHighlighted","Drop","DropoutLayer","DSolve","DSolveValue","Dt","DualLinearProgramming","DualPolyhedron","DualSystemsModel","DumpGet","DumpSave","DuplicateFreeQ","Duration","Dynamic","DynamicBox","DynamicBoxOptions","DynamicEvaluationTimeout","DynamicGeoGraphics","DynamicImage","DynamicLocation","DynamicModule","DynamicModuleBox","DynamicModuleBoxOptions","DynamicModuleParent","DynamicModuleValues","DynamicName","DynamicNamespace","DynamicReference","DynamicSetting","DynamicUpdating","DynamicWrapper","DynamicWrapperBox","DynamicWrapperBoxOptions","E","EarthImpactData","EarthquakeData","EccentricityCentrality","Echo","EchoFunction","EclipseType","EdgeAdd","EdgeBetweennessCentrality","EdgeCapacity","EdgeCapForm","EdgeColor","EdgeConnectivity","EdgeContract","EdgeCost","EdgeCount","EdgeCoverQ","EdgeCycleMatrix","EdgeDashing","EdgeDelete","EdgeDetect","EdgeForm","EdgeIndex","EdgeJoinForm","EdgeLabeling","EdgeLabels","EdgeLabelStyle","EdgeList","EdgeOpacity","EdgeQ","EdgeRenderingFunction","EdgeRules","EdgeShapeFunction","EdgeStyle","EdgeTaggedGraph","EdgeTaggedGraphQ","EdgeTags","EdgeThickness","EdgeWeight","EdgeWeightedGraphQ","Editable","EditButtonSettings","EditCellTagsSettings","EditDistance","EffectiveInterest","Eigensystem","Eigenvalues","EigenvectorCentrality","Eigenvectors","Element","ElementData","ElementwiseLayer","ElidedForms","Eliminate","EliminationOrder","Ellipsoid","EllipticE","EllipticExp","EllipticExpPrime","EllipticF","EllipticFilterModel","EllipticK","EllipticLog","EllipticNomeQ","EllipticPi","EllipticReducedHalfPeriods","EllipticTheta","EllipticThetaPrime","EmbedCode","EmbeddedHTML","EmbeddedService","EmbeddingLayer","EmbeddingObject","EmitSound","EmphasizeSyntaxErrors","EmpiricalDistribution","Empty","EmptyGraphQ","EmptyRegion","EnableConsolePrintPacket","Enabled","Encode","Encrypt","EncryptedObject","EncryptFile","End","EndAdd","EndDialogPacket","EndFrontEndInteractionPacket","EndOfBuffer","EndOfFile","EndOfLine","EndOfString","EndPackage","EngineEnvironment","EngineeringForm","Enter","EnterExpressionPacket","EnterTextPacket","Entity","EntityClass","EntityClassList","EntityCopies","EntityFunction","EntityGroup","EntityInstance","EntityList","EntityPrefetch","EntityProperties","EntityProperty","EntityPropertyClass","EntityRegister","EntityStore","EntityStores","EntityTypeName","EntityUnregister","EntityValue","Entropy","EntropyFilter","Environment","Epilog","EpilogFunction","Equal","EqualColumns","EqualRows","EqualTilde","EqualTo","EquatedTo","Equilibrium","EquirippleFilterKernel","Equivalent","Erf","Erfc","Erfi","ErlangB","ErlangC","ErlangDistribution","Erosion","ErrorBox","ErrorBoxOptions","ErrorNorm","ErrorPacket","ErrorsDialogSettings","EscapeRadius","EstimatedBackground","EstimatedDistribution","EstimatedProcess","EstimatorGains","EstimatorRegulator","EuclideanDistance","EulerAngles","EulerCharacteristic","EulerE","EulerGamma","EulerianGraphQ","EulerMatrix","EulerPhi","Evaluatable","Evaluate","Evaluated","EvaluatePacket","EvaluateScheduledTask","EvaluationBox","EvaluationCell","EvaluationCompletionAction","EvaluationData","EvaluationElements","EvaluationEnvironment","EvaluationMode","EvaluationMonitor","EvaluationNotebook","EvaluationObject","EvaluationOrder","Evaluator","EvaluatorNames","EvenQ","EventData","EventEvaluator","EventHandler","EventHandlerTag","EventLabels","EventSeries","ExactBlackmanWindow","ExactNumberQ","ExactRootIsolation","ExampleData","Except","ExcludedForms","ExcludedLines","ExcludedPhysicalQuantities","ExcludePods","Exclusions","ExclusionsStyle","Exists","Exit","ExitDialog","ExoplanetData","Exp","Expand","ExpandAll","ExpandDenominator","ExpandFileName","ExpandNumerator","Expectation","ExpectationE","ExpectedValue","ExpGammaDistribution","ExpIntegralE","ExpIntegralEi","ExpirationDate","Exponent","ExponentFunction","ExponentialDistribution","ExponentialFamily","ExponentialGeneratingFunction","ExponentialMovingAverage","ExponentialPowerDistribution","ExponentPosition","ExponentStep","Export","ExportAutoReplacements","ExportByteArray","ExportForm","ExportPacket","ExportString","Expression","ExpressionCell","ExpressionGraph","ExpressionPacket","ExpressionUUID","ExpToTrig","ExtendedEntityClass","ExtendedGCD","Extension","ExtentElementFunction","ExtentMarkers","ExtentSize","ExternalBundle","ExternalCall","ExternalDataCharacterEncoding","ExternalEvaluate","ExternalFunction","ExternalFunctionName","ExternalIdentifier","ExternalObject","ExternalOptions","ExternalSessionObject","ExternalSessions","ExternalStorageBase","ExternalStorageDownload","ExternalStorageGet","ExternalStorageObject","ExternalStoragePut","ExternalStorageUpload","ExternalTypeSignature","ExternalValue","Extract","ExtractArchive","ExtractLayer","ExtractPacletArchive","ExtremeValueDistribution","FaceAlign","FaceForm","FaceGrids","FaceGridsStyle","FacialFeatures","Factor","FactorComplete","Factorial","Factorial2","FactorialMoment","FactorialMomentGeneratingFunction","FactorialPower","FactorInteger","FactorList","FactorSquareFree","FactorSquareFreeList","FactorTerms","FactorTermsList","Fail","Failure","FailureAction","FailureDistribution","FailureQ","False","FareySequence","FARIMAProcess","FeatureDistance","FeatureExtract","FeatureExtraction","FeatureExtractor","FeatureExtractorFunction","FeatureNames","FeatureNearest","FeatureSpacePlot","FeatureSpacePlot3D","FeatureTypes","FEDisableConsolePrintPacket","FeedbackLinearize","FeedbackSector","FeedbackSectorStyle","FeedbackType","FEEnableConsolePrintPacket","FetalGrowthData","Fibonacci","Fibonorial","FieldCompletionFunction","FieldHint","FieldHintStyle","FieldMasked","FieldSize","File","FileBaseName","FileByteCount","FileConvert","FileDate","FileExistsQ","FileExtension","FileFormat","FileHandler","FileHash","FileInformation","FileName","FileNameDepth","FileNameDialogSettings","FileNameDrop","FileNameForms","FileNameJoin","FileNames","FileNameSetter","FileNameSplit","FileNameTake","FilePrint","FileSize","FileSystemMap","FileSystemScan","FileTemplate","FileTemplateApply","FileType","FilledCurve","FilledCurveBox","FilledCurveBoxOptions","Filling","FillingStyle","FillingTransform","FilteredEntityClass","FilterRules","FinancialBond","FinancialData","FinancialDerivative","FinancialIndicator","Find","FindAnomalies","FindArgMax","FindArgMin","FindChannels","FindClique","FindClusters","FindCookies","FindCurvePath","FindCycle","FindDevices","FindDistribution","FindDistributionParameters","FindDivisions","FindEdgeCover","FindEdgeCut","FindEdgeIndependentPaths","FindEquationalProof","FindEulerianCycle","FindExternalEvaluators","FindFaces","FindFile","FindFit","FindFormula","FindFundamentalCycles","FindGeneratingFunction","FindGeoLocation","FindGeometricConjectures","FindGeometricTransform","FindGraphCommunities","FindGraphIsomorphism","FindGraphPartition","FindHamiltonianCycle","FindHamiltonianPath","FindHiddenMarkovStates","FindImageText","FindIndependentEdgeSet","FindIndependentVertexSet","FindInstance","FindIntegerNullVector","FindKClan","FindKClique","FindKClub","FindKPlex","FindLibrary","FindLinearRecurrence","FindList","FindMatchingColor","FindMaximum","FindMaximumCut","FindMaximumFlow","FindMaxValue","FindMeshDefects","FindMinimum","FindMinimumCostFlow","FindMinimumCut","FindMinValue","FindMoleculeSubstructure","FindPath","FindPeaks","FindPermutation","FindPostmanTour","FindProcessParameters","FindRepeat","FindRoot","FindSequenceFunction","FindSettings","FindShortestPath","FindShortestTour","FindSpanningTree","FindSystemModelEquilibrium","FindTextualAnswer","FindThreshold","FindTransientRepeat","FindVertexCover","FindVertexCut","FindVertexIndependentPaths","Fine","FinishDynamic","FiniteAbelianGroupCount","FiniteGroupCount","FiniteGroupData","First","FirstCase","FirstPassageTimeDistribution","FirstPosition","FischerGroupFi22","FischerGroupFi23","FischerGroupFi24Prime","FisherHypergeometricDistribution","FisherRatioTest","FisherZDistribution","Fit","FitAll","FitRegularization","FittedModel","FixedOrder","FixedPoint","FixedPointList","FlashSelection","Flat","Flatten","FlattenAt","FlattenLayer","FlatTopWindow","FlipView","Floor","FlowPolynomial","FlushPrintOutputPacket","Fold","FoldList","FoldPair","FoldPairList","FollowRedirects","Font","FontColor","FontFamily","FontForm","FontName","FontOpacity","FontPostScriptName","FontProperties","FontReencoding","FontSize","FontSlant","FontSubstitutions","FontTracking","FontVariations","FontWeight","For","ForAll","ForceVersionInstall","Format","FormatRules","FormatType","FormatTypeAutoConvert","FormatValues","FormBox","FormBoxOptions","FormControl","FormFunction","FormLayoutFunction","FormObject","FormPage","FormTheme","FormulaData","FormulaLookup","FortranForm","Forward","ForwardBackward","Fourier","FourierCoefficient","FourierCosCoefficient","FourierCosSeries","FourierCosTransform","FourierDCT","FourierDCTFilter","FourierDCTMatrix","FourierDST","FourierDSTMatrix","FourierMatrix","FourierParameters","FourierSequenceTransform","FourierSeries","FourierSinCoefficient","FourierSinSeries","FourierSinTransform","FourierTransform","FourierTrigSeries","FractionalBrownianMotionProcess","FractionalGaussianNoiseProcess","FractionalPart","FractionBox","FractionBoxOptions","FractionLine","Frame","FrameBox","FrameBoxOptions","Framed","FrameInset","FrameLabel","Frameless","FrameMargins","FrameRate","FrameStyle","FrameTicks","FrameTicksStyle","FRatioDistribution","FrechetDistribution","FreeQ","FrenetSerretSystem","FrequencySamplingFilterKernel","FresnelC","FresnelF","FresnelG","FresnelS","Friday","FrobeniusNumber","FrobeniusSolve","FromAbsoluteTime","FromCharacterCode","FromCoefficientRules","FromContinuedFraction","FromDate","FromDigits","FromDMS","FromEntity","FromJulianDate","FromLetterNumber","FromPolarCoordinates","FromRomanNumeral","FromSphericalCoordinates","FromUnixTime","Front","FrontEndDynamicExpression","FrontEndEventActions","FrontEndExecute","FrontEndObject","FrontEndResource","FrontEndResourceString","FrontEndStackSize","FrontEndToken","FrontEndTokenExecute","FrontEndValueCache","FrontEndVersion","FrontFaceColor","FrontFaceOpacity","Full","FullAxes","FullDefinition","FullForm","FullGraphics","FullInformationOutputRegulator","FullOptions","FullRegion","FullSimplify","Function","FunctionCompile","FunctionCompileExport","FunctionCompileExportByteArray","FunctionCompileExportLibrary","FunctionCompileExportString","FunctionDomain","FunctionExpand","FunctionInterpolation","FunctionPeriod","FunctionRange","FunctionSpace","FussellVeselyImportance","GaborFilter","GaborMatrix","GaborWavelet","GainMargins","GainPhaseMargins","GalaxyData","GalleryView","Gamma","GammaDistribution","GammaRegularized","GapPenalty","GARCHProcess","GatedRecurrentLayer","Gather","GatherBy","GaugeFaceElementFunction","GaugeFaceStyle","GaugeFrameElementFunction","GaugeFrameSize","GaugeFrameStyle","GaugeLabels","GaugeMarkers","GaugeStyle","GaussianFilter","GaussianIntegers","GaussianMatrix","GaussianOrthogonalMatrixDistribution","GaussianSymplecticMatrixDistribution","GaussianUnitaryMatrixDistribution","GaussianWindow","GCD","GegenbauerC","General","GeneralizedLinearModelFit","GenerateAsymmetricKeyPair","GenerateConditions","GeneratedCell","GeneratedDocumentBinding","GenerateDerivedKey","GenerateDigitalSignature","GenerateDocument","GeneratedParameters","GeneratedQuantityMagnitudes","GenerateFileSignature","GenerateHTTPResponse","GenerateSecuredAuthenticationKey","GenerateSymmetricKey","GeneratingFunction","GeneratorDescription","GeneratorHistoryLength","GeneratorOutputType","Generic","GenericCylindricalDecomposition","GenomeData","GenomeLookup","GeoAntipode","GeoArea","GeoArraySize","GeoBackground","GeoBoundingBox","GeoBounds","GeoBoundsRegion","GeoBubbleChart","GeoCenter","GeoCircle","GeoContourPlot","GeoDensityPlot","GeodesicClosing","GeodesicDilation","GeodesicErosion","GeodesicOpening","GeoDestination","GeodesyData","GeoDirection","GeoDisk","GeoDisplacement","GeoDistance","GeoDistanceList","GeoElevationData","GeoEntities","GeoGraphics","GeogravityModelData","GeoGridDirectionDifference","GeoGridLines","GeoGridLinesStyle","GeoGridPosition","GeoGridRange","GeoGridRangePadding","GeoGridUnitArea","GeoGridUnitDistance","GeoGridVector","GeoGroup","GeoHemisphere","GeoHemisphereBoundary","GeoHistogram","GeoIdentify","GeoImage","GeoLabels","GeoLength","GeoListPlot","GeoLocation","GeologicalPeriodData","GeomagneticModelData","GeoMarker","GeometricAssertion","GeometricBrownianMotionProcess","GeometricDistribution","GeometricMean","GeometricMeanFilter","GeometricOptimization","GeometricScene","GeometricTransformation","GeometricTransformation3DBox","GeometricTransformation3DBoxOptions","GeometricTransformationBox","GeometricTransformationBoxOptions","GeoModel","GeoNearest","GeoPath","GeoPosition","GeoPositionENU","GeoPositionXYZ","GeoProjection","GeoProjectionData","GeoRange","GeoRangePadding","GeoRegionValuePlot","GeoResolution","GeoScaleBar","GeoServer","GeoSmoothHistogram","GeoStreamPlot","GeoStyling","GeoStylingImageFunction","GeoVariant","GeoVector","GeoVectorENU","GeoVectorPlot","GeoVectorXYZ","GeoVisibleRegion","GeoVisibleRegionBoundary","GeoWithinQ","GeoZoomLevel","GestureHandler","GestureHandlerTag","Get","GetBoundingBoxSizePacket","GetContext","GetEnvironment","GetFileName","GetFrontEndOptionsDataPacket","GetLinebreakInformationPacket","GetMenusPacket","GetPageBreakInformationPacket","Glaisher","GlobalClusteringCoefficient","GlobalPreferences","GlobalSession","Glow","GoldenAngle","GoldenRatio","GompertzMakehamDistribution","GoochShading","GoodmanKruskalGamma","GoodmanKruskalGammaTest","Goto","Grad","Gradient","GradientFilter","GradientOrientationFilter","GrammarApply","GrammarRules","GrammarToken","Graph","Graph3D","GraphAssortativity","GraphAutomorphismGroup","GraphCenter","GraphComplement","GraphData","GraphDensity","GraphDiameter","GraphDifference","GraphDisjointUnion","GraphDistance","GraphDistanceMatrix","GraphElementData","GraphEmbedding","GraphHighlight","GraphHighlightStyle","GraphHub","Graphics","Graphics3D","Graphics3DBox","Graphics3DBoxOptions","GraphicsArray","GraphicsBaseline","GraphicsBox","GraphicsBoxOptions","GraphicsColor","GraphicsColumn","GraphicsComplex","GraphicsComplex3DBox","GraphicsComplex3DBoxOptions","GraphicsComplexBox","GraphicsComplexBoxOptions","GraphicsContents","GraphicsData","GraphicsGrid","GraphicsGridBox","GraphicsGroup","GraphicsGroup3DBox","GraphicsGroup3DBoxOptions","GraphicsGroupBox","GraphicsGroupBoxOptions","GraphicsGrouping","GraphicsHighlightColor","GraphicsRow","GraphicsSpacing","GraphicsStyle","GraphIntersection","GraphLayout","GraphLinkEfficiency","GraphPeriphery","GraphPlot","GraphPlot3D","GraphPower","GraphPropertyDistribution","GraphQ","GraphRadius","GraphReciprocity","GraphRoot","GraphStyle","GraphUnion","Gray","GrayLevel","Greater","GreaterEqual","GreaterEqualLess","GreaterEqualThan","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterThan","GreaterTilde","Green","GreenFunction","Grid","GridBaseline","GridBox","GridBoxAlignment","GridBoxBackground","GridBoxDividers","GridBoxFrame","GridBoxItemSize","GridBoxItemStyle","GridBoxOptions","GridBoxSpacings","GridCreationSettings","GridDefaultElement","GridElementStyleOptions","GridFrame","GridFrameMargins","GridGraph","GridLines","GridLinesStyle","GroebnerBasis","GroupActionBase","GroupBy","GroupCentralizer","GroupElementFromWord","GroupElementPosition","GroupElementQ","GroupElements","GroupElementToWord","GroupGenerators","Groupings","GroupMultiplicationTable","GroupOrbits","GroupOrder","GroupPageBreakWithin","GroupSetwiseStabilizer","GroupStabilizer","GroupStabilizerChain","GroupTogetherGrouping","GroupTogetherNestedGrouping","GrowCutComponents","Gudermannian","GuidedFilter","GumbelDistribution","HaarWavelet","HadamardMatrix","HalfLine","HalfNormalDistribution","HalfPlane","HalfSpace","HalftoneShading","HamiltonianGraphQ","HammingDistance","HammingWindow","HandlerFunctions","HandlerFunctionsKeys","HankelH1","HankelH2","HankelMatrix","HankelTransform","HannPoissonWindow","HannWindow","HaradaNortonGroupHN","HararyGraph","HarmonicMean","HarmonicMeanFilter","HarmonicNumber","Hash","HatchFilling","HatchShading","Haversine","HazardFunction","Head","HeadCompose","HeaderAlignment","HeaderBackground","HeaderDisplayFunction","HeaderLines","HeaderSize","HeaderStyle","Heads","HeavisideLambda","HeavisidePi","HeavisideTheta","HeldGroupHe","HeldPart","HelpBrowserLookup","HelpBrowserNotebook","HelpBrowserSettings","Here","HermiteDecomposition","HermiteH","HermitianMatrixQ","HessenbergDecomposition","Hessian","HeunB","HeunBPrime","HeunC","HeunCPrime","HeunD","HeunDPrime","HeunG","HeunGPrime","HeunT","HeunTPrime","HexadecimalCharacter","Hexahedron","HexahedronBox","HexahedronBoxOptions","HiddenItems","HiddenMarkovProcess","HiddenSurface","Highlighted","HighlightGraph","HighlightImage","HighlightMesh","HighpassFilter","HigmanSimsGroupHS","HilbertCurve","HilbertFilter","HilbertMatrix","Histogram","Histogram3D","HistogramDistribution","HistogramList","HistogramTransform","HistogramTransformInterpolation","HistoricalPeriodData","HitMissTransform","HITSCentrality","HjorthDistribution","HodgeDual","HoeffdingD","HoeffdingDTest","Hold","HoldAll","HoldAllComplete","HoldComplete","HoldFirst","HoldForm","HoldPattern","HoldRest","HolidayCalendar","HomeDirectory","HomePage","Horizontal","HorizontalForm","HorizontalGauge","HorizontalScrollPosition","HornerForm","HostLookup","HotellingTSquareDistribution","HoytDistribution","HTMLSave","HTTPErrorResponse","HTTPRedirect","HTTPRequest","HTTPRequestData","HTTPResponse","Hue","HumanGrowthData","HumpDownHump","HumpEqual","HurwitzLerchPhi","HurwitzZeta","HyperbolicDistribution","HypercubeGraph","HyperexponentialDistribution","Hyperfactorial","Hypergeometric0F1","Hypergeometric0F1Regularized","Hypergeometric1F1","Hypergeometric1F1Regularized","Hypergeometric2F1","Hypergeometric2F1Regularized","HypergeometricDistribution","HypergeometricPFQ","HypergeometricPFQRegularized","HypergeometricU","Hyperlink","HyperlinkAction","HyperlinkCreationSettings","Hyperplane","Hyphenation","HyphenationOptions","HypoexponentialDistribution","HypothesisTestData","I","IconData","Iconize","IconizedObject","IconRules","Icosahedron","Identity","IdentityMatrix","If","IgnoreCase","IgnoreDiacritics","IgnorePunctuation","IgnoreSpellCheck","IgnoringInactive","Im","Image","Image3D","Image3DProjection","Image3DSlices","ImageAccumulate","ImageAdd","ImageAdjust","ImageAlign","ImageApply","ImageApplyIndexed","ImageAspectRatio","ImageAssemble","ImageAugmentationLayer","ImageBoundingBoxes","ImageCache","ImageCacheValid","ImageCapture","ImageCaptureFunction","ImageCases","ImageChannels","ImageClip","ImageCollage","ImageColorSpace","ImageCompose","ImageContainsQ","ImageContents","ImageConvolve","ImageCooccurrence","ImageCorners","ImageCorrelate","ImageCorrespondingPoints","ImageCrop","ImageData","ImageDeconvolve","ImageDemosaic","ImageDifference","ImageDimensions","ImageDisplacements","ImageDistance","ImageEffect","ImageExposureCombine","ImageFeatureTrack","ImageFileApply","ImageFileFilter","ImageFileScan","ImageFilter","ImageFocusCombine","ImageForestingComponents","ImageFormattingWidth","ImageForwardTransformation","ImageGraphics","ImageHistogram","ImageIdentify","ImageInstanceQ","ImageKeypoints","ImageLabels","ImageLegends","ImageLevels","ImageLines","ImageMargins","ImageMarker","ImageMarkers","ImageMeasurements","ImageMesh","ImageMultiply","ImageOffset","ImagePad","ImagePadding","ImagePartition","ImagePeriodogram","ImagePerspectiveTransformation","ImagePosition","ImagePreviewFunction","ImagePyramid","ImagePyramidApply","ImageQ","ImageRangeCache","ImageRecolor","ImageReflect","ImageRegion","ImageResize","ImageResolution","ImageRestyle","ImageRotate","ImageRotated","ImageSaliencyFilter","ImageScaled","ImageScan","ImageSize","ImageSizeAction","ImageSizeCache","ImageSizeMultipliers","ImageSizeRaw","ImageSubtract","ImageTake","ImageTransformation","ImageTrim","ImageType","ImageValue","ImageValuePositions","ImagingDevice","ImplicitRegion","Implies","Import","ImportAutoReplacements","ImportByteArray","ImportOptions","ImportString","ImprovementImportance","In","Inactivate","Inactive","IncidenceGraph","IncidenceList","IncidenceMatrix","IncludeAromaticBonds","IncludeConstantBasis","IncludeDefinitions","IncludeDirectories","IncludeFileExtension","IncludeGeneratorTasks","IncludeHydrogens","IncludeInflections","IncludeMetaInformation","IncludePods","IncludeQuantities","IncludeRelatedTables","IncludeSingularTerm","IncludeWindowTimes","Increment","IndefiniteMatrixQ","Indent","IndentingNewlineSpacings","IndentMaxFraction","IndependenceTest","IndependentEdgeSetQ","IndependentPhysicalQuantity","IndependentUnit","IndependentUnitDimension","IndependentVertexSetQ","Indeterminate","IndeterminateThreshold","IndexCreationOptions","Indexed","IndexEdgeTaggedGraph","IndexGraph","IndexTag","Inequality","InexactNumberQ","InexactNumbers","InfiniteFuture","InfiniteLine","InfinitePast","InfinitePlane","Infinity","Infix","InflationAdjust","InflationMethod","Information","InformationData","InformationDataGrid","Inherited","InheritScope","InhomogeneousPoissonProcess","InitialEvaluationHistory","Initialization","InitializationCell","InitializationCellEvaluation","InitializationCellWarning","InitializationObjects","InitializationValue","Initialize","InitialSeeding","InlineCounterAssignments","InlineCounterIncrements","InlineRules","Inner","InnerPolygon","InnerPolyhedron","Inpaint","Input","InputAliases","InputAssumptions","InputAutoReplacements","InputField","InputFieldBox","InputFieldBoxOptions","InputForm","InputGrouping","InputNamePacket","InputNotebook","InputPacket","InputSettings","InputStream","InputString","InputStringPacket","InputToBoxFormPacket","Insert","InsertionFunction","InsertionPointObject","InsertLinebreaks","InsertResults","Inset","Inset3DBox","Inset3DBoxOptions","InsetBox","InsetBoxOptions","Insphere","Install","InstallService","InstanceNormalizationLayer","InString","Integer","IntegerDigits","IntegerExponent","IntegerLength","IntegerName","IntegerPart","IntegerPartitions","IntegerQ","IntegerReverse","Integers","IntegerString","Integral","Integrate","Interactive","InteractiveTradingChart","Interlaced","Interleaving","InternallyBalancedDecomposition","InterpolatingFunction","InterpolatingPolynomial","Interpolation","InterpolationOrder","InterpolationPoints","InterpolationPrecision","Interpretation","InterpretationBox","InterpretationBoxOptions","InterpretationFunction","Interpreter","InterpretTemplate","InterquartileRange","Interrupt","InterruptSettings","IntersectedEntityClass","IntersectingQ","Intersection","Interval","IntervalIntersection","IntervalMarkers","IntervalMarkersStyle","IntervalMemberQ","IntervalSlider","IntervalUnion","Into","Inverse","InverseBetaRegularized","InverseCDF","InverseChiSquareDistribution","InverseContinuousWaveletTransform","InverseDistanceTransform","InverseEllipticNomeQ","InverseErf","InverseErfc","InverseFourier","InverseFourierCosTransform","InverseFourierSequenceTransform","InverseFourierSinTransform","InverseFourierTransform","InverseFunction","InverseFunctions","InverseGammaDistribution","InverseGammaRegularized","InverseGaussianDistribution","InverseGudermannian","InverseHankelTransform","InverseHaversine","InverseImagePyramid","InverseJacobiCD","InverseJacobiCN","InverseJacobiCS","InverseJacobiDC","InverseJacobiDN","InverseJacobiDS","InverseJacobiNC","InverseJacobiND","InverseJacobiNS","InverseJacobiSC","InverseJacobiSD","InverseJacobiSN","InverseLaplaceTransform","InverseMellinTransform","InversePermutation","InverseRadon","InverseRadonTransform","InverseSeries","InverseShortTimeFourier","InverseSpectrogram","InverseSurvivalFunction","InverseTransformedRegion","InverseWaveletTransform","InverseWeierstrassP","InverseWishartMatrixDistribution","InverseZTransform","Invisible","InvisibleApplication","InvisibleTimes","IPAddress","IrreduciblePolynomialQ","IslandData","IsolatingInterval","IsomorphicGraphQ","IsotopeData","Italic","Item","ItemAspectRatio","ItemBox","ItemBoxOptions","ItemDisplayFunction","ItemSize","ItemStyle","ItoProcess","JaccardDissimilarity","JacobiAmplitude","Jacobian","JacobiCD","JacobiCN","JacobiCS","JacobiDC","JacobiDN","JacobiDS","JacobiNC","JacobiND","JacobiNS","JacobiP","JacobiSC","JacobiSD","JacobiSN","JacobiSymbol","JacobiZeta","JankoGroupJ1","JankoGroupJ2","JankoGroupJ3","JankoGroupJ4","JarqueBeraALMTest","JohnsonDistribution","Join","JoinAcross","Joined","JoinedCurve","JoinedCurveBox","JoinedCurveBoxOptions","JoinForm","JordanDecomposition","JordanModelDecomposition","JulianDate","JuliaSetBoettcher","JuliaSetIterationCount","JuliaSetPlot","JuliaSetPoints","K","KagiChart","KaiserBesselWindow","KaiserWindow","KalmanEstimator","KalmanFilter","KarhunenLoeveDecomposition","KaryTree","KatzCentrality","KCoreComponents","KDistribution","KEdgeConnectedComponents","KEdgeConnectedGraphQ","KeepExistingVersion","KelvinBei","KelvinBer","KelvinKei","KelvinKer","KendallTau","KendallTauTest","KernelExecute","KernelFunction","KernelMixtureDistribution","KernelObject","Kernels","Ket","Key","KeyCollisionFunction","KeyComplement","KeyDrop","KeyDropFrom","KeyExistsQ","KeyFreeQ","KeyIntersection","KeyMap","KeyMemberQ","KeypointStrength","Keys","KeySelect","KeySort","KeySortBy","KeyTake","KeyUnion","KeyValueMap","KeyValuePattern","Khinchin","KillProcess","KirchhoffGraph","KirchhoffMatrix","KleinInvariantJ","KnapsackSolve","KnightTourGraph","KnotData","KnownUnitQ","KochCurve","KolmogorovSmirnovTest","KroneckerDelta","KroneckerModelDecomposition","KroneckerProduct","KroneckerSymbol","KuiperTest","KumaraswamyDistribution","Kurtosis","KuwaharaFilter","KVertexConnectedComponents","KVertexConnectedGraphQ","LABColor","Label","Labeled","LabeledSlider","LabelingFunction","LabelingSize","LabelStyle","LabelVisibility","LaguerreL","LakeData","LambdaComponents","LambertW","LaminaData","LanczosWindow","LandauDistribution","Language","LanguageCategory","LanguageData","LanguageIdentify","LanguageOptions","LaplaceDistribution","LaplaceTransform","Laplacian","LaplacianFilter","LaplacianGaussianFilter","Large","Larger","Last","Latitude","LatitudeLongitude","LatticeData","LatticeReduce","Launch","LaunchKernels","LayeredGraphPlot","LayerSizeFunction","LayoutInformation","LCHColor","LCM","LeaderSize","LeafCount","LeapYearQ","LearnDistribution","LearnedDistribution","LearningRate","LearningRateMultipliers","LeastSquares","LeastSquaresFilterKernel","Left","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","LegendAppearance","Legended","LegendFunction","LegendLabel","LegendLayout","LegendMargins","LegendMarkers","LegendMarkerSize","LegendreP","LegendreQ","LegendreType","Length","LengthWhile","LerchPhi","Less","LessEqual","LessEqualGreater","LessEqualThan","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessThan","LessTilde","LetterCharacter","LetterCounts","LetterNumber","LetterQ","Level","LeveneTest","LeviCivitaTensor","LevyDistribution","Lexicographic","LibraryDataType","LibraryFunction","LibraryFunctionError","LibraryFunctionInformation","LibraryFunctionLoad","LibraryFunctionUnload","LibraryLoad","LibraryUnload","LicenseID","LiftingFilterData","LiftingWaveletTransform","LightBlue","LightBrown","LightCyan","Lighter","LightGray","LightGreen","Lighting","LightingAngle","LightMagenta","LightOrange","LightPink","LightPurple","LightRed","LightSources","LightYellow","Likelihood","Limit","LimitsPositioning","LimitsPositioningTokens","LindleyDistribution","Line","Line3DBox","Line3DBoxOptions","LinearFilter","LinearFractionalOptimization","LinearFractionalTransform","LinearGradientImage","LinearizingTransformationData","LinearLayer","LinearModelFit","LinearOffsetFunction","LinearOptimization","LinearProgramming","LinearRecurrence","LinearSolve","LinearSolveFunction","LineBox","LineBoxOptions","LineBreak","LinebreakAdjustments","LineBreakChart","LinebreakSemicolonWeighting","LineBreakWithin","LineColor","LineGraph","LineIndent","LineIndentMaxFraction","LineIntegralConvolutionPlot","LineIntegralConvolutionScale","LineLegend","LineOpacity","LineSpacing","LineWrapParts","LinkActivate","LinkClose","LinkConnect","LinkConnectedQ","LinkCreate","LinkError","LinkFlush","LinkFunction","LinkHost","LinkInterrupt","LinkLaunch","LinkMode","LinkObject","LinkOpen","LinkOptions","LinkPatterns","LinkProtocol","LinkRankCentrality","LinkRead","LinkReadHeld","LinkReadyQ","Links","LinkService","LinkWrite","LinkWriteHeld","LiouvilleLambda","List","Listable","ListAnimate","ListContourPlot","ListContourPlot3D","ListConvolve","ListCorrelate","ListCurvePathPlot","ListDeconvolve","ListDensityPlot","ListDensityPlot3D","Listen","ListFormat","ListFourierSequenceTransform","ListInterpolation","ListLineIntegralConvolutionPlot","ListLinePlot","ListLogLinearPlot","ListLogLogPlot","ListLogPlot","ListPicker","ListPickerBox","ListPickerBoxBackground","ListPickerBoxOptions","ListPlay","ListPlot","ListPlot3D","ListPointPlot3D","ListPolarPlot","ListQ","ListSliceContourPlot3D","ListSliceDensityPlot3D","ListSliceVectorPlot3D","ListStepPlot","ListStreamDensityPlot","ListStreamPlot","ListSurfacePlot3D","ListVectorDensityPlot","ListVectorPlot","ListVectorPlot3D","ListZTransform","Literal","LiteralSearch","LocalAdaptiveBinarize","LocalCache","LocalClusteringCoefficient","LocalizeDefinitions","LocalizeVariables","LocalObject","LocalObjects","LocalResponseNormalizationLayer","LocalSubmit","LocalSymbol","LocalTime","LocalTimeZone","LocationEquivalenceTest","LocationTest","Locator","LocatorAutoCreate","LocatorBox","LocatorBoxOptions","LocatorCentering","LocatorPane","LocatorPaneBox","LocatorPaneBoxOptions","LocatorRegion","Locked","Log","Log10","Log2","LogBarnesG","LogGamma","LogGammaDistribution","LogicalExpand","LogIntegral","LogisticDistribution","LogisticSigmoid","LogitModelFit","LogLikelihood","LogLinearPlot","LogLogisticDistribution","LogLogPlot","LogMultinormalDistribution","LogNormalDistribution","LogPlot","LogRankTest","LogSeriesDistribution","LongEqual","Longest","LongestCommonSequence","LongestCommonSequencePositions","LongestCommonSubsequence","LongestCommonSubsequencePositions","LongestMatch","LongestOrderedSequence","LongForm","Longitude","LongLeftArrow","LongLeftRightArrow","LongRightArrow","LongShortTermMemoryLayer","Lookup","Loopback","LoopFreeGraphQ","Looping","LossFunction","LowerCaseQ","LowerLeftArrow","LowerRightArrow","LowerTriangularize","LowerTriangularMatrixQ","LowpassFilter","LQEstimatorGains","LQGRegulator","LQOutputRegulatorGains","LQRegulatorGains","LUBackSubstitution","LucasL","LuccioSamiComponents","LUDecomposition","LunarEclipse","LUVColor","LyapunovSolve","LyonsGroupLy","MachineID","MachineName","MachineNumberQ","MachinePrecision","MacintoshSystemPageSetup","Magenta","Magnification","Magnify","MailAddressValidation","MailExecute","MailFolder","MailItem","MailReceiverFunction","MailResponseFunction","MailSearch","MailServerConnect","MailServerConnection","MailSettings","MainSolve","MaintainDynamicCaches","Majority","MakeBoxes","MakeExpression","MakeRules","ManagedLibraryExpressionID","ManagedLibraryExpressionQ","MandelbrotSetBoettcher","MandelbrotSetDistance","MandelbrotSetIterationCount","MandelbrotSetMemberQ","MandelbrotSetPlot","MangoldtLambda","ManhattanDistance","Manipulate","Manipulator","MannedSpaceMissionData","MannWhitneyTest","MantissaExponent","Manual","Map","MapAll","MapAt","MapIndexed","MAProcess","MapThread","MarchenkoPasturDistribution","MarcumQ","MardiaCombinedTest","MardiaKurtosisTest","MardiaSkewnessTest","MarginalDistribution","MarkovProcessProperties","Masking","MatchingDissimilarity","MatchLocalNameQ","MatchLocalNames","MatchQ","Material","MathematicalFunctionData","MathematicaNotation","MathieuC","MathieuCharacteristicA","MathieuCharacteristicB","MathieuCharacteristicExponent","MathieuCPrime","MathieuGroupM11","MathieuGroupM12","MathieuGroupM22","MathieuGroupM23","MathieuGroupM24","MathieuS","MathieuSPrime","MathMLForm","MathMLText","Matrices","MatrixExp","MatrixForm","MatrixFunction","MatrixLog","MatrixNormalDistribution","MatrixPlot","MatrixPower","MatrixPropertyDistribution","MatrixQ","MatrixRank","MatrixTDistribution","Max","MaxBend","MaxCellMeasure","MaxColorDistance","MaxDate","MaxDetect","MaxDuration","MaxExtraBandwidths","MaxExtraConditions","MaxFeatureDisplacement","MaxFeatures","MaxFilter","MaximalBy","Maximize","MaxItems","MaxIterations","MaxLimit","MaxMemoryUsed","MaxMixtureKernels","MaxOverlapFraction","MaxPlotPoints","MaxPoints","MaxRecursion","MaxStableDistribution","MaxStepFraction","MaxSteps","MaxStepSize","MaxTrainingRounds","MaxValue","MaxwellDistribution","MaxWordGap","McLaughlinGroupMcL","Mean","MeanAbsoluteLossLayer","MeanAround","MeanClusteringCoefficient","MeanDegreeConnectivity","MeanDeviation","MeanFilter","MeanGraphDistance","MeanNeighborDegree","MeanShift","MeanShiftFilter","MeanSquaredLossLayer","Median","MedianDeviation","MedianFilter","MedicalTestData","Medium","MeijerG","MeijerGReduce","MeixnerDistribution","MellinConvolve","MellinTransform","MemberQ","MemoryAvailable","MemoryConstrained","MemoryConstraint","MemoryInUse","MengerMesh","Menu","MenuAppearance","MenuCommandKey","MenuEvaluator","MenuItem","MenuList","MenuPacket","MenuSortingValue","MenuStyle","MenuView","Merge","MergeDifferences","MergingFunction","MersennePrimeExponent","MersennePrimeExponentQ","Mesh","MeshCellCentroid","MeshCellCount","MeshCellHighlight","MeshCellIndex","MeshCellLabel","MeshCellMarker","MeshCellMeasure","MeshCellQuality","MeshCells","MeshCellShapeFunction","MeshCellStyle","MeshConnectivityGraph","MeshCoordinates","MeshFunctions","MeshPrimitives","MeshQualityGoal","MeshRange","MeshRefinementFunction","MeshRegion","MeshRegionQ","MeshShading","MeshStyle","Message","MessageDialog","MessageList","MessageName","MessageObject","MessageOptions","MessagePacket","Messages","MessagesNotebook","MetaCharacters","MetaInformation","MeteorShowerData","Method","MethodOptions","MexicanHatWavelet","MeyerWavelet","Midpoint","Min","MinColorDistance","MinDate","MinDetect","MineralData","MinFilter","MinimalBy","MinimalPolynomial","MinimalStateSpaceModel","Minimize","MinimumTimeIncrement","MinIntervalSize","MinkowskiQuestionMark","MinLimit","MinMax","MinorPlanetData","Minors","MinRecursion","MinSize","MinStableDistribution","Minus","MinusPlus","MinValue","Missing","MissingBehavior","MissingDataMethod","MissingDataRules","MissingQ","MissingString","MissingStyle","MissingValuePattern","MittagLefflerE","MixedFractionParts","MixedGraphQ","MixedMagnitude","MixedRadix","MixedRadixQuantity","MixedUnit","MixtureDistribution","Mod","Modal","Mode","Modular","ModularInverse","ModularLambda","Module","Modulus","MoebiusMu","Molecule","MoleculeContainsQ","MoleculeEquivalentQ","MoleculeGraph","MoleculeModify","MoleculePattern","MoleculePlot","MoleculePlot3D","MoleculeProperty","MoleculeQ","MoleculeRecognize","MoleculeValue","Moment","Momentary","MomentConvert","MomentEvaluate","MomentGeneratingFunction","MomentOfInertia","Monday","Monitor","MonomialList","MonomialOrder","MonsterGroupM","MoonPhase","MoonPosition","MorletWavelet","MorphologicalBinarize","MorphologicalBranchPoints","MorphologicalComponents","MorphologicalEulerNumber","MorphologicalGraph","MorphologicalPerimeter","MorphologicalTransform","MortalityData","Most","MountainData","MouseAnnotation","MouseAppearance","MouseAppearanceTag","MouseButtons","Mouseover","MousePointerNote","MousePosition","MovieData","MovingAverage","MovingMap","MovingMedian","MoyalDistribution","Multicolumn","MultiedgeStyle","MultigraphQ","MultilaunchWarning","MultiLetterItalics","MultiLetterStyle","MultilineFunction","Multinomial","MultinomialDistribution","MultinormalDistribution","MultiplicativeOrder","Multiplicity","MultiplySides","Multiselection","MultivariateHypergeometricDistribution","MultivariatePoissonDistribution","MultivariateTDistribution","N","NakagamiDistribution","NameQ","Names","NamespaceBox","NamespaceBoxOptions","Nand","NArgMax","NArgMin","NBernoulliB","NBodySimulation","NBodySimulationData","NCache","NDEigensystem","NDEigenvalues","NDSolve","NDSolveValue","Nearest","NearestFunction","NearestMeshCells","NearestNeighborGraph","NearestTo","NebulaData","NeedCurrentFrontEndPackagePacket","NeedCurrentFrontEndSymbolsPacket","NeedlemanWunschSimilarity","Needs","Negative","NegativeBinomialDistribution","NegativeDefiniteMatrixQ","NegativeIntegers","NegativeMultinomialDistribution","NegativeRationals","NegativeReals","NegativeSemidefiniteMatrixQ","NeighborhoodData","NeighborhoodGraph","Nest","NestedGreaterGreater","NestedLessLess","NestedScriptRules","NestGraph","NestList","NestWhile","NestWhileList","NetAppend","NetBidirectionalOperator","NetChain","NetDecoder","NetDelete","NetDrop","NetEncoder","NetEvaluationMode","NetExtract","NetFlatten","NetFoldOperator","NetGANOperator","NetGraph","NetInformation","NetInitialize","NetInsert","NetInsertSharedArrays","NetJoin","NetMapOperator","NetMapThreadOperator","NetMeasurements","NetModel","NetNestOperator","NetPairEmbeddingOperator","NetPort","NetPortGradient","NetPrepend","NetRename","NetReplace","NetReplacePart","NetSharedArray","NetStateObject","NetTake","NetTrain","NetTrainResultsObject","NetworkPacketCapture","NetworkPacketRecording","NetworkPacketRecordingDuring","NetworkPacketTrace","NeumannValue","NevilleThetaC","NevilleThetaD","NevilleThetaN","NevilleThetaS","NewPrimitiveStyle","NExpectation","Next","NextCell","NextDate","NextPrime","NextScheduledTaskTime","NHoldAll","NHoldFirst","NHoldRest","NicholsGridLines","NicholsPlot","NightHemisphere","NIntegrate","NMaximize","NMaxValue","NMinimize","NMinValue","NominalVariables","NonAssociative","NoncentralBetaDistribution","NoncentralChiSquareDistribution","NoncentralFRatioDistribution","NoncentralStudentTDistribution","NonCommutativeMultiply","NonConstants","NondimensionalizationTransform","None","NoneTrue","NonlinearModelFit","NonlinearStateSpaceModel","NonlocalMeansFilter","NonNegative","NonNegativeIntegers","NonNegativeRationals","NonNegativeReals","NonPositive","NonPositiveIntegers","NonPositiveRationals","NonPositiveReals","Nor","NorlundB","Norm","Normal","NormalDistribution","NormalGrouping","NormalizationLayer","Normalize","Normalized","NormalizedSquaredEuclideanDistance","NormalMatrixQ","NormalsFunction","NormFunction","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","Notebook","NotebookApply","NotebookAutoSave","NotebookClose","NotebookConvertSettings","NotebookCreate","NotebookCreateReturnObject","NotebookDefault","NotebookDelete","NotebookDirectory","NotebookDynamicExpression","NotebookEvaluate","NotebookEventActions","NotebookFileName","NotebookFind","NotebookFindReturnObject","NotebookGet","NotebookGetLayoutInformationPacket","NotebookGetMisspellingsPacket","NotebookImport","NotebookInformation","NotebookInterfaceObject","NotebookLocate","NotebookObject","NotebookOpen","NotebookOpenReturnObject","NotebookPath","NotebookPrint","NotebookPut","NotebookPutReturnObject","NotebookRead","NotebookResetGeneratedCells","Notebooks","NotebookSave","NotebookSaveAs","NotebookSelection","NotebookSetupLayoutInformationPacket","NotebooksMenu","NotebookTemplate","NotebookWrite","NotElement","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","Nothing","NotHumpDownHump","NotHumpEqual","NotificationFunction","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessFullEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotPrecedesTilde","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Now","NoWhitespace","NProbability","NProduct","NProductFactors","NRoots","NSolve","NSum","NSumTerms","NuclearExplosionData","NuclearReactorData","Null","NullRecords","NullSpace","NullWords","Number","NumberCompose","NumberDecompose","NumberExpand","NumberFieldClassNumber","NumberFieldDiscriminant","NumberFieldFundamentalUnits","NumberFieldIntegralBasis","NumberFieldNormRepresentatives","NumberFieldRegulator","NumberFieldRootsOfUnity","NumberFieldSignature","NumberForm","NumberFormat","NumberLinePlot","NumberMarks","NumberMultiplier","NumberPadding","NumberPoint","NumberQ","NumberSeparator","NumberSigns","NumberString","Numerator","NumeratorDenominator","NumericalOrder","NumericalSort","NumericArray","NumericArrayQ","NumericArrayType","NumericFunction","NumericQ","NuttallWindow","NValues","NyquistGridLines","NyquistPlot","O","ObservabilityGramian","ObservabilityMatrix","ObservableDecomposition","ObservableModelQ","OceanData","Octahedron","OddQ","Off","Offset","OLEData","On","ONanGroupON","Once","OneIdentity","Opacity","OpacityFunction","OpacityFunctionScaling","Open","OpenAppend","Opener","OpenerBox","OpenerBoxOptions","OpenerView","OpenFunctionInspectorPacket","Opening","OpenRead","OpenSpecialOptions","OpenTemporary","OpenWrite","Operate","OperatingSystem","OperatorApplied","OptimumFlowData","Optional","OptionalElement","OptionInspectorSettings","OptionQ","Options","OptionsPacket","OptionsPattern","OptionValue","OptionValueBox","OptionValueBoxOptions","Or","Orange","Order","OrderDistribution","OrderedQ","Ordering","OrderingBy","OrderingLayer","Orderless","OrderlessPatternSequence","OrnsteinUhlenbeckProcess","Orthogonalize","OrthogonalMatrixQ","Out","Outer","OuterPolygon","OuterPolyhedron","OutputAutoOverwrite","OutputControllabilityMatrix","OutputControllableModelQ","OutputForm","OutputFormData","OutputGrouping","OutputMathEditExpression","OutputNamePacket","OutputResponse","OutputSizeLimit","OutputStream","Over","OverBar","OverDot","Overflow","OverHat","Overlaps","Overlay","OverlayBox","OverlayBoxOptions","Overscript","OverscriptBox","OverscriptBoxOptions","OverTilde","OverVector","OverwriteTarget","OwenT","OwnValues","Package","PackingMethod","PackPaclet","PacletDataRebuild","PacletDirectoryAdd","PacletDirectoryLoad","PacletDirectoryRemove","PacletDirectoryUnload","PacletDisable","PacletEnable","PacletFind","PacletFindRemote","PacletInformation","PacletInstall","PacletInstallSubmit","PacletNewerQ","PacletObject","PacletObjectQ","PacletSite","PacletSiteObject","PacletSiteRegister","PacletSites","PacletSiteUnregister","PacletSiteUpdate","PacletUninstall","PacletUpdate","PaddedForm","Padding","PaddingLayer","PaddingSize","PadeApproximant","PadLeft","PadRight","PageBreakAbove","PageBreakBelow","PageBreakWithin","PageFooterLines","PageFooters","PageHeaderLines","PageHeaders","PageHeight","PageRankCentrality","PageTheme","PageWidth","Pagination","PairedBarChart","PairedHistogram","PairedSmoothHistogram","PairedTTest","PairedZTest","PaletteNotebook","PalettePath","PalindromeQ","Pane","PaneBox","PaneBoxOptions","Panel","PanelBox","PanelBoxOptions","Paneled","PaneSelector","PaneSelectorBox","PaneSelectorBoxOptions","PaperWidth","ParabolicCylinderD","ParagraphIndent","ParagraphSpacing","ParallelArray","ParallelCombine","ParallelDo","Parallelepiped","ParallelEvaluate","Parallelization","Parallelize","ParallelMap","ParallelNeeds","Parallelogram","ParallelProduct","ParallelSubmit","ParallelSum","ParallelTable","ParallelTry","Parameter","ParameterEstimator","ParameterMixtureDistribution","ParameterVariables","ParametricFunction","ParametricNDSolve","ParametricNDSolveValue","ParametricPlot","ParametricPlot3D","ParametricRampLayer","ParametricRegion","ParentBox","ParentCell","ParentConnect","ParentDirectory","ParentForm","Parenthesize","ParentList","ParentNotebook","ParetoDistribution","ParetoPickandsDistribution","ParkData","Part","PartBehavior","PartialCorrelationFunction","PartialD","ParticleAcceleratorData","ParticleData","Partition","PartitionGranularity","PartitionsP","PartitionsQ","PartLayer","PartOfSpeech","PartProtection","ParzenWindow","PascalDistribution","PassEventsDown","PassEventsUp","Paste","PasteAutoQuoteCharacters","PasteBoxFormInlineCells","PasteButton","Path","PathGraph","PathGraphQ","Pattern","PatternFilling","PatternSequence","PatternTest","PauliMatrix","PaulWavelet","Pause","PausedTime","PDF","PeakDetect","PeanoCurve","PearsonChiSquareTest","PearsonCorrelationTest","PearsonDistribution","PercentForm","PerfectNumber","PerfectNumberQ","PerformanceGoal","Perimeter","PeriodicBoundaryCondition","PeriodicInterpolation","Periodogram","PeriodogramArray","Permanent","Permissions","PermissionsGroup","PermissionsGroupMemberQ","PermissionsGroups","PermissionsKey","PermissionsKeys","PermutationCycles","PermutationCyclesQ","PermutationGroup","PermutationLength","PermutationList","PermutationListQ","PermutationMax","PermutationMin","PermutationOrder","PermutationPower","PermutationProduct","PermutationReplace","Permutations","PermutationSupport","Permute","PeronaMalikFilter","Perpendicular","PerpendicularBisector","PersistenceLocation","PersistenceTime","PersistentObject","PersistentObjects","PersistentValue","PersonData","PERTDistribution","PetersenGraph","PhaseMargins","PhaseRange","PhysicalSystemData","Pi","Pick","PIDData","PIDDerivativeFilter","PIDFeedforward","PIDTune","Piecewise","PiecewiseExpand","PieChart","PieChart3D","PillaiTrace","PillaiTraceTest","PingTime","Pink","PitchRecognize","Pivoting","PixelConstrained","PixelValue","PixelValuePositions","Placed","Placeholder","PlaceholderReplace","Plain","PlanarAngle","PlanarGraph","PlanarGraphQ","PlanckRadiationLaw","PlaneCurveData","PlanetaryMoonData","PlanetData","PlantData","Play","PlayRange","Plot","Plot3D","Plot3Matrix","PlotDivision","PlotJoined","PlotLabel","PlotLabels","PlotLayout","PlotLegends","PlotMarkers","PlotPoints","PlotRange","PlotRangeClipping","PlotRangeClipPlanesStyle","PlotRangePadding","PlotRegion","PlotStyle","PlotTheme","Pluralize","Plus","PlusMinus","Pochhammer","PodStates","PodWidth","Point","Point3DBox","Point3DBoxOptions","PointBox","PointBoxOptions","PointFigureChart","PointLegend","PointSize","PoissonConsulDistribution","PoissonDistribution","PoissonProcess","PoissonWindow","PolarAxes","PolarAxesOrigin","PolarGridLines","PolarPlot","PolarTicks","PoleZeroMarkers","PolyaAeppliDistribution","PolyGamma","Polygon","Polygon3DBox","Polygon3DBoxOptions","PolygonalNumber","PolygonAngle","PolygonBox","PolygonBoxOptions","PolygonCoordinates","PolygonDecomposition","PolygonHoleScale","PolygonIntersections","PolygonScale","Polyhedron","PolyhedronAngle","PolyhedronCoordinates","PolyhedronData","PolyhedronDecomposition","PolyhedronGenus","PolyLog","PolynomialExtendedGCD","PolynomialForm","PolynomialGCD","PolynomialLCM","PolynomialMod","PolynomialQ","PolynomialQuotient","PolynomialQuotientRemainder","PolynomialReduce","PolynomialRemainder","Polynomials","PoolingLayer","PopupMenu","PopupMenuBox","PopupMenuBoxOptions","PopupView","PopupWindow","Position","PositionIndex","Positive","PositiveDefiniteMatrixQ","PositiveIntegers","PositiveRationals","PositiveReals","PositiveSemidefiniteMatrixQ","PossibleZeroQ","Postfix","PostScript","Power","PowerDistribution","PowerExpand","PowerMod","PowerModList","PowerRange","PowerSpectralDensity","PowersRepresentations","PowerSymmetricPolynomial","Precedence","PrecedenceForm","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Precision","PrecisionGoal","PreDecrement","Predict","PredictionRoot","PredictorFunction","PredictorInformation","PredictorMeasurements","PredictorMeasurementsObject","PreemptProtect","PreferencesPath","Prefix","PreIncrement","Prepend","PrependLayer","PrependTo","PreprocessingRules","PreserveColor","PreserveImageOptions","Previous","PreviousCell","PreviousDate","PriceGraphDistribution","PrimaryPlaceholder","Prime","PrimeNu","PrimeOmega","PrimePi","PrimePowerQ","PrimeQ","Primes","PrimeZetaP","PrimitivePolynomialQ","PrimitiveRoot","PrimitiveRootList","PrincipalComponents","PrincipalValue","Print","PrintableASCIIQ","PrintAction","PrintForm","PrintingCopies","PrintingOptions","PrintingPageRange","PrintingStartingPageNumber","PrintingStyleEnvironment","Printout3D","Printout3DPreviewer","PrintPrecision","PrintTemporary","Prism","PrismBox","PrismBoxOptions","PrivateCellOptions","PrivateEvaluationOptions","PrivateFontOptions","PrivateFrontEndOptions","PrivateKey","PrivateNotebookOptions","PrivatePaths","Probability","ProbabilityDistribution","ProbabilityPlot","ProbabilityPr","ProbabilityScalePlot","ProbitModelFit","ProcessConnection","ProcessDirectory","ProcessEnvironment","Processes","ProcessEstimator","ProcessInformation","ProcessObject","ProcessParameterAssumptions","ProcessParameterQ","ProcessStateDomain","ProcessStatus","ProcessTimeDomain","Product","ProductDistribution","ProductLog","ProgressIndicator","ProgressIndicatorBox","ProgressIndicatorBoxOptions","Projection","Prolog","PromptForm","ProofObject","Properties","Property","PropertyList","PropertyValue","Proportion","Proportional","Protect","Protected","ProteinData","Pruning","PseudoInverse","PsychrometricPropertyData","PublicKey","PublisherID","PulsarData","PunctuationCharacter","Purple","Put","PutAppend","Pyramid","PyramidBox","PyramidBoxOptions","QBinomial","QFactorial","QGamma","QHypergeometricPFQ","QnDispersion","QPochhammer","QPolyGamma","QRDecomposition","QuadraticIrrationalQ","QuadraticOptimization","Quantile","QuantilePlot","Quantity","QuantityArray","QuantityDistribution","QuantityForm","QuantityMagnitude","QuantityQ","QuantityUnit","QuantityVariable","QuantityVariableCanonicalUnit","QuantityVariableDimensions","QuantityVariableIdentifier","QuantityVariablePhysicalQuantity","Quartics","QuartileDeviation","Quartiles","QuartileSkewness","Query","QueueingNetworkProcess","QueueingProcess","QueueProperties","Quiet","Quit","Quotient","QuotientRemainder","RadialGradientImage","RadialityCentrality","RadicalBox","RadicalBoxOptions","RadioButton","RadioButtonBar","RadioButtonBox","RadioButtonBoxOptions","Radon","RadonTransform","RamanujanTau","RamanujanTauL","RamanujanTauTheta","RamanujanTauZ","Ramp","Random","RandomChoice","RandomColor","RandomComplex","RandomEntity","RandomFunction","RandomGeoPosition","RandomGraph","RandomImage","RandomInstance","RandomInteger","RandomPermutation","RandomPoint","RandomPolygon","RandomPolyhedron","RandomPrime","RandomReal","RandomSample","RandomSeed","RandomSeeding","RandomVariate","RandomWalkProcess","RandomWord","Range","RangeFilter","RangeSpecification","RankedMax","RankedMin","RarerProbability","Raster","Raster3D","Raster3DBox","Raster3DBoxOptions","RasterArray","RasterBox","RasterBoxOptions","Rasterize","RasterSize","Rational","RationalFunctions","Rationalize","Rationals","Ratios","RawArray","RawBoxes","RawData","RawMedium","RayleighDistribution","Re","Read","ReadByteArray","ReadLine","ReadList","ReadProtected","ReadString","Real","RealAbs","RealBlockDiagonalForm","RealDigits","RealExponent","Reals","RealSign","Reap","RebuildPacletData","RecognitionPrior","RecognitionThreshold","Record","RecordLists","RecordSeparators","Rectangle","RectangleBox","RectangleBoxOptions","RectangleChart","RectangleChart3D","RectangularRepeatingElement","RecurrenceFilter","RecurrenceTable","RecurringDigitsForm","Red","Reduce","RefBox","ReferenceLineStyle","ReferenceMarkers","ReferenceMarkerStyle","Refine","ReflectionMatrix","ReflectionTransform","Refresh","RefreshRate","Region","RegionBinarize","RegionBoundary","RegionBoundaryStyle","RegionBounds","RegionCentroid","RegionDifference","RegionDimension","RegionDisjoint","RegionDistance","RegionDistanceFunction","RegionEmbeddingDimension","RegionEqual","RegionFillingStyle","RegionFunction","RegionImage","RegionIntersection","RegionMeasure","RegionMember","RegionMemberFunction","RegionMoment","RegionNearest","RegionNearestFunction","RegionPlot","RegionPlot3D","RegionProduct","RegionQ","RegionResize","RegionSize","RegionSymmetricDifference","RegionUnion","RegionWithin","RegisterExternalEvaluator","RegularExpression","Regularization","RegularlySampledQ","RegularPolygon","ReIm","ReImLabels","ReImPlot","ReImStyle","Reinstall","RelationalDatabase","RelationGraph","Release","ReleaseHold","ReliabilityDistribution","ReliefImage","ReliefPlot","RemoteAuthorizationCaching","RemoteConnect","RemoteConnectionObject","RemoteFile","RemoteRun","RemoteRunProcess","Remove","RemoveAlphaChannel","RemoveAsynchronousTask","RemoveAudioStream","RemoveBackground","RemoveChannelListener","RemoveChannelSubscribers","Removed","RemoveDiacritics","RemoveInputStreamMethod","RemoveOutputStreamMethod","RemoveProperty","RemoveScheduledTask","RemoveUsers","RemoveVideoStream","RenameDirectory","RenameFile","RenderAll","RenderingOptions","RenewalProcess","RenkoChart","RepairMesh","Repeated","RepeatedNull","RepeatedString","RepeatedTiming","RepeatingElement","Replace","ReplaceAll","ReplaceHeldPart","ReplaceImageValue","ReplaceList","ReplacePart","ReplacePixelValue","ReplaceRepeated","ReplicateLayer","RequiredPhysicalQuantities","Resampling","ResamplingAlgorithmData","ResamplingMethod","Rescale","RescalingTransform","ResetDirectory","ResetMenusPacket","ResetScheduledTask","ReshapeLayer","Residue","ResizeLayer","Resolve","ResourceAcquire","ResourceData","ResourceFunction","ResourceObject","ResourceRegister","ResourceRemove","ResourceSearch","ResourceSubmissionObject","ResourceSubmit","ResourceSystemBase","ResourceSystemPath","ResourceUpdate","ResourceVersion","ResponseForm","Rest","RestartInterval","Restricted","Resultant","ResumePacket","Return","ReturnEntersInput","ReturnExpressionPacket","ReturnInputFormPacket","ReturnPacket","ReturnReceiptFunction","ReturnTextPacket","Reverse","ReverseApplied","ReverseBiorthogonalSplineWavelet","ReverseElement","ReverseEquilibrium","ReverseGraph","ReverseSort","ReverseSortBy","ReverseUpEquilibrium","RevolutionAxis","RevolutionPlot3D","RGBColor","RiccatiSolve","RiceDistribution","RidgeFilter","RiemannR","RiemannSiegelTheta","RiemannSiegelZ","RiemannXi","Riffle","Right","RightArrow","RightArrowBar","RightArrowLeftArrow","RightComposition","RightCosetRepresentative","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","RiskAchievementImportance","RiskReductionImportance","RogersTanimotoDissimilarity","RollPitchYawAngles","RollPitchYawMatrix","RomanNumeral","Root","RootApproximant","RootIntervals","RootLocusPlot","RootMeanSquare","RootOfUnityQ","RootReduce","Roots","RootSum","Rotate","RotateLabel","RotateLeft","RotateRight","RotationAction","RotationBox","RotationBoxOptions","RotationMatrix","RotationTransform","Round","RoundImplies","RoundingRadius","Row","RowAlignments","RowBackgrounds","RowBox","RowHeights","RowLines","RowMinHeight","RowReduce","RowsEqual","RowSpacings","RSolve","RSolveValue","RudinShapiro","RudvalisGroupRu","Rule","RuleCondition","RuleDelayed","RuleForm","RulePlot","RulerUnits","Run","RunProcess","RunScheduledTask","RunThrough","RuntimeAttributes","RuntimeOptions","RussellRaoDissimilarity","SameQ","SameTest","SameTestProperties","SampledEntityClass","SampleDepth","SampledSoundFunction","SampledSoundList","SampleRate","SamplingPeriod","SARIMAProcess","SARMAProcess","SASTriangle","SatelliteData","SatisfiabilityCount","SatisfiabilityInstances","SatisfiableQ","Saturday","Save","Saveable","SaveAutoDelete","SaveConnection","SaveDefinitions","SavitzkyGolayMatrix","SawtoothWave","Scale","Scaled","ScaleDivisions","ScaledMousePosition","ScaleOrigin","ScalePadding","ScaleRanges","ScaleRangeStyle","ScalingFunctions","ScalingMatrix","ScalingTransform","Scan","ScheduledTask","ScheduledTaskActiveQ","ScheduledTaskInformation","ScheduledTaskInformationData","ScheduledTaskObject","ScheduledTasks","SchurDecomposition","ScientificForm","ScientificNotationThreshold","ScorerGi","ScorerGiPrime","ScorerHi","ScorerHiPrime","ScreenRectangle","ScreenStyleEnvironment","ScriptBaselineShifts","ScriptForm","ScriptLevel","ScriptMinSize","ScriptRules","ScriptSizeMultipliers","Scrollbars","ScrollingOptions","ScrollPosition","SearchAdjustment","SearchIndexObject","SearchIndices","SearchQueryString","SearchResultObject","Sec","Sech","SechDistribution","SecondOrderConeOptimization","SectionGrouping","SectorChart","SectorChart3D","SectorOrigin","SectorSpacing","SecuredAuthenticationKey","SecuredAuthenticationKeys","SeedRandom","Select","Selectable","SelectComponents","SelectedCells","SelectedNotebook","SelectFirst","Selection","SelectionAnimate","SelectionCell","SelectionCellCreateCell","SelectionCellDefaultStyle","SelectionCellParentStyle","SelectionCreateCell","SelectionDebuggerTag","SelectionDuplicateCell","SelectionEvaluate","SelectionEvaluateCreateCell","SelectionMove","SelectionPlaceholder","SelectionSetStyle","SelectWithContents","SelfLoops","SelfLoopStyle","SemanticImport","SemanticImportString","SemanticInterpretation","SemialgebraicComponentInstances","SemidefiniteOptimization","SendMail","SendMessage","Sequence","SequenceAlignment","SequenceAttentionLayer","SequenceCases","SequenceCount","SequenceFold","SequenceFoldList","SequenceForm","SequenceHold","SequenceLastLayer","SequenceMostLayer","SequencePosition","SequencePredict","SequencePredictorFunction","SequenceReplace","SequenceRestLayer","SequenceReverseLayer","SequenceSplit","Series","SeriesCoefficient","SeriesData","SeriesTermGoal","ServiceConnect","ServiceDisconnect","ServiceExecute","ServiceObject","ServiceRequest","ServiceResponse","ServiceSubmit","SessionSubmit","SessionTime","Set","SetAccuracy","SetAlphaChannel","SetAttributes","Setbacks","SetBoxFormNamesPacket","SetCloudDirectory","SetCookies","SetDelayed","SetDirectory","SetEnvironment","SetEvaluationNotebook","SetFileDate","SetFileLoadingContext","SetNotebookStatusLine","SetOptions","SetOptionsPacket","SetPermissions","SetPrecision","SetProperty","SetSecuredAuthenticationKey","SetSelectedNotebook","SetSharedFunction","SetSharedVariable","SetSpeechParametersPacket","SetStreamPosition","SetSystemModel","SetSystemOptions","Setter","SetterBar","SetterBox","SetterBoxOptions","Setting","SetUsers","SetValue","Shading","Shallow","ShannonWavelet","ShapiroWilkTest","Share","SharingList","Sharpen","ShearingMatrix","ShearingTransform","ShellRegion","ShenCastanMatrix","ShiftedGompertzDistribution","ShiftRegisterSequence","Short","ShortDownArrow","Shortest","ShortestMatch","ShortestPathFunction","ShortLeftArrow","ShortRightArrow","ShortTimeFourier","ShortTimeFourierData","ShortUpArrow","Show","ShowAutoConvert","ShowAutoSpellCheck","ShowAutoStyles","ShowCellBracket","ShowCellLabel","ShowCellTags","ShowClosedCellArea","ShowCodeAssist","ShowContents","ShowControls","ShowCursorTracker","ShowGroupOpenCloseIcon","ShowGroupOpener","ShowInvisibleCharacters","ShowPageBreaks","ShowPredictiveInterface","ShowSelection","ShowShortBoxForm","ShowSpecialCharacters","ShowStringCharacters","ShowSyntaxStyles","ShrinkingDelay","ShrinkWrapBoundingBox","SiderealTime","SiegelTheta","SiegelTukeyTest","SierpinskiCurve","SierpinskiMesh","Sign","Signature","SignedRankTest","SignedRegionDistance","SignificanceLevel","SignPadding","SignTest","SimilarityRules","SimpleGraph","SimpleGraphQ","SimplePolygonQ","SimplePolyhedronQ","Simplex","Simplify","Sin","Sinc","SinghMaddalaDistribution","SingleEvaluation","SingleLetterItalics","SingleLetterStyle","SingularValueDecomposition","SingularValueList","SingularValuePlot","SingularValues","Sinh","SinhIntegral","SinIntegral","SixJSymbol","Skeleton","SkeletonTransform","SkellamDistribution","Skewness","SkewNormalDistribution","SkinStyle","Skip","SliceContourPlot3D","SliceDensityPlot3D","SliceDistribution","SliceVectorPlot3D","Slider","Slider2D","Slider2DBox","Slider2DBoxOptions","SliderBox","SliderBoxOptions","SlideView","Slot","SlotSequence","Small","SmallCircle","Smaller","SmithDecomposition","SmithDelayCompensator","SmithWatermanSimilarity","SmoothDensityHistogram","SmoothHistogram","SmoothHistogram3D","SmoothKernelDistribution","SnDispersion","Snippet","SnubPolyhedron","SocialMediaData","Socket","SocketConnect","SocketListen","SocketListener","SocketObject","SocketOpen","SocketReadMessage","SocketReadyQ","Sockets","SocketWaitAll","SocketWaitNext","SoftmaxLayer","SokalSneathDissimilarity","SolarEclipse","SolarSystemFeatureData","SolidAngle","SolidData","SolidRegionQ","Solve","SolveAlways","SolveDelayed","Sort","SortBy","SortedBy","SortedEntityClass","Sound","SoundAndGraphics","SoundNote","SoundVolume","SourceLink","Sow","Space","SpaceCurveData","SpaceForm","Spacer","Spacings","Span","SpanAdjustments","SpanCharacterRounding","SpanFromAbove","SpanFromBoth","SpanFromLeft","SpanLineThickness","SpanMaxSize","SpanMinSize","SpanningCharacters","SpanSymmetric","SparseArray","SpatialGraphDistribution","SpatialMedian","SpatialTransformationLayer","Speak","SpeakerMatchQ","SpeakTextPacket","SpearmanRankTest","SpearmanRho","SpeciesData","SpecificityGoal","SpectralLineData","Spectrogram","SpectrogramArray","Specularity","SpeechCases","SpeechInterpreter","SpeechRecognize","SpeechSynthesize","SpellingCorrection","SpellingCorrectionList","SpellingDictionaries","SpellingDictionariesPath","SpellingOptions","SpellingSuggestionsPacket","Sphere","SphereBox","SpherePoints","SphericalBesselJ","SphericalBesselY","SphericalHankelH1","SphericalHankelH2","SphericalHarmonicY","SphericalPlot3D","SphericalRegion","SphericalShell","SpheroidalEigenvalue","SpheroidalJoiningFactor","SpheroidalPS","SpheroidalPSPrime","SpheroidalQS","SpheroidalQSPrime","SpheroidalRadialFactor","SpheroidalS1","SpheroidalS1Prime","SpheroidalS2","SpheroidalS2Prime","Splice","SplicedDistribution","SplineClosed","SplineDegree","SplineKnots","SplineWeights","Split","SplitBy","SpokenString","Sqrt","SqrtBox","SqrtBoxOptions","Square","SquaredEuclideanDistance","SquareFreeQ","SquareIntersection","SquareMatrixQ","SquareRepeatingElement","SquaresR","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","SquareWave","SSSTriangle","StabilityMargins","StabilityMarginsStyle","StableDistribution","Stack","StackBegin","StackComplete","StackedDateListPlot","StackedListPlot","StackInhibit","StadiumShape","StandardAtmosphereData","StandardDeviation","StandardDeviationFilter","StandardForm","Standardize","Standardized","StandardOceanData","StandbyDistribution","Star","StarClusterData","StarData","StarGraph","StartAsynchronousTask","StartExternalSession","StartingStepSize","StartOfLine","StartOfString","StartProcess","StartScheduledTask","StartupSound","StartWebSession","StateDimensions","StateFeedbackGains","StateOutputEstimator","StateResponse","StateSpaceModel","StateSpaceRealization","StateSpaceTransform","StateTransformationLinearize","StationaryDistribution","StationaryWaveletPacketTransform","StationaryWaveletTransform","StatusArea","StatusCentrality","StepMonitor","StereochemistryElements","StieltjesGamma","StippleShading","StirlingS1","StirlingS2","StopAsynchronousTask","StoppingPowerData","StopScheduledTask","StrataVariables","StratonovichProcess","StreamColorFunction","StreamColorFunctionScaling","StreamDensityPlot","StreamMarkers","StreamPlot","StreamPoints","StreamPosition","Streams","StreamScale","StreamStyle","String","StringBreak","StringByteCount","StringCases","StringContainsQ","StringCount","StringDelete","StringDrop","StringEndsQ","StringExpression","StringExtract","StringForm","StringFormat","StringFreeQ","StringInsert","StringJoin","StringLength","StringMatchQ","StringPadLeft","StringPadRight","StringPart","StringPartition","StringPosition","StringQ","StringRepeat","StringReplace","StringReplaceList","StringReplacePart","StringReverse","StringRiffle","StringRotateLeft","StringRotateRight","StringSkeleton","StringSplit","StringStartsQ","StringTake","StringTemplate","StringToByteArray","StringToStream","StringTrim","StripBoxes","StripOnInput","StripWrapperBoxes","StrokeForm","StructuralImportance","StructuredArray","StructuredArrayHeadQ","StructuredSelection","StruveH","StruveL","Stub","StudentTDistribution","Style","StyleBox","StyleBoxAutoDelete","StyleData","StyleDefinitions","StyleForm","StyleHints","StyleKeyMapping","StyleMenuListing","StyleNameDialogSettings","StyleNames","StylePrint","StyleSheetPath","Subdivide","Subfactorial","Subgraph","SubMinus","SubPlus","SubresultantPolynomialRemainders","SubresultantPolynomials","Subresultants","Subscript","SubscriptBox","SubscriptBoxOptions","Subscripted","Subsequences","Subset","SubsetCases","SubsetCount","SubsetEqual","SubsetMap","SubsetPosition","SubsetQ","SubsetReplace","Subsets","SubStar","SubstitutionSystem","Subsuperscript","SubsuperscriptBox","SubsuperscriptBoxOptions","SubtitleEncoding","SubtitleTracks","Subtract","SubtractFrom","SubtractSides","SubValues","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","Success","SuchThat","Sum","SumConvergence","SummationLayer","Sunday","SunPosition","Sunrise","Sunset","SuperDagger","SuperMinus","SupernovaData","SuperPlus","Superscript","SuperscriptBox","SuperscriptBoxOptions","Superset","SupersetEqual","SuperStar","Surd","SurdForm","SurfaceAppearance","SurfaceArea","SurfaceColor","SurfaceData","SurfaceGraphics","SurvivalDistribution","SurvivalFunction","SurvivalModel","SurvivalModelFit","SuspendPacket","SuzukiDistribution","SuzukiGroupSuz","SwatchLegend","Switch","Symbol","SymbolName","SymletWavelet","Symmetric","SymmetricGroup","SymmetricKey","SymmetricMatrixQ","SymmetricPolynomial","SymmetricReduction","Symmetrize","SymmetrizedArray","SymmetrizedArrayRules","SymmetrizedDependentComponents","SymmetrizedIndependentComponents","SymmetrizedReplacePart","SynchronousInitialization","SynchronousUpdating","Synonyms","Syntax","SyntaxForm","SyntaxInformation","SyntaxLength","SyntaxPacket","SyntaxQ","SynthesizeMissingValues","SystemCredential","SystemCredentialData","SystemCredentialKey","SystemCredentialKeys","SystemCredentialStoreObject","SystemDialogInput","SystemException","SystemGet","SystemHelpPath","SystemInformation","SystemInformationData","SystemInstall","SystemModel","SystemModeler","SystemModelExamples","SystemModelLinearize","SystemModelParametricSimulate","SystemModelPlot","SystemModelProgressReporting","SystemModelReliability","SystemModels","SystemModelSimulate","SystemModelSimulateSensitivity","SystemModelSimulationData","SystemOpen","SystemOptions","SystemProcessData","SystemProcesses","SystemsConnectionsModel","SystemsModelDelay","SystemsModelDelayApproximate","SystemsModelDelete","SystemsModelDimensions","SystemsModelExtract","SystemsModelFeedbackConnect","SystemsModelLabels","SystemsModelLinearity","SystemsModelMerge","SystemsModelOrder","SystemsModelParallelConnect","SystemsModelSeriesConnect","SystemsModelStateFeedbackConnect","SystemsModelVectorRelativeOrders","SystemStub","SystemTest","Tab","TabFilling","Table","TableAlignments","TableDepth","TableDirections","TableForm","TableHeadings","TableSpacing","TableView","TableViewBox","TableViewBoxBackground","TableViewBoxItemSize","TableViewBoxOptions","TabSpacings","TabView","TabViewBox","TabViewBoxOptions","TagBox","TagBoxNote","TagBoxOptions","TaggingRules","TagSet","TagSetDelayed","TagStyle","TagUnset","Take","TakeDrop","TakeLargest","TakeLargestBy","TakeList","TakeSmallest","TakeSmallestBy","TakeWhile","Tally","Tan","Tanh","TargetDevice","TargetFunctions","TargetSystem","TargetUnits","TaskAbort","TaskExecute","TaskObject","TaskRemove","TaskResume","Tasks","TaskSuspend","TaskWait","TautologyQ","TelegraphProcess","TemplateApply","TemplateArgBox","TemplateBox","TemplateBoxOptions","TemplateEvaluate","TemplateExpression","TemplateIf","TemplateObject","TemplateSequence","TemplateSlot","TemplateSlotSequence","TemplateUnevaluated","TemplateVerbatim","TemplateWith","TemporalData","TemporalRegularity","Temporary","TemporaryVariable","TensorContract","TensorDimensions","TensorExpand","TensorProduct","TensorQ","TensorRank","TensorReduce","TensorSymmetry","TensorTranspose","TensorWedge","TestID","TestReport","TestReportObject","TestResultObject","Tetrahedron","TetrahedronBox","TetrahedronBoxOptions","TeXForm","TeXSave","Text","Text3DBox","Text3DBoxOptions","TextAlignment","TextBand","TextBoundingBox","TextBox","TextCases","TextCell","TextClipboardType","TextContents","TextData","TextElement","TextForm","TextGrid","TextJustification","TextLine","TextPacket","TextParagraph","TextPosition","TextRecognize","TextSearch","TextSearchReport","TextSentences","TextString","TextStructure","TextStyle","TextTranslation","Texture","TextureCoordinateFunction","TextureCoordinateScaling","TextWords","Therefore","ThermodynamicData","ThermometerGauge","Thick","Thickness","Thin","Thinning","ThisLink","ThompsonGroupTh","Thread","ThreadingLayer","ThreeJSymbol","Threshold","Through","Throw","ThueMorse","Thumbnail","Thursday","Ticks","TicksStyle","TideData","Tilde","TildeEqual","TildeFullEqual","TildeTilde","TimeConstrained","TimeConstraint","TimeDirection","TimeFormat","TimeGoal","TimelinePlot","TimeObject","TimeObjectQ","TimeRemaining","Times","TimesBy","TimeSeries","TimeSeriesAggregate","TimeSeriesForecast","TimeSeriesInsert","TimeSeriesInvertibility","TimeSeriesMap","TimeSeriesMapThread","TimeSeriesModel","TimeSeriesModelFit","TimeSeriesResample","TimeSeriesRescale","TimeSeriesShift","TimeSeriesThread","TimeSeriesWindow","TimeUsed","TimeValue","TimeWarpingCorrespondence","TimeWarpingDistance","TimeZone","TimeZoneConvert","TimeZoneOffset","Timing","Tiny","TitleGrouping","TitsGroupT","ToBoxes","ToCharacterCode","ToColor","ToContinuousTimeModel","ToDate","Today","ToDiscreteTimeModel","ToEntity","ToeplitzMatrix","ToExpression","ToFileName","Together","Toggle","ToggleFalse","Toggler","TogglerBar","TogglerBox","TogglerBoxOptions","ToHeldExpression","ToInvertibleTimeSeries","TokenWords","Tolerance","ToLowerCase","Tomorrow","ToNumberField","TooBig","Tooltip","TooltipBox","TooltipBoxOptions","TooltipDelay","TooltipStyle","ToonShading","Top","TopHatTransform","ToPolarCoordinates","TopologicalSort","ToRadicals","ToRules","ToSphericalCoordinates","ToString","Total","TotalHeight","TotalLayer","TotalVariationFilter","TotalWidth","TouchPosition","TouchscreenAutoZoom","TouchscreenControlPlacement","ToUpperCase","Tr","Trace","TraceAbove","TraceAction","TraceBackward","TraceDepth","TraceDialog","TraceForward","TraceInternal","TraceLevel","TraceOff","TraceOn","TraceOriginal","TracePrint","TraceScan","TrackedSymbols","TrackingFunction","TracyWidomDistribution","TradingChart","TraditionalForm","TraditionalFunctionNotation","TraditionalNotation","TraditionalOrder","TrainingProgressCheckpointing","TrainingProgressFunction","TrainingProgressMeasurements","TrainingProgressReporting","TrainingStoppingCriterion","TrainingUpdateSchedule","TransferFunctionCancel","TransferFunctionExpand","TransferFunctionFactor","TransferFunctionModel","TransferFunctionPoles","TransferFunctionTransform","TransferFunctionZeros","TransformationClass","TransformationFunction","TransformationFunctions","TransformationMatrix","TransformedDistribution","TransformedField","TransformedProcess","TransformedRegion","TransitionDirection","TransitionDuration","TransitionEffect","TransitiveClosureGraph","TransitiveReductionGraph","Translate","TranslationOptions","TranslationTransform","Transliterate","Transparent","TransparentColor","Transpose","TransposeLayer","TrapSelection","TravelDirections","TravelDirectionsData","TravelDistance","TravelDistanceList","TravelMethod","TravelTime","TreeForm","TreeGraph","TreeGraphQ","TreePlot","TrendStyle","Triangle","TriangleCenter","TriangleConstruct","TriangleMeasurement","TriangleWave","TriangularDistribution","TriangulateMesh","Trig","TrigExpand","TrigFactor","TrigFactorList","Trigger","TrigReduce","TrigToExp","TrimmedMean","TrimmedVariance","TropicalStormData","True","TrueQ","TruncatedDistribution","TruncatedPolyhedron","TsallisQExponentialDistribution","TsallisQGaussianDistribution","TTest","Tube","TubeBezierCurveBox","TubeBezierCurveBoxOptions","TubeBox","TubeBoxOptions","TubeBSplineCurveBox","TubeBSplineCurveBoxOptions","Tuesday","TukeyLambdaDistribution","TukeyWindow","TunnelData","Tuples","TuranGraph","TuringMachine","TuttePolynomial","TwoWayRule","Typed","TypeSpecifier","UnateQ","Uncompress","UnconstrainedParameters","Undefined","UnderBar","Underflow","Underlined","Underoverscript","UnderoverscriptBox","UnderoverscriptBoxOptions","Underscript","UnderscriptBox","UnderscriptBoxOptions","UnderseaFeatureData","UndirectedEdge","UndirectedGraph","UndirectedGraphQ","UndoOptions","UndoTrackedVariables","Unequal","UnequalTo","Unevaluated","UniformDistribution","UniformGraphDistribution","UniformPolyhedron","UniformSumDistribution","Uninstall","Union","UnionedEntityClass","UnionPlus","Unique","UnitaryMatrixQ","UnitBox","UnitConvert","UnitDimensions","Unitize","UnitRootTest","UnitSimplify","UnitStep","UnitSystem","UnitTriangle","UnitVector","UnitVectorLayer","UnityDimensions","UniverseModelData","UniversityData","UnixTime","Unprotect","UnregisterExternalEvaluator","UnsameQ","UnsavedVariables","Unset","UnsetShared","UntrackedVariables","Up","UpArrow","UpArrowBar","UpArrowDownArrow","Update","UpdateDynamicObjects","UpdateDynamicObjectsSynchronous","UpdateInterval","UpdatePacletSites","UpdateSearchIndex","UpDownArrow","UpEquilibrium","UpperCaseQ","UpperLeftArrow","UpperRightArrow","UpperTriangularize","UpperTriangularMatrixQ","Upsample","UpSet","UpSetDelayed","UpTee","UpTeeArrow","UpTo","UpValues","URL","URLBuild","URLDecode","URLDispatcher","URLDownload","URLDownloadSubmit","URLEncode","URLExecute","URLExpand","URLFetch","URLFetchAsynchronous","URLParse","URLQueryDecode","URLQueryEncode","URLRead","URLResponseTime","URLSave","URLSaveAsynchronous","URLShorten","URLSubmit","UseGraphicsRange","UserDefinedWavelet","Using","UsingFrontEnd","UtilityFunction","V2Get","ValenceErrorHandling","ValidationLength","ValidationSet","Value","ValueBox","ValueBoxOptions","ValueDimensions","ValueForm","ValuePreprocessingFunction","ValueQ","Values","ValuesData","Variables","Variance","VarianceEquivalenceTest","VarianceEstimatorFunction","VarianceGammaDistribution","VarianceTest","VectorAngle","VectorAround","VectorAspectRatio","VectorColorFunction","VectorColorFunctionScaling","VectorDensityPlot","VectorGlyphData","VectorGreater","VectorGreaterEqual","VectorLess","VectorLessEqual","VectorMarkers","VectorPlot","VectorPlot3D","VectorPoints","VectorQ","VectorRange","Vectors","VectorScale","VectorScaling","VectorSizes","VectorStyle","Vee","Verbatim","Verbose","VerboseConvertToPostScriptPacket","VerificationTest","VerifyConvergence","VerifyDerivedKey","VerifyDigitalSignature","VerifyFileSignature","VerifyInterpretation","VerifySecurityCertificates","VerifySolutions","VerifyTestAssumptions","Version","VersionedPreferences","VersionNumber","VertexAdd","VertexCapacity","VertexColors","VertexComponent","VertexConnectivity","VertexContract","VertexCoordinateRules","VertexCoordinates","VertexCorrelationSimilarity","VertexCosineSimilarity","VertexCount","VertexCoverQ","VertexDataCoordinates","VertexDegree","VertexDelete","VertexDiceSimilarity","VertexEccentricity","VertexInComponent","VertexInDegree","VertexIndex","VertexJaccardSimilarity","VertexLabeling","VertexLabels","VertexLabelStyle","VertexList","VertexNormals","VertexOutComponent","VertexOutDegree","VertexQ","VertexRenderingFunction","VertexReplace","VertexShape","VertexShapeFunction","VertexSize","VertexStyle","VertexTextureCoordinates","VertexWeight","VertexWeightedGraphQ","Vertical","VerticalBar","VerticalForm","VerticalGauge","VerticalSeparator","VerticalSlider","VerticalTilde","Video","VideoEncoding","VideoExtractFrames","VideoFrameList","VideoFrameMap","VideoPause","VideoPlay","VideoQ","VideoStop","VideoStream","VideoStreams","VideoTimeSeries","VideoTracks","VideoTrim","ViewAngle","ViewCenter","ViewMatrix","ViewPoint","ViewPointSelectorSettings","ViewPort","ViewProjection","ViewRange","ViewVector","ViewVertical","VirtualGroupData","Visible","VisibleCell","VoiceStyleData","VoigtDistribution","VolcanoData","Volume","VonMisesDistribution","VoronoiMesh","WaitAll","WaitAsynchronousTask","WaitNext","WaitUntil","WakebyDistribution","WalleniusHypergeometricDistribution","WaringYuleDistribution","WarpingCorrespondence","WarpingDistance","WatershedComponents","WatsonUSquareTest","WattsStrogatzGraphDistribution","WaveletBestBasis","WaveletFilterCoefficients","WaveletImagePlot","WaveletListPlot","WaveletMapIndexed","WaveletMatrixPlot","WaveletPhi","WaveletPsi","WaveletScale","WaveletScalogram","WaveletThreshold","WeaklyConnectedComponents","WeaklyConnectedGraphComponents","WeaklyConnectedGraphQ","WeakStationarity","WeatherData","WeatherForecastData","WebAudioSearch","WebElementObject","WeberE","WebExecute","WebImage","WebImageSearch","WebSearch","WebSessionObject","WebSessions","WebWindowObject","Wedge","Wednesday","WeibullDistribution","WeierstrassE1","WeierstrassE2","WeierstrassE3","WeierstrassEta1","WeierstrassEta2","WeierstrassEta3","WeierstrassHalfPeriods","WeierstrassHalfPeriodW1","WeierstrassHalfPeriodW2","WeierstrassHalfPeriodW3","WeierstrassInvariantG2","WeierstrassInvariantG3","WeierstrassInvariants","WeierstrassP","WeierstrassPPrime","WeierstrassSigma","WeierstrassZeta","WeightedAdjacencyGraph","WeightedAdjacencyMatrix","WeightedData","WeightedGraphQ","Weights","WelchWindow","WheelGraph","WhenEvent","Which","While","White","WhiteNoiseProcess","WhitePoint","Whitespace","WhitespaceCharacter","WhittakerM","WhittakerW","WienerFilter","WienerProcess","WignerD","WignerSemicircleDistribution","WikidataData","WikidataSearch","WikipediaData","WikipediaSearch","WilksW","WilksWTest","WindDirectionData","WindingCount","WindingPolygon","WindowClickSelect","WindowElements","WindowFloating","WindowFrame","WindowFrameElements","WindowMargins","WindowMovable","WindowOpacity","WindowPersistentStyles","WindowSelected","WindowSize","WindowStatusArea","WindowTitle","WindowToolbars","WindowWidth","WindSpeedData","WindVectorData","WinsorizedMean","WinsorizedVariance","WishartMatrixDistribution","With","WolframAlpha","WolframAlphaDate","WolframAlphaQuantity","WolframAlphaResult","WolframLanguageData","Word","WordBoundary","WordCharacter","WordCloud","WordCount","WordCounts","WordData","WordDefinition","WordFrequency","WordFrequencyData","WordList","WordOrientation","WordSearch","WordSelectionFunction","WordSeparators","WordSpacings","WordStem","WordTranslation","WorkingPrecision","WrapAround","Write","WriteLine","WriteString","Wronskian","XMLElement","XMLObject","XMLTemplate","Xnor","Xor","XYZColor","Yellow","Yesterday","YuleDissimilarity","ZernikeR","ZeroSymmetric","ZeroTest","ZeroWidthTimes","Zeta","ZetaZero","ZIPCodeData","ZipfDistribution","ZoomCenter","ZoomFactor","ZTest","ZTransform","$Aborted","$ActivationGroupID","$ActivationKey","$ActivationUserRegistered","$AddOnsDirectory","$AllowDataUpdates","$AllowExternalChannelFunctions","$AllowInternet","$AssertFunction","$Assumptions","$AsynchronousTask","$AudioDecoders","$AudioEncoders","$AudioInputDevices","$AudioOutputDevices","$BaseDirectory","$BasePacletsDirectory","$BatchInput","$BatchOutput","$BlockchainBase","$BoxForms","$ByteOrdering","$CacheBaseDirectory","$Canceled","$ChannelBase","$CharacterEncoding","$CharacterEncodings","$CloudAccountName","$CloudBase","$CloudConnected","$CloudConnection","$CloudCreditsAvailable","$CloudEvaluation","$CloudExpressionBase","$CloudObjectNameFormat","$CloudObjectURLType","$CloudRootDirectory","$CloudSymbolBase","$CloudUserID","$CloudUserUUID","$CloudVersion","$CloudVersionNumber","$CloudWolframEngineVersionNumber","$CommandLine","$CompilationTarget","$ConditionHold","$ConfiguredKernels","$Context","$ContextPath","$ControlActiveSetting","$Cookies","$CookieStore","$CreationDate","$CurrentLink","$CurrentTask","$CurrentWebSession","$DataStructures","$DateStringFormat","$DefaultAudioInputDevice","$DefaultAudioOutputDevice","$DefaultFont","$DefaultFrontEnd","$DefaultImagingDevice","$DefaultLocalBase","$DefaultMailbox","$DefaultNetworkInterface","$DefaultPath","$DefaultProxyRules","$DefaultSystemCredentialStore","$Display","$DisplayFunction","$DistributedContexts","$DynamicEvaluation","$Echo","$EmbedCodeEnvironments","$EmbeddableServices","$EntityStores","$Epilog","$EvaluationCloudBase","$EvaluationCloudObject","$EvaluationEnvironment","$ExportFormats","$ExternalIdentifierTypes","$ExternalStorageBase","$Failed","$FinancialDataSource","$FontFamilies","$FormatType","$FrontEnd","$FrontEndSession","$GeoEntityTypes","$GeoLocation","$GeoLocationCity","$GeoLocationCountry","$GeoLocationPrecision","$GeoLocationSource","$HistoryLength","$HomeDirectory","$HTMLExportRules","$HTTPCookies","$HTTPRequest","$IgnoreEOF","$ImageFormattingWidth","$ImageResolution","$ImagingDevice","$ImagingDevices","$ImportFormats","$IncomingMailSettings","$InitialDirectory","$Initialization","$InitializationContexts","$Input","$InputFileName","$InputStreamMethods","$Inspector","$InstallationDate","$InstallationDirectory","$InterfaceEnvironment","$InterpreterTypes","$IterationLimit","$KernelCount","$KernelID","$Language","$LaunchDirectory","$LibraryPath","$LicenseExpirationDate","$LicenseID","$LicenseProcesses","$LicenseServer","$LicenseSubprocesses","$LicenseType","$Line","$Linked","$LinkSupported","$LoadedFiles","$LocalBase","$LocalSymbolBase","$MachineAddresses","$MachineDomain","$MachineDomains","$MachineEpsilon","$MachineID","$MachineName","$MachinePrecision","$MachineType","$MaxExtraPrecision","$MaxLicenseProcesses","$MaxLicenseSubprocesses","$MaxMachineNumber","$MaxNumber","$MaxPiecewiseCases","$MaxPrecision","$MaxRootDegree","$MessageGroups","$MessageList","$MessagePrePrint","$Messages","$MinMachineNumber","$MinNumber","$MinorReleaseNumber","$MinPrecision","$MobilePhone","$ModuleNumber","$NetworkConnected","$NetworkInterfaces","$NetworkLicense","$NewMessage","$NewSymbol","$NotebookInlineStorageLimit","$Notebooks","$NoValue","$NumberMarks","$Off","$OperatingSystem","$Output","$OutputForms","$OutputSizeLimit","$OutputStreamMethods","$Packages","$ParentLink","$ParentProcessID","$PasswordFile","$PatchLevelID","$Path","$PathnameSeparator","$PerformanceGoal","$Permissions","$PermissionsGroupBase","$PersistenceBase","$PersistencePath","$PipeSupported","$PlotTheme","$Post","$Pre","$PreferencesDirectory","$PreInitialization","$PrePrint","$PreRead","$PrintForms","$PrintLiteral","$Printout3DPreviewer","$ProcessID","$ProcessorCount","$ProcessorType","$ProductInformation","$ProgramName","$PublisherID","$RandomState","$RecursionLimit","$RegisteredDeviceClasses","$RegisteredUserName","$ReleaseNumber","$RequesterAddress","$RequesterWolframID","$RequesterWolframUUID","$RootDirectory","$ScheduledTask","$ScriptCommandLine","$ScriptInputString","$SecuredAuthenticationKeyTokens","$ServiceCreditsAvailable","$Services","$SessionID","$SetParentLink","$SharedFunctions","$SharedVariables","$SoundDisplay","$SoundDisplayFunction","$SourceLink","$SSHAuthentication","$SubtitleDecoders","$SubtitleEncoders","$SummaryBoxDataSizeLimit","$SuppressInputFormHeads","$SynchronousEvaluation","$SyntaxHandler","$System","$SystemCharacterEncoding","$SystemCredentialStore","$SystemID","$SystemMemory","$SystemShell","$SystemTimeZone","$SystemWordLength","$TemplatePath","$TemporaryDirectory","$TemporaryPrefix","$TestFileName","$TextStyle","$TimedOut","$TimeUnit","$TimeZone","$TimeZoneEntity","$TopDirectory","$TraceOff","$TraceOn","$TracePattern","$TracePostAction","$TracePreAction","$UnitSystem","$Urgent","$UserAddOnsDirectory","$UserAgentLanguages","$UserAgentMachine","$UserAgentName","$UserAgentOperatingSystem","$UserAgentString","$UserAgentVersion","$UserBaseDirectory","$UserBasePacletsDirectory","$UserDocumentsDirectory","$Username","$UserName","$UserURLBase","$Version","$VersionNumber","$VideoDecoders","$VideoEncoders","$VoiceStyles","$WolframDocumentsDirectory","$WolframID","$WolframUUID"] +;return t=>{ +const i=t.regex,o=i.either(i.concat(/([2-9]|[1-2]\d|[3][0-5])\^\^/,/(\w*\.\w+|\w+\.\w*|\w+)/),/(\d*\.\d+|\d+\.\d*|\d+)/),a=i.either(/``[+-]?(\d*\.\d+|\d+\.\d*|\d+)/,/`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?/),n={ +className:"number",relevance:0, +begin:i.concat(o,i.optional(a),i.optional(/\*\^[+-]?\d+/)) +},r=/[a-zA-Z$][a-zA-Z0-9$]*/,l=new Set(e),s={variants:[{ +className:"builtin-symbol",begin:r,"on:begin":(e,t)=>{ +l.has(e[0])||t.ignoreMatch()}},{className:"symbol",relevance:0,begin:r}]},c={ +className:"message-name",relevance:0,begin:i.concat("::",r)};return{ +name:"Mathematica",aliases:["mma","wl"],classNameAliases:{brace:"punctuation", +pattern:"type",slot:"type",symbol:"variable","named-character":"variable", +"builtin-symbol":"built_in","message-name":"string"}, +contains:[t.COMMENT(/\(\*/,/\*\)/,{contains:["self"]}),{className:"pattern", +relevance:0,begin:/([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/},{ +className:"slot",relevance:0,begin:/#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/},c,s,{ +className:"named-character",begin:/\\\[[$a-zA-Z][$a-zA-Z0-9]+\]/ +},t.QUOTE_STRING_MODE,n,{className:"operator",relevance:0, +begin:/[+\-*/,;.:@~=><&|_`'^?!%]+/},{className:"brace",relevance:0, +begin:/[[\](){}]/}]}}})();hljs.registerLanguage("mathematica",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js new file mode 100644 index 0000000..c9161a7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js @@ -0,0 +1,16 @@ +/*! `matlab` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{var a={relevance:0,contains:[{ +begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})() +;hljs.registerLanguage("matlab",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js new file mode 100644 index 0000000..bb4f915 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js @@ -0,0 +1,12 @@ +/*! `maxima` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Maxima",keywords:{ +$pattern:"[A-Za-z_%][0-9A-Za-z_%]*", +keyword:"if then else elseif for thru do while unless step in and or not", +literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma", +built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest", +symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/", +contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0, +variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{ +begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{ +begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}] +}],illegal:/@/})})();hljs.registerLanguage("maxima",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js new file mode 100644 index 0000000..a4f6f85 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js @@ -0,0 +1,8 @@ +/*! `mel` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"MEL", +keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform", +illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{ +begin:/[$%@](\^\w\b|#\w+|[^\s\w{]|\{\w+\}|\w+)/ +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]})})() +;hljs.registerLanguage("mel",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js new file mode 100644 index 0000000..97e3d79 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js @@ -0,0 +1,16 @@ +/*! `mercury` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const i=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0 +}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0}) +;return r.contains=r.contains.slice(),r.contains.push({className:"subst", +begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]", +relevance:0}),{name:"Mercury",aliases:["m","moo"],keywords:{ +keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure", +meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing", +built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure" +},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=", +relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{ +className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}] +},i,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*" +},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}}})() +;hljs.registerLanguage("mercury",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js new file mode 100644 index 0000000..5fd63c3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js @@ -0,0 +1,15 @@ +/*! `mipsasm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"MIPS Assembly", +case_insensitive:!0,aliases:["mips"],keywords:{$pattern:"\\.?"+e.IDENT_RE, +meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ", +built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt " +},contains:[{className:"keyword", +begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)", +end:"\\s" +},e.COMMENT("[;#](?!\\s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{ +className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title", +begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{ +begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol", +variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{ +begin:"[0-9]+[bf]"}],relevance:0}],illegal:/\//})})() +;hljs.registerLanguage("mipsasm",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js new file mode 100644 index 0000000..e012515 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js @@ -0,0 +1,4 @@ +/*! `mizar` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Mizar", +keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity", +contains:[e.COMMENT("::","$")]})})();hljs.registerLanguage("mizar",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js new file mode 100644 index 0000000..a56d8cd --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js @@ -0,0 +1,6 @@ +/*! `mojolicious` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Mojolicious",subLanguage:"xml", +contains:[{className:"meta",begin:"^__(END|DATA)__$"},{ +begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}", +end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]})})() +;hljs.registerLanguage("mojolicious",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js new file mode 100644 index 0000000..5123b77 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js @@ -0,0 +1,17 @@ +/*! `monkey` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"number", +relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{ +name:"Monkey",case_insensitive:!0,keywords:{ +keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import", +built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI", +literal:"true false null and or shl shr mod"},illegal:/\/\*/, +contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{ +className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class", +beginKeywords:"class interface",end:"$",contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta", +begin:"\\s*#",end:"$",keywords:{keyword:"if else elseif endif end then"}},{ +className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=", +contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,n]}}})() +;hljs.registerLanguage("monkey",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js new file mode 100644 index 0000000..f219ca7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js @@ -0,0 +1,23 @@ +/*! `moonscript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using", +literal:"true false nil", +built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table" +},s="[A-Za-z$_][0-9A-Za-z$_]*",a={className:"subst",begin:/#\{/,end:/\}/, +keywords:n},t=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0} +}),{className:"string",variants:[{begin:/'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,a]}]},{className:"built_in",begin:"@__"+e.IDENT_RE +},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];a.contains=t +;const i=e.inherit(e.TITLE_MODE,{begin:s}),r="(\\(.*\\)\\s*)?\\B[-=]>",l={ +className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/, +end:/\)/,keywords:n,contains:["self"].concat(t)}]};return{name:"MoonScript", +aliases:["moon"],keywords:n,illegal:/\/\*/, +contains:t.concat([e.COMMENT("--","$"),{className:"function", +begin:"^\\s*"+s+"\\s*=\\s*"+r,end:"[-=]>",returnBegin:!0,contains:[i,l]},{ +begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:r, +end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class", +beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{ +beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i] +},{className:"name",begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0 +}])}}})();hljs.registerLanguage("moonscript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js new file mode 100644 index 0000000..66c47e4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js @@ -0,0 +1,13 @@ +/*! `n1ql` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"N1QL",case_insensitive:!0, +contains:[{ +beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10", +end:/;/,keywords:{ +keyword:["all","alter","analyze","and","any","array","as","asc","begin","between","binary","boolean","break","bucket","build","by","call","case","cast","cluster","collate","collection","commit","connect","continue","correlate","cover","create","database","dataset","datastore","declare","decrement","delete","derived","desc","describe","distinct","do","drop","each","element","else","end","every","except","exclude","execute","exists","explain","fetch","first","flatten","for","force","from","function","grant","group","gsi","having","if","ignore","ilike","in","include","increment","index","infer","inline","inner","insert","intersect","into","is","join","key","keys","keyspace","known","last","left","let","letting","like","limit","lsm","map","mapping","matched","materialized","merge","minus","namespace","nest","not","number","object","offset","on","option","or","order","outer","over","parse","partition","password","path","pool","prepare","primary","private","privilege","procedure","public","raw","realm","reduce","rename","return","returning","revoke","right","role","rollback","satisfies","schema","select","self","semi","set","show","some","start","statistics","string","system","then","to","transaction","trigger","truncate","under","union","unique","unknown","unnest","unset","update","upsert","use","user","using","validate","value","valued","values","via","view","when","where","while","with","within","work","xor"], +literal:["true","false","null","missing|5"], +built_in:["array_agg","array_append","array_concat","array_contains","array_count","array_distinct","array_ifnull","array_length","array_max","array_min","array_position","array_prepend","array_put","array_range","array_remove","array_repeat","array_replace","array_reverse","array_sort","array_sum","avg","count","max","min","sum","greatest","least","ifmissing","ifmissingornull","ifnull","missingif","nullif","ifinf","ifnan","ifnanorinf","naninf","neginfif","posinfif","clock_millis","clock_str","date_add_millis","date_add_str","date_diff_millis","date_diff_str","date_part_millis","date_part_str","date_trunc_millis","date_trunc_str","duration_to_str","millis","str_to_millis","millis_to_str","millis_to_utc","millis_to_zone_name","now_millis","now_str","str_to_duration","str_to_utc","str_to_zone_name","decode_json","encode_json","encoded_size","poly_length","base64","base64_encode","base64_decode","meta","uuid","abs","acos","asin","atan","atan2","ceil","cos","degrees","e","exp","ln","log","floor","pi","power","radians","random","round","sign","sin","sqrt","tan","trunc","object_length","object_names","object_pairs","object_inner_pairs","object_values","object_inner_values","object_add","object_put","object_remove","object_unwrap","regexp_contains","regexp_like","regexp_position","regexp_replace","contains","initcap","length","lower","ltrim","position","repeat","replace","rtrim","split","substr","title","trim","upper","isarray","isatom","isboolean","isnumber","isobject","isstring","type","toarray","toatom","toboolean","tonumber","toobject","tostring"] +},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE] +},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{ +className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE] +},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]})})() +;hljs.registerLanguage("n1ql",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js new file mode 100644 index 0000000..0cea608 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js @@ -0,0 +1,9 @@ +/*! `nestedtext` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Nested Text",aliases:["nt"], +contains:[t.inherit(t.HASH_COMMENT_MODE,{begin:/^\s*(?=#)/,excludeBegin:!0}),{ +variants:[{match:[/^\s*/,/-/,/[ ]/,/.*$/]},{match:[/^\s*/,/-$/]}],className:{ +2:"bullet",4:"string"}},{match:[/^\s*/,/>/,/[ ]/,/.*$/],className:{ +2:"punctuation",4:"string"}},{match:[/^\s*(?=\S)/,/[^:]+/,/:\s*/,/$/], +className:{2:"attribute",3:"punctuation"}},{ +match:[/^\s*(?=\S)/,/[^:]*[^: ]/,/[ ]*:/,/[ ]/,/.*$/],className:{2:"attribute", +3:"punctuation",5:"string"}}]})})();hljs.registerLanguage("nestedtext",t)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js new file mode 100644 index 0000000..d715c83 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js @@ -0,0 +1,21 @@ +/*! `nginx` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={ +className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{\w+\}/},{ +begin:n.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},s={endsWithParent:!0,keywords:{ +$pattern:/[a-z_]{2,}|\/dev\/poll/, +literal:["on","off","yes","no","true","false","none","blocked","debug","info","notice","warn","error","crit","select","break","last","permanent","redirect","kqueue","rtsig","epoll","poll","/dev/poll"] +},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string", +contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/ +}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[a] +},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:"\\s\\^", +end:"\\s|\\{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|\\{|;",returnEnd:!0},{ +begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number", +begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{ +className:"number",begin:"\\b\\d+[kKmMgGdshdwy]?\\b",relevance:0},a]};return{ +name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{ +beginKeywords:"upstream location",end:/;|\{/,contains:s.contains,keywords:{ +section:"upstream location"}},{className:"section", +begin:n.concat(e.UNDERSCORE_IDENT_RE+n.lookahead(/\s+\{/)),relevance:0},{ +begin:n.lookahead(e.UNDERSCORE_IDENT_RE+"\\s"),end:";|\\{",contains:[{ +className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:s}],relevance:0}], +illegal:"[^\\s\\}\\{]"}}})();hljs.registerLanguage("nginx",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js new file mode 100644 index 0000000..2fd54ba --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js @@ -0,0 +1,15 @@ +/*! `nim` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Nim",keywords:{ +keyword:["addr","and","as","asm","bind","block","break","case","cast","const","continue","converter","discard","distinct","div","do","elif","else","end","enum","except","export","finally","for","from","func","generic","guarded","if","import","in","include","interface","is","isnot","iterator","let","macro","method","mixin","mod","nil","not","notin","object","of","or","out","proc","ptr","raise","ref","return","shared","shl","shr","static","template","try","tuple","type","using","var","when","while","with","without","xor","yield"], +literal:["true","false"], +type:["int","int8","int16","int32","int64","uint","uint8","uint16","uint32","uint64","float","float32","float64","bool","char","string","cstring","pointer","expr","stmt","void","auto","any","range","array","openarray","varargs","seq","set","clong","culong","cchar","cschar","cshort","cint","csize","clonglong","cfloat","cdouble","clongdouble","cuchar","cushort","cuint","culonglong","cstringarray","semistatic"], +built_in:["stdin","stdout","stderr","result"]},contains:[{className:"meta", +begin:/\{\./,end:/\.\}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/, +end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/, +end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/, +relevance:0},{className:"number",relevance:0,variants:[{ +begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{ +begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{ +begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{ +begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]})})() +;hljs.registerLanguage("nim",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js new file mode 100644 index 0000000..2564044 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js @@ -0,0 +1,12 @@ +/*! `nix` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={ +keyword:["rec","with","let","in","inherit","assert","if","else","then"], +literal:["true","false","or","and","null"], +built_in:["import","abort","baseNameOf","dirOf","isNull","builtins","map","removeAttrs","throw","toString","derivation"] +},i={className:"subst",begin:/\$\{/,end:/\}/,keywords:n},s={className:"string", +contains:[i],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}] +},t=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{ +begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{ +className:"attr",begin:/\S+/}]}];return i.contains=t,{name:"Nix", +aliases:["nixos"],keywords:n,contains:t}}})();hljs.registerLanguage("nix",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js new file mode 100644 index 0000000..ca0ed70 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js @@ -0,0 +1,5 @@ +/*! `node-repl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var a=(()=>{"use strict";return a=>({name:"Node REPL",contains:[{ +className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"javascript"}}, +variants:[{begin:/^>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})() +;hljs.registerLanguage("node-repl",a)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js new file mode 100644 index 0000000..e0a7ffc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js @@ -0,0 +1,27 @@ +/*! `nsis` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function t(...t){ +return t.map((t=>e(t))).join("")}function n(...t){const n=(e=>{ +const t=e[e.length-1] +;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(t);return"("+(n.capture?"":"?:")+t.map((t=>e(t))).join("|")+")"}return e=>{ +const i={className:"variable.constant", +begin:t(/\$/,n("ADMINTOOLS","APPDATA","CDBURN_AREA","CMDLINE","COMMONFILES32","COMMONFILES64","COMMONFILES","COOKIES","DESKTOP","DOCUMENTS","EXEDIR","EXEFILE","EXEPATH","FAVORITES","FONTS","HISTORY","HWNDPARENT","INSTDIR","INTERNET_CACHE","LANGUAGE","LOCALAPPDATA","MUSIC","NETHOOD","OUTDIR","PICTURES","PLUGINSDIR","PRINTHOOD","PROFILE","PROGRAMFILES32","PROGRAMFILES64","PROGRAMFILES","QUICKLAUNCH","RECENT","RESOURCES_LOCALIZED","RESOURCES","SENDTO","SMPROGRAMS","SMSTARTUP","STARTMENU","SYSDIR","TEMP","TEMPLATES","VIDEOS","WINDIR")) +},r={className:"variable",begin:/\$+\{[\w.:-]+\}/},l={className:"variable", +begin:/\$+\w+/,illegal:/\(\)\{\}/},o={className:"variable", +begin:/\$+\([\w^.:-]+\)/},s={className:"params", +begin:n("ARCHIVE","FILE_ATTRIBUTE_ARCHIVE","FILE_ATTRIBUTE_NORMAL","FILE_ATTRIBUTE_OFFLINE","FILE_ATTRIBUTE_READONLY","FILE_ATTRIBUTE_SYSTEM","FILE_ATTRIBUTE_TEMPORARY","HKCR","HKCU","HKDD","HKEY_CLASSES_ROOT","HKEY_CURRENT_CONFIG","HKEY_CURRENT_USER","HKEY_DYN_DATA","HKEY_LOCAL_MACHINE","HKEY_PERFORMANCE_DATA","HKEY_USERS","HKLM","HKPD","HKU","IDABORT","IDCANCEL","IDIGNORE","IDNO","IDOK","IDRETRY","IDYES","MB_ABORTRETRYIGNORE","MB_DEFBUTTON1","MB_DEFBUTTON2","MB_DEFBUTTON3","MB_DEFBUTTON4","MB_ICONEXCLAMATION","MB_ICONINFORMATION","MB_ICONQUESTION","MB_ICONSTOP","MB_OK","MB_OKCANCEL","MB_RETRYCANCEL","MB_RIGHT","MB_RTLREADING","MB_SETFOREGROUND","MB_TOPMOST","MB_USERICON","MB_YESNO","NORMAL","OFFLINE","READONLY","SHCTX","SHELL_CONTEXT","SYSTEM|TEMPORARY") +},a={className:"keyword", +begin:t(/!/,n("addincludedir","addplugindir","appendfile","cd","define","delfile","echo","else","endif","error","execute","finalize","getdllversion","gettlbversion","if","ifdef","ifmacrodef","ifmacrondef","ifndef","include","insertmacro","macro","macroend","makensis","packhdr","searchparse","searchreplace","system","tempfile","undef","uninstfinalize","verbose","warning")) +},S={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{ +begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta", +begin:/\$(\\[nrt]|\$)/},i,r,l,o]},E={ +match:[/Function/,/\s+/,t(/(\.)?/,e.IDENT_RE)],scope:{1:"keyword", +3:"title.function"}};return{name:"NSIS",case_insensitive:!0,keywords:{ +keyword:["Abort","AddBrandingImage","AddSize","AllowRootDirInstall","AllowSkipFiles","AutoCloseWindow","BGFont","BGGradient","BrandingText","BringToFront","Call","CallInstDLL","Caption","ChangeUI","CheckBitmap","ClearErrors","CompletedText","ComponentText","CopyFiles","CRCCheck","CreateDirectory","CreateFont","CreateShortCut","Delete","DeleteINISec","DeleteINIStr","DeleteRegKey","DeleteRegValue","DetailPrint","DetailsButtonText","DirText","DirVar","DirVerify","EnableWindow","EnumRegKey","EnumRegValue","Exch","Exec","ExecShell","ExecShellWait","ExecWait","ExpandEnvStrings","File","FileBufSize","FileClose","FileErrorText","FileOpen","FileRead","FileReadByte","FileReadUTF16LE","FileReadWord","FileWriteUTF16LE","FileSeek","FileWrite","FileWriteByte","FileWriteWord","FindClose","FindFirst","FindNext","FindWindow","FlushINI","GetCurInstType","GetCurrentAddress","GetDlgItem","GetDLLVersion","GetDLLVersionLocal","GetErrorLevel","GetFileTime","GetFileTimeLocal","GetFullPathName","GetFunctionAddress","GetInstDirError","GetKnownFolderPath","GetLabelAddress","GetTempFileName","GetWinVer","Goto","HideWindow","Icon","IfAbort","IfErrors","IfFileExists","IfRebootFlag","IfRtlLanguage","IfShellVarContextAll","IfSilent","InitPluginsDir","InstallButtonText","InstallColors","InstallDir","InstallDirRegKey","InstProgressFlags","InstType","InstTypeGetText","InstTypeSetText","Int64Cmp","Int64CmpU","Int64Fmt","IntCmp","IntCmpU","IntFmt","IntOp","IntPtrCmp","IntPtrCmpU","IntPtrOp","IsWindow","LangString","LicenseBkColor","LicenseData","LicenseForceSelection","LicenseLangString","LicenseText","LoadAndSetImage","LoadLanguageFile","LockWindow","LogSet","LogText","ManifestDPIAware","ManifestLongPathAware","ManifestMaxVersionTested","ManifestSupportedOS","MessageBox","MiscButtonText","Name","Nop","OutFile","Page","PageCallbacks","PEAddResource","PEDllCharacteristics","PERemoveResource","PESubsysVer","Pop","Push","Quit","ReadEnvStr","ReadINIStr","ReadRegDWORD","ReadRegStr","Reboot","RegDLL","Rename","RequestExecutionLevel","ReserveFile","Return","RMDir","SearchPath","SectionGetFlags","SectionGetInstTypes","SectionGetSize","SectionGetText","SectionIn","SectionSetFlags","SectionSetInstTypes","SectionSetSize","SectionSetText","SendMessage","SetAutoClose","SetBrandingImage","SetCompress","SetCompressor","SetCompressorDictSize","SetCtlColors","SetCurInstType","SetDatablockOptimize","SetDateSave","SetDetailsPrint","SetDetailsView","SetErrorLevel","SetErrors","SetFileAttributes","SetFont","SetOutPath","SetOverwrite","SetRebootFlag","SetRegView","SetShellVarContext","SetSilent","ShowInstDetails","ShowUninstDetails","ShowWindow","SilentInstall","SilentUnInstall","Sleep","SpaceTexts","StrCmp","StrCmpS","StrCpy","StrLen","SubCaption","Unicode","UninstallButtonText","UninstallCaption","UninstallIcon","UninstallSubCaption","UninstallText","UninstPage","UnRegDLL","Var","VIAddVersionKey","VIFileVersion","VIProductVersion","WindowIcon","WriteINIStr","WriteRegBin","WriteRegDWORD","WriteRegExpandStr","WriteRegMultiStr","WriteRegNone","WriteRegStr","WriteUninstaller","XPStyle"], +literal:["admin","all","auto","both","bottom","bzip2","colored","components","current","custom","directory","false","force","hide","highest","ifdiff","ifnewer","instfiles","lastused","leave","left","license","listonly","lzma","nevershow","none","normal","notset","off","on","open","print","right","show","silent","silentlog","smooth","textonly","top","true","try","un.components","un.custom","un.directory","un.instfiles","un.license","uninstConfirm","user","Win10","Win7","Win8","WinVista","zlib"] +},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{ +relevance:0}),E,{ +beginKeywords:"Function PageEx Section SectionGroup FunctionEnd SectionEnd" +},S,a,r,l,o,s,{className:"title.function",begin:/\w+::\w+/},e.NUMBER_MODE]}}})() +;hljs.registerLanguage("nsis",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js new file mode 100644 index 0000000..11ba854 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js @@ -0,0 +1,21 @@ +/*! `objectivec` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={ +$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]} +;return{name:"Objective-C", +aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{$pattern:n, +keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], +literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], +built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"] +},illegal:"</",contains:[{className:"built_in", +begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{ +className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/, +keywords:{ +keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{ +className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", +begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_, +contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, +relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js new file mode 100644 index 0000000..dcd8d16 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js @@ -0,0 +1,14 @@ +/*! `ocaml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"], +keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", +literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal", +begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{ +contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{ +className:"type",begin:"`[A-Z][\\w']*"},{className:"type", +begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0 +},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0 +}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js new file mode 100644 index 0000000..b933cd7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js @@ -0,0 +1,15 @@ +/*! `openscad` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"keyword", +begin:"\\$(f[asn]|t|vp[rtd]|children)"},r={className:"number", +begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0 +},s=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function", +beginKeywords:"module function",end:/=|\{/,contains:[{className:"params", +begin:"\\(",end:"\\)",contains:["self",r,s,n,{className:"literal", +begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{name:"OpenSCAD", +aliases:["scad"],keywords:{ +keyword:"function module include use for intersection_for if else \\%", +literal:"false true PI undef", +built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign" +},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{className:"meta", +keywords:{keyword:"include use"},begin:"include|use <",end:">"},s,n,{ +begin:"[*!#%]",relevance:0},a]}}})();hljs.registerLanguage("openscad",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js new file mode 100644 index 0000000..72beb84 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js @@ -0,0 +1,15 @@ +/*! `oxygene` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const r={$pattern:/\.?\w+/, +keyword:"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained" +},a=e.COMMENT(/\{/,/\}/,{relevance:0}),n=e.COMMENT("\\(\\*","\\*\\)",{ +relevance:10}),t={className:"string",begin:"'",end:"'",contains:[{begin:"''"}] +},s={className:"string",begin:"(#\\d+)+"},i={className:"function", +beginKeywords:"function constructor destructor procedure method",end:"[:;]", +keywords:"function constructor|10 destructor|10 procedure|10 method|10", +contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:r, +contains:[t,s]},a,n]};return{name:"Oxygene",case_insensitive:!0,keywords:r, +illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)', +contains:[a,n,e.C_LINE_COMMENT_MODE,t,s,e.NUMBER_MODE,i,{className:"class", +begin:"=\\bclass\\b",end:"end;",keywords:r, +contains:[t,s,a,n,e.C_LINE_COMMENT_MODE,i]}]}}})() +;hljs.registerLanguage("oxygene",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js new file mode 100644 index 0000000..6c07549 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js @@ -0,0 +1,10 @@ +/*! `parser3` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.COMMENT(/\{/,/\}/,{ +contains:["self"]});return{name:"Parser3",subLanguage:"xml",relevance:0, +contains:[e.COMMENT("^#","$"),e.COMMENT(/\^rem\{/,/\}/,{relevance:10, +contains:[a]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$", +relevance:10},{className:"title", +begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{ +className:"variable",begin:/\$\{?[\w\-.:]+\}?/},{className:"keyword", +begin:/\^[\w\-.:]+/},{className:"number",begin:"\\^#[0-9a-fA-F]+" +},e.C_NUMBER_MODE]}}})();hljs.registerLanguage("parser3",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js new file mode 100644 index 0000000..e03b3ef --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js @@ -0,0 +1,36 @@ +/*! `perl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,t=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},i={begin:/->\{/, +end:/\}/},a={variants:[{begin:/\$\d/},{ +begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,s,a],o=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,r,s="\\1")=>{ +const i="\\1"===s?s:n.concat(s,r) +;return n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,t) +},l=(e,r,s)=>n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,s,t),d=[a,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),i,{className:"string",contains:c,variants:[{ +begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", +end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ +begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", +relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", +begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", +relevance:0},{ +begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", +keywords:"split return print reverse grep",relevance:0, +contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ +begin:g("s|tr|y",n.either(...o,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{ +begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:l("(?:m|qr)?",/\//,/\//)},{begin:l("m|qr",n.either(...o,{capture:!0 +}),/\1/)},{begin:l("m|qr",/\(/,/\)/)},{begin:l("m|qr",/\[/,/\]/)},{ +begin:l("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", +end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ +begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", +subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] +}];return s.contains=d,i.contains=d,{name:"Perl",aliases:["pl","pm"],keywords:r, +contains:d}}})();hljs.registerLanguage("perl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js new file mode 100644 index 0000000..a894fbb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js @@ -0,0 +1,9 @@ +/*! `pf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Packet Filter config", +aliases:["pf.conf"],keywords:{$pattern:/[a-z0-9_<>-]+/, +built_in:"block match pass load anchor|5 antispoof|10 set table", +keyword:"in out log quick on rdomain inet inet6 proto from port os to route allow-opts divert-packet divert-reply divert-to flags group icmp-type icmp6-type label once probability recieved-on rtable prio queue tos tag tagged user keep fragment for os drop af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin source-hash static-port dup-to reply-to route-to parent bandwidth default min max qlimit block-policy debug fingerprints hostid limit loginterface optimization reassemble ruleset-optimization basic none profile skip state-defaults state-policy timeout const counters persist no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy source-track global rule max-src-nodes max-src-states max-src-conn max-src-conn-rate overload flush scrub|5 max-mss min-ttl no-df|10 random-id", +literal:"all any no-route self urpf-failed egress|5 unknown"}, +contains:[t.HASH_COMMENT_MODE,t.NUMBER_MODE,t.QUOTE_STRING_MODE,{ +className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable", +begin:/<(?!\/)/,end:/>/}]})})();hljs.registerLanguage("pf",t)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js new file mode 100644 index 0000000..53544c8 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js @@ -0,0 +1,69 @@ +/*! `pgsql` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var E=(()=>{"use strict";return E=>{ +const T=E.COMMENT("--","$"),N="\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",A="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",R=A.trim().split(" ").map((E=>E.split("|")[0])).join("|"),I="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST".split(" ").map((E=>E.split("|")[0])).join("|") +;return{name:"PostgreSQL",aliases:["postgres","postgresql"],supersetOf:"sql", +case_insensitive:!0,keywords:{ +keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ", +built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED " +},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/, +contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{ +begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{ +begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{ +begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{ +begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{ +begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{ +begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{ +begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{ +begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{ +begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/ +},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{ +begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{ +begin:/\bGROUPING\s+SETS\b/},{ +begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{ +begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{ +begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{ +begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{ +begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{ +begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/ +},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/ +},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{ +begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{ +begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{ +begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{ +begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{ +begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{ +begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{ +begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{ +begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{ +begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{ +begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/ +},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{ +begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/, +keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/ +},{ +begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/ +},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{ +begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{ +type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR" +}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{ +begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{ +keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE", +end:E.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE" +},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type", +begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/ +},{ +begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/, +keywords:{keyword:"RETURNS", +type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER" +}},{begin:"\\b("+I+")\\s*\\("},{begin:"\\.("+R+")\\b"},{ +begin:"\\b("+R+")\\s+PATH\\b",keywords:{keyword:"PATH", +type:A.replace("PATH ","")}},{className:"type",begin:"\\b("+R+")\\b"},{ +className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{ +className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}], +relevance:10},E.END_SAME_AS_BEGIN({begin:N,end:N,contains:[{ +subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"], +endsWithParent:!0}]}),{begin:'"',end:'"',contains:[{begin:'""'}] +},E.C_NUMBER_MODE,E.C_BLOCK_COMMENT_MODE,T,{className:"meta",variants:[{ +begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{ +className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}} +})();hljs.registerLanguage("pgsql",E)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js new file mode 100644 index 0000000..8389aa1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js @@ -0,0 +1,8 @@ +/*! `php-template` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var n=(()=>{"use strict";return n=>({name:"PHP template", +subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php", +contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{ +begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null, +className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{ +illegal:null,className:null,contains:null,skip:!0})]}]})})() +;hljs.registerLanguage("php-template",n)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js new file mode 100644 index 0000000..42e3122 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js @@ -0,0 +1,37 @@ +/*! `php` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const r={className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},s={className:"number",variants:[{ +begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{ +begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{ +begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?" +}],relevance:0},c={ +keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield", +literal:"false null true", +built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass" +};return{case_insensitive:!0,keywords:c, +contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t] +}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}] +}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0, +keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{ +begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0,keywords:c, +contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,s]}]},{className:"class",variants:[{ +beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait", +illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, +contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";", +contains:[e.UNDERSCORE_TITLE_MODE]},l,s]}}})();hljs.registerLanguage("php",e) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js new file mode 100644 index 0000000..ea39f37 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js @@ -0,0 +1,4 @@ +/*! `plaintext` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", +aliases:["text","txt"],disableAutodetect:!0})})() +;hljs.registerLanguage("plaintext",t)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js new file mode 100644 index 0000000..02d74f5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js @@ -0,0 +1,12 @@ +/*! `pony` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Pony",keywords:{ +keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor", +meta:"iso val tag trn box ref",literal:"this false true"},contains:[{ +className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string", +begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"', +contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{ +className:"number", +begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", +relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]})})() +;hljs.registerLanguage("pony",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js new file mode 100644 index 0000000..9e588a3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js @@ -0,0 +1,39 @@ +/*! `powershell` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={$pattern:/-?[A-z\.\-]+\b/, +keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter", +built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write" +},s={begin:"`[\\s\\S]",relevance:0},i={className:"variable",variants:[{ +begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}] +},a={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}], +contains:[s,i,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},t={ +className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}] +},r=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/, +end:/#>/}],contains:[{className:"doctag",variants:[{ +begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ +},{ +begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ +}]}]}),c={className:"class",beginKeywords:"class enum",end:/\s*[{]/, +excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:"function", +begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0, +contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title", +begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/, +className:"params",relevance:0,contains:[i]}]},o={begin:/using\s/,end:/$/, +returnBegin:!0,contains:[a,t,{className:"keyword", +begin:/(using|assembly|command|module|namespace|type)/}]},p={ +className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0, +relevance:0,contains:[{className:"keyword", +begin:"(".concat(n.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0, +relevance:0},e.inherit(e.TITLE_MODE,{endsParent:!0})] +},g=[p,r,s,e.NUMBER_MODE,a,t,{className:"built_in",variants:[{ +begin:"(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\w\\d]+" +}]},i,{className:"literal",begin:/\$(null|true|false)\b/},{ +className:"selector-tag",begin:/@\B/,relevance:0}],m={begin:/\[/,end:/\]/, +excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",g,{ +begin:"(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)", +className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/, +relevance:0})};return p.contains.unshift(m),{name:"PowerShell", +aliases:["pwsh","ps","ps1"],case_insensitive:!0,keywords:n, +contains:g.concat(c,l,o,{variants:[{className:"operator", +begin:"(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\b" +},{className:"literal",begin:/(-){1,2}[\w\d-]+/,relevance:0}]},m)}}})() +;hljs.registerLanguage("powershell",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js new file mode 100644 index 0000000..ccc5ad6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js @@ -0,0 +1,18 @@ +/*! `processing` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=e.regex,a=["displayHeight","displayWidth","mouseY","mouseX","mousePressed","pmouseX","pmouseY","key","keyCode","pixels","focused","frameCount","frameRate","height","width","size","createGraphics","beginDraw","createShape","loadShape","PShape","arc","ellipse","line","point","quad","rect","triangle","bezier","bezierDetail","bezierPoint","bezierTangent","curve","curveDetail","curvePoint","curveTangent","curveTightness","shape","shapeMode","beginContour","beginShape","bezierVertex","curveVertex","endContour","endShape","quadraticVertex","vertex","ellipseMode","noSmooth","rectMode","smooth","strokeCap","strokeJoin","strokeWeight","mouseClicked","mouseDragged","mouseMoved","mousePressed","mouseReleased","mouseWheel","keyPressed","keyPressedkeyReleased","keyTyped","print","println","save","saveFrame","day","hour","millis","minute","month","second","year","background","clear","colorMode","fill","noFill","noStroke","stroke","alpha","blue","brightness","color","green","hue","lerpColor","red","saturation","modelX","modelY","modelZ","screenX","screenY","screenZ","ambient","emissive","shininess","specular","add","createImage","beginCamera","camera","endCamera","frustum","ortho","perspective","printCamera","printProjection","cursor","frameRate","noCursor","exit","loop","noLoop","popStyle","pushStyle","redraw","binary","boolean","byte","char","float","hex","int","str","unbinary","unhex","join","match","matchAll","nf","nfc","nfp","nfs","split","splitTokens","trim","append","arrayCopy","concat","expand","reverse","shorten","sort","splice","subset","box","sphere","sphereDetail","createInput","createReader","loadBytes","loadJSONArray","loadJSONObject","loadStrings","loadTable","loadXML","open","parseXML","saveTable","selectFolder","selectInput","beginRaw","beginRecord","createOutput","createWriter","endRaw","endRecord","PrintWritersaveBytes","saveJSONArray","saveJSONObject","saveStream","saveStrings","saveXML","selectOutput","popMatrix","printMatrix","pushMatrix","resetMatrix","rotate","rotateX","rotateY","rotateZ","scale","shearX","shearY","translate","ambientLight","directionalLight","lightFalloff","lights","lightSpecular","noLights","normal","pointLight","spotLight","image","imageMode","loadImage","noTint","requestImage","tint","texture","textureMode","textureWrap","blend","copy","filter","get","loadPixels","set","updatePixels","blendMode","loadShader","PShaderresetShader","shader","createFont","loadFont","text","textFont","textAlign","textLeading","textMode","textSize","textWidth","textAscent","textDescent","abs","ceil","constrain","dist","exp","floor","lerp","log","mag","map","max","min","norm","pow","round","sq","sqrt","acos","asin","atan","atan2","cos","degrees","radians","sin","tan","noise","noiseDetail","noiseSeed","random","randomGaussian","randomSeed"],r=e.IDENT_RE,s={ +variants:[{match:t.concat(t.either(...a),t.lookahead(/\s*\(/)), +className:"built_in"},{relevance:0, +match:t.concat(/\b(?!for|if|while)/,r,t.lookahead(/\s*\(/)), +className:"title.function"}]},o={match:[/new\s+/,r],className:{1:"keyword", +2:"class.title"}},i={relevance:0,match:[/\./,r],className:{2:"property"}},n={ +variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,r]},{ +match:[/class/,/\s+/,r]}],className:{1:"keyword",3:"title.class",5:"keyword", +7:"title.class.inherited"}};return{name:"Processing",aliases:["pde"],keywords:{ +keyword:["abstract","assert","break","case","catch","const","continue","default","else","enum","final","finally","for","if","import","instanceof","long","native","new","package","private","private","protected","protected","public","public","return","static","strictfp","switch","synchronized","throw","throws","transient","try","void","volatile","while"], +literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false", +title:"setup draw",variable:"super this", +built_in:[...a,"BufferedReader","PVector","PFont","PImage","PGraphics","HashMap","String","Array","FloatDict","ArrayList","FloatList","IntDict","IntList","JSONArray","JSONObject","Object","StringDict","StringList","Table","TableRow","XML"], +type:["boolean","byte","char","color","double","float","int","long","short"]}, +contains:[n,o,s,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE] +}}})();hljs.registerLanguage("processing",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js new file mode 100644 index 0000000..8063b88 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js @@ -0,0 +1,9 @@ +/*! `profile` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Python profiler", +contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}", +end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$", +keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{ +begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10 +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(", +end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]})})() +;hljs.registerLanguage("profile",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js new file mode 100644 index 0000000..4f6c26f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js @@ -0,0 +1,11 @@ +/*! `prolog` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var n=(()=>{"use strict";return n=>{const e={begin:/\(/,end:/\)/, +relevance:0},a={begin:/\[/,end:/\]/},s={className:"comment",begin:/%/,end:/$/, +contains:[n.PHRASAL_WORDS_MODE]},i={className:"string",begin:/`/,end:/`/, +contains:[n.BACKSLASH_ESCAPE]},g=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{ +className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{ +begin:/_[A-Za-z0-9_]*/}],relevance:0},e,{begin:/:-/ +},a,s,n.C_BLOCK_COMMENT_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,i,{ +className:"string",begin:/0'(\\'|.)/},{className:"string",begin:/0'\\s/ +},n.C_NUMBER_MODE];return e.contains=g,a.contains=g,{name:"Prolog", +contains:g.concat([{begin:/\.$/}])}}})();hljs.registerLanguage("prolog",n)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js new file mode 100644 index 0000000..012a786 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js @@ -0,0 +1,11 @@ +/*! `properties` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t="[ \\t\\f]*",n="([^\\\\:= \\t\\f\\n]|\\\\.)+";return{name:".properties", +disableAutodetect:!0,case_insensitive:!0,illegal:/\S/, +contains:[e.COMMENT("^\\s*[!#]","$"),{returnBegin:!0,variants:[{ +begin:n+"[ \\t\\f]*[:=][ \\t\\f]*"},{begin:n+"[ \\t\\f]+"}],contains:[{ +className:"attr",begin:n,endsParent:!0}],starts:{ +end:"([ \\t\\f]*[:=][ \\t\\f]*|[ \\t\\f]+)",relevance:0,starts:{ +className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\\\"},{ +begin:"\\\\\\n"}]}}},{className:"attr",begin:n+t+"$"}]}}})() +;hljs.registerLanguage("properties",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js new file mode 100644 index 0000000..e36257f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js @@ -0,0 +1,11 @@ +/*! `protobuf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Protocol Buffers",keywords:{ +keyword:"package import option optional required repeated group oneof", +built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes", +literal:"true false"}, +contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/, +contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{ +className:"function",beginKeywords:"rpc",end:/[{;]/,excludeEnd:!0, +keywords:"rpc returns"},{begin:/^\s*[A-Z_]+(?=\s*=[^\n]+;$)/}]})})() +;hljs.registerLanguage("protobuf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js new file mode 100644 index 0000000..724d639 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js @@ -0,0 +1,17 @@ +/*! `puppet` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const s=e.COMMENT("#","$"),r="([A-Za-z_]|::)(\\w|::)*",a=e.inherit(e.TITLE_MODE,{ +begin:r}),n={className:"variable",begin:"\\$"+r},i={className:"string", +contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +}]};return{name:"Puppet",aliases:["pp"],contains:[s,n,i,{beginKeywords:"class", +end:"\\{|;",illegal:/=/,contains:[a,s]},{beginKeywords:"define",end:/\{/, +contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{ +begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{ +className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{ +keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ", +literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted", +built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version" +},relevance:0,contains:[i,s,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>", +contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number", +begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", +relevance:0},n]}],relevance:0}]}}})();hljs.registerLanguage("puppet",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js new file mode 100644 index 0000000..d698380 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js @@ -0,0 +1,11 @@ +/*! `purebasic` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"PureBASIC", +aliases:["pb","pbi"], +keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule UseModule Wend While With XIncludeFile XOr", +contains:[e.COMMENT(";","$",{relevance:0}),{className:"function", +begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0, +returnBegin:!0,contains:[{className:"keyword", +begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type", +begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"', +end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]})})() +;hljs.registerLanguage("purebasic",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js new file mode 100644 index 0000000..7baf61b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js @@ -0,0 +1,5 @@ +/*! `python-repl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var a=(()=>{"use strict";return a=>({aliases:["pycon"],contains:[{ +className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}}, +variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})() +;hljs.registerLanguage("python-repl",a)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js new file mode 100644 index 0000000..b390b1b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js @@ -0,0 +1,42 @@ +/*! `python` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i={ +$pattern:/[A-Za-z]\w+|__\w+__/, +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], +type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] +},s={className:"meta",begin:/^(>>>|\.\.\.) /},t={className:"subst",begin:/\{/, +end:/\}/,keywords:i,illegal:/#/},r={begin:/\{\{/,relevance:0},l={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,s,r,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,s,r,t]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,r,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,r,t]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},b="[0-9](_?[0-9])*",o=`(\\b(${b}))?\\.(${b})|\\b(${b})\\.`,c={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${b})|(${o}))[eE][+-]?(${b})[jJ]?\\b`},{begin:`(${o})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${b})[jJ]\\b`}]},d={ +className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:i,contains:[{ +begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},g={ +className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i, +contains:["self",s,c,l,e.HASH_COMMENT_MODE]}]};return t.contains=[l,c,s],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i, +illegal:/(<\/|->|\?)|=>/,contains:[s,c,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},l,d,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword", +3:"title.function"},contains:[g]},{variants:[{ +match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}], +scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[c,g,l]}]}}})() +;hljs.registerLanguage("python",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js new file mode 100644 index 0000000..c32c922 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js @@ -0,0 +1,8 @@ +/*! `q` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Q",aliases:["k","kdb"], +keywords:{$pattern:/(`?)[A-Za-z0-9_]+\b/, +keyword:"do while select delete by update from",literal:"0b 1b", +built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum", +type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid" +},contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]})})() +;hljs.registerLanguage("q",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js new file mode 100644 index 0000000..4c4fd8c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js @@ -0,0 +1,29 @@ +/*! `qml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="[a-zA-Z_][a-zA-Z0-9\\._]*",r={className:"attribute",begin:"\\bid\\s*:", +starts:{className:"string",end:n,returnEnd:!1}},a={begin:n+"\\s*:", +returnBegin:!0,contains:[{className:"attribute",begin:n,end:"\\s*:", +excludeEnd:!0,relevance:0}],relevance:0},t={begin:e.regex.concat(n,/\s*\{/), +end:/\{/,returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:n})] +};return{name:"QML",aliases:["qt"],case_insensitive:!1,keywords:{ +keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import", +literal:"true false null undefined NaN Infinity", +built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4d Promise" +},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/ +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`", +contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{ +begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}], +relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</, +end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{ +className:"keyword",begin:"\\bsignal\\b",starts:{className:"string", +end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword", +begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)", +returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/, +excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/ +}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{ +begin:"\\."+e.IDENT_RE,relevance:0},r,a,t],illegal:/#/}}})() +;hljs.registerLanguage("qml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js new file mode 100644 index 0000000..07ad17c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js @@ -0,0 +1,26 @@ +/*! `r` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,i=a.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,t=a.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) +;return{name:"R",keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/, +starts:{end:a.lookahead(a.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)), +endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{ +scope:"variable",variants:[{match:n},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0 +}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}] +}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{ +1:"operator",2:"number"},match:[s,i]},{scope:{1:"operator",2:"number"}, +match:[/%[^%]*%/,i]},{scope:{1:"punctuation",2:"number"},match:[t,i]},{scope:{ +2:"number"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:"operator"}, +match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{ +match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:t},{begin:"`",end:"`", +contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js new file mode 100644 index 0000000..4c14c15 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js @@ -0,0 +1,43 @@ +/*! `reasonml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={ +keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", +literal:"true false" +},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={ +className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={ +className:"operator",relevance:0,begin:s},o=[{className:"identifier", +relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module", +begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{ +className:"identifier",begin:a,relevance:0}]}],b=[{className:"module", +begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{ +className:"identifier",begin:a,relevance:0}]}],m={className:"function", +relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>", +end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params", +variants:[{begin:n},{ +begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}" +},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>", +returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{ +begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":", +end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{ +begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor", +begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r, +contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={ +className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>", +relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={ +className:"module-access",keywords:r,returnBegin:!0,variants:[{ +begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0, +contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{ +begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{ +name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)", +contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{ +className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0 +},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{ +className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{ +className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{ +className:"operator",begin:i,illegal:"--\x3e",relevance:0 +},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def", +begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0, +keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{ +begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})() +;hljs.registerLanguage("reasonml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js new file mode 100644 index 0000000..edb2481 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js @@ -0,0 +1,6 @@ +/*! `rib` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"RenderMan RIB", +keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd", +illegal:"</", +contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +})})();hljs.registerLanguage("rib",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js new file mode 100644 index 0000000..7137767 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js @@ -0,0 +1,12 @@ +/*! `roboconf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n="[a-zA-Z-_][^\\n{]+\\{",a={ +className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{ +end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{ +className:"keyword",begin:/\(optional\)/}]}};return{name:"Roboconf", +aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{ +begin:"^facet "+n,end:/\}/,keywords:"facet",contains:[a,e.HASH_COMMENT_MODE]},{ +begin:"^\\s*instance of "+n,end:/\}/, +keywords:"name count channels instance-data instance-state instance of", +illegal:/\S/,contains:["self",a,e.HASH_COMMENT_MODE]},{begin:"^"+n,end:/\}/, +contains:[a,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}})() +;hljs.registerLanguage("roboconf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js new file mode 100644 index 0000000..656970a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js @@ -0,0 +1,22 @@ +/*! `routeros` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const r="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",i={ +className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)\}/ +}]},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,{ +className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},t={ +className:"string",begin:/'/,end:/'/};return{name:"Microtik RouterOS script", +aliases:["mikrotik"],case_insensitive:!0,keywords:{$pattern:/:?[\w-]+/, +literal:n, +keyword:r+" :"+r.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :") +},contains:[{variants:[{begin:/\/\*/,end:/\*\//},{begin:/\/\//,end:/$/},{ +begin:/<\//,end:/>/}],illegal:/./},e.COMMENT("^#","$"),s,t,i,{ +begin:/[\w-]+=([^\s{}[\]()>]+)/,relevance:0,returnBegin:!0,contains:[{ +className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0, +contains:[s,t,i,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b" +},{begin:/("[^"]*"|[^\s{}[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/ +},{ +begin:"\\b(add|remove|enable|disable|set|get|print|export|edit|find|run|debug|error|info|warning)([\\s[(\\]|])", +returnBegin:!0,contains:[{className:"built_in",begin:/\w+/}]},{ +className:"built_in",variants:[{ +begin:"(\\.\\./|/|\\s)((traffic-flow|traffic-generator|firewall|scheduler|aaa|accounting|address-list|address|align|area|bandwidth-server|bfd|bgp|bridge|client|clock|community|config|connection|console|customer|default|dhcp-client|dhcp-server|discovery|dns|e-mail|ethernet|filter|firmware|gps|graphing|group|hardware|health|hotspot|identity|igmp-proxy|incoming|instance|interface|ip|ipsec|ipv6|irq|l2tp-server|lcd|ldp|logging|mac-server|mac-winbox|mangle|manual|mirror|mme|mpls|nat|nd|neighbor|network|note|ntp|ospf|ospf-v3|ovpn-server|page|peer|pim|ping|policy|pool|port|ppp|pppoe-client|pptp-server|prefix|profile|proposal|proxy|queue|radius|resource|rip|ripng|route|routing|screen|script|security-profiles|server|service|service-port|settings|shares|smb|sms|sniffer|snmp|snooper|socks|sstp-server|system|tool|tracking|type|upgrade|upnp|user-manager|users|user|vlan|secret|vrrp|watchdog|web-access|wireless|pptp|pppoe|lan|wan|layer7-protocol|lease|simple|raw);?\\s)+" +},{begin:/\.\./,relevance:0}]}]}}})();hljs.registerLanguage("routeros",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js new file mode 100644 index 0000000..3a132d4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js @@ -0,0 +1,10 @@ +/*! `rsl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"RenderMan RSL",keywords:{ +keyword:"float color point normal vector matrix while for if do return else break extern continue", +built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp" +},illegal:"</", +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"#",end:"$"},{className:"class", +beginKeywords:"surface displacement light volume imager",end:"\\("},{ +beginKeywords:"illuminate illuminance gather",end:"\\("}]})})() +;hljs.registerLanguage("rsl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js new file mode 100644 index 0000000..06df8b4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js @@ -0,0 +1,48 @@ +/*! `ruby` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s] +}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), +contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[e.BACKSLASH_ESCAPE,c]})]}]},d="[0-9](_?[0-9])*",g={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(r)},{ +className:"function",begin:n.concat(/def\s+/,n.lookahead(a+"\\s*(\\(|;|$)")), +relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:a +}),l].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol", +begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},g,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{ +begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(", +end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}] +}].concat(b,r),relevance:0}].concat(b,r);c.contains=o,l.contains=o;const _=[{ +begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return r.unshift(b),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[e.SHEBANG({binary:"ruby"})].concat(_).concat(r).concat(o)}}})() +;hljs.registerLanguage("ruby",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js new file mode 100644 index 0000000..42de3f1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js @@ -0,0 +1,9 @@ +/*! `ruleslanguage` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var T=(()=>{"use strict";return T=>({name:"Oracle Rules Language", +keywords:{ +keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING", +built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME" +}, +contains:[T.C_LINE_COMMENT_MODE,T.C_BLOCK_COMMENT_MODE,T.APOS_STRING_MODE,T.QUOTE_STRING_MODE,T.C_NUMBER_MODE,{ +className:"literal",variants:[{begin:"#\\s+",relevance:0},{begin:"#[a-zA-Z .]+" +}]}]})})();hljs.registerLanguage("ruleslanguage",T)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js new file mode 100644 index 0000000..83093a9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js @@ -0,0 +1,29 @@ +/*! `rust` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,n={ +className:"title.function.invoke",relevance:0, +begin:t.concat(/\b/,/(?!let\b)/,e.IDENT_RE,t.lookahead(/\s*\(/)) +},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bin!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"] +;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?", +type:["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"], +keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], +literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:"</", +contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"] +}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{ +className:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{ +begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol", +begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{ +begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{ +begin:"\\b0x([A-Fa-f0-9_]+)"+a},{ +begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{ +begin:[/fn/,/\s+/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword", +3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{ +className:"string",begin:/"/,end:/"/}]},{ +begin:[/let/,/\s+/,/(?:mut\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword", +3:"keyword",4:"variable"}},{ +begin:[/for/,/\s+/,e.UNDERSCORE_IDENT_RE,/\s+/,/in/],className:{1:"keyword", +3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE], +className:{1:"keyword",3:"title.class"}},{ +begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,e.UNDERSCORE_IDENT_RE], +className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{ +keyword:"Self",built_in:i}},{className:"punctuation",begin:"->"},n]}}})() +;hljs.registerLanguage("rust",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js new file mode 100644 index 0000000..68711e4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js @@ -0,0 +1,18 @@ +/*! `sas` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex;return{name:"SAS", +case_insensitive:!0,keywords:{ +literal:["null","missing","_all_","_automatic_","_character_","_infile_","_n_","_name_","_null_","_numeric_","_user_","_webout_"], +keyword:["do","if","then","else","end","until","while","abort","array","attrib","by","call","cards","cards4","catname","continue","datalines","datalines4","delete","delim","delimiter","display","dm","drop","endsas","error","file","filename","footnote","format","goto","in","infile","informat","input","keep","label","leave","length","libname","link","list","lostcard","merge","missing","modify","options","output","out","page","put","redirect","remove","rename","replace","retain","return","select","set","skip","startsas","stop","title","update","waitsas","where","window","x|0","systask","add","and","alter","as","cascade","check","create","delete","describe","distinct","drop","foreign","from","group","having","index","insert","into","in","key","like","message","modify","msgtype","not","null","on","or","order","primary","references","reset","restrict","select","set","table","unique","update","validate","view","where"] +},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s;]/ +},{className:"variable",begin:/&[a-zA-Z_&][a-zA-Z0-9_]*\.?/},{ +begin:[/^\s*/,/datalines;|cards;/,/(?:.*\n)+/,/^\s*;\s*$/],className:{ +2:"keyword",3:"string"}},{ +begin:[/%mend|%macro/,/\s+/,/[a-zA-Z_&][a-zA-Z0-9_]*/],className:{1:"built_in", +3:"title.function"}},{className:"built_in", +begin:"%"+t.either("bquote","nrbquote","cmpres","qcmpres","compstor","datatyp","display","do","else","end","eval","global","goto","if","index","input","keydef","label","left","length","let","local","lowcase","macro","mend","nrbquote","nrquote","nrstr","put","qcmpres","qleft","qlowcase","qscan","qsubstr","qsysfunc","qtrim","quote","qupcase","scan","str","substr","superq","syscall","sysevalf","sysexec","sysfunc","sysget","syslput","sysprod","sysrc","sysrput","then","to","trim","unquote","until","upcase","verify","while","window") +},{className:"title.function",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{ +className:"meta", +begin:t.either("abs","addr","airy","arcos","arsin","atan","attrc","attrn","band","betainv","blshift","bnot","bor","brshift","bxor","byte","cdf","ceil","cexist","cinv","close","cnonct","collate","compbl","compound","compress","cos","cosh","css","curobs","cv","daccdb","daccdbsl","daccsl","daccsyd","dacctab","dairy","date","datejul","datepart","datetime","day","dclose","depdb","depdbsl","depdbsl","depsl","depsl","depsyd","depsyd","deptab","deptab","dequote","dhms","dif","digamma","dim","dinfo","dnum","dopen","doptname","doptnum","dread","dropnote","dsname","erf","erfc","exist","exp","fappend","fclose","fcol","fdelete","fetch","fetchobs","fexist","fget","fileexist","filename","fileref","finfo","finv","fipname","fipnamel","fipstate","floor","fnonct","fnote","fopen","foptname","foptnum","fpoint","fpos","fput","fread","frewind","frlen","fsep","fuzz","fwrite","gaminv","gamma","getoption","getvarc","getvarn","hbound","hms","hosthelp","hour","ibessel","index","indexc","indexw","input","inputc","inputn","int","intck","intnx","intrr","irr","jbessel","juldate","kurtosis","lag","lbound","left","length","lgamma","libname","libref","log","log10","log2","logpdf","logpmf","logsdf","lowcase","max","mdy","mean","min","minute","mod","month","mopen","mort","n","netpv","nmiss","normal","note","npv","open","ordinal","pathname","pdf","peek","peekc","pmf","point","poisson","poke","probbeta","probbnml","probchi","probf","probgam","probhypr","probit","probnegb","probnorm","probt","put","putc","putn","qtr","quote","ranbin","rancau","ranexp","rangam","range","rank","rannor","ranpoi","rantbl","rantri","ranuni","repeat","resolve","reverse","rewind","right","round","saving","scan","sdf","second","sign","sin","sinh","skewness","soundex","spedis","sqrt","std","stderr","stfips","stname","stnamel","substr","sum","symget","sysget","sysmsg","sysprod","sysrc","system","tan","tanh","time","timepart","tinv","tnonct","today","translate","tranwrd","trigamma","trim","trimn","trunc","uniform","upcase","uss","var","varfmt","varinfmt","varlabel","varlen","varname","varnum","varray","varrayx","vartype","verify","vformat","vformatd","vformatdx","vformatn","vformatnx","vformatw","vformatwx","vformatx","vinarray","vinarrayx","vinformat","vinformatd","vinformatdx","vinformatn","vinformatnx","vinformatw","vinformatwx","vinformatx","vlabel","vlabelx","vlength","vlengthx","vname","vnamex","vtype","vtypex","weekday","year","yyq","zipfips","zipname","zipnamel","zipstate")+"(?=\\()" +},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}})() +;hljs.registerLanguage("sas",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js new file mode 100644 index 0000000..7f74187 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js @@ -0,0 +1,25 @@ +/*! `scala` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"subst", +variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}]},s={ +className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'[a-z]+"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,a]},{className:"string", +begin:'[a-z]+"""',end:'"""',contains:[a],relevance:10}]},i={className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title", +begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/, +relevance:0},l={className:"class",beginKeywords:"class object trait type", +end:/[:={\[\n;]/,excludeEnd:!0, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0, +excludeEnd:!0,relevance:0,contains:[i]},{className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[i]},t]},c={ +className:"function",beginKeywords:"def",end:n.lookahead(/[:={\[(\n;]/), +contains:[t]};return{name:"Scala",keywords:{literal:"true false null", +keyword:"type yield lazy override def with val var sealed abstract private trait object if then forSome for while do throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit export enum given" +}, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,i,c,l,e.C_NUMBER_MODE,{ +begin:[/^\s*/,"extension",/\s+(?=[[(])/],beginScope:{2:"keyword"}},[{ +begin:[/^\s*/,/end/,/\s+/,/(extension\b)?/],beginScope:{2:"keyword",4:"keyword"} +}],{match:/\.inline\b/},{begin:/\binline(?=\s)/,keywords:"inline"},{ +begin:[/\(\s*/,/using/,/\s+(?!\))/],beginScope:{2:"keyword"}},{className:"meta", +begin:"@[A-Za-z]+"}]}}})();hljs.registerLanguage("scala",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js new file mode 100644 index 0000000..c93e7a3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js @@ -0,0 +1,19 @@ +/*! `scheme` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +built_in:"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})() +;hljs.registerLanguage("scheme",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js new file mode 100644 index 0000000..3af3d80 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js @@ -0,0 +1,13 @@ +/*! `scilab` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=[e.C_NUMBER_MODE,{ +className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{ +begin:"''"}]}];return{name:"Scilab",aliases:["sci"],keywords:{$pattern:/%?\w+/, +keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while", +literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s", +built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix" +},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",begin:"\\(",end:"\\)"}]},{ +begin:"[a-zA-Z_][a-zA-Z_0-9]*[\\.']+",relevance:0},{begin:"\\[", +end:"\\][\\.']*",relevance:0,contains:n},e.COMMENT("//","$")].concat(n)}}})() +;hljs.registerLanguage("scilab",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js new file mode 100644 index 0000000..aadca84 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js @@ -0,0 +1,33 @@ +/*! `scss` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;return a=>{const n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}))(a),l=r,s=i,d="@[a-z-]+",c={className:"variable", +begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"};return{name:"SCSS",case_insensitive:!0, +illegal:"[=/|']", +contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{ +className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0 +},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b",relevance:0},{className:"selector-pseudo", +begin:":("+s.join("|")+")"},{className:"selector-pseudo", +begin:":(:)?("+l.join("|")+")"},c,{begin:/\(/,end:/\)/, +contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+o.join("|")+")\\b"},{ +begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" +},{begin:/:/,end:/[;}{]/, +contains:[n.BLOCK_COMMENT,c,n.HEXCOLOR,n.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.IMPORTANT] +},{begin:"@(page|font-face)",keywords:{$pattern:d,keyword:"@page @font-face"}},{ +begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, +keyword:"and or not only",attribute:t.join(" ")},contains:[{begin:d, +className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" +},c,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE] +},n.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js new file mode 100644 index 0000000..a5d17ae --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js @@ -0,0 +1,5 @@ +/*! `shell` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js new file mode 100644 index 0000000..5645e61 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js @@ -0,0 +1,13 @@ +/*! `smali` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"] +;return{name:"Smali",contains:[{className:"string",begin:'"',end:'"',relevance:0 +},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{ +begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{ +begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{ +begin:"\\s(transient|constructor|abstract|final|synthetic|public|private|protected|static|bridge|system)" +}]},{className:"built_in",variants:[{begin:"\\s("+n.join("|")+")\\s"},{ +begin:"\\s("+n.join("|")+")((-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{ +begin:"\\s(aget|aput|array|check|execute|fill|filled|goto/16|goto/32|iget|instance|invoke|iput|monitor|packed|sget|sparse)((-|/)[a-zA-Z0-9]+)*\\s", +relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{ +begin:"[vp][0-9]+"}]}}})();hljs.registerLanguage("smali",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js new file mode 100644 index 0000000..ed495b8 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js @@ -0,0 +1,11 @@ +/*! `smalltalk` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n="[a-z][a-zA-Z0-9_]*",a={ +className:"string",begin:"\\$.{1}"},s={className:"symbol", +begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk",aliases:["st"], +keywords:["self","super","nil","true","false","thisContext"], +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})() +;hljs.registerLanguage("smalltalk",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js new file mode 100644 index 0000000..67a32db --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js @@ -0,0 +1,14 @@ +/*! `sml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"SML (Standard ML)", +aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})();hljs.registerLanguage("sml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js new file mode 100644 index 0000000..81418b7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js @@ -0,0 +1,17 @@ +/*! `sqf` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={className:"string", +variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'", +end:"'",contains:[{begin:"''",relevance:0}]}]},a={className:"meta", +begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/, +relevance:0},e.inherit(t,{className:"string"}),{className:"string", +begin:/<[^\n>]*>/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{name:"SQF", +case_insensitive:!0,keywords:{ +keyword:["case","catch","default","do","else","exit","exitWith","for","forEach","from","if","private","switch","then","throw","to","try","waitUntil","while","with"], +built_in:["abs","accTime","acos","action","actionIDs","actionKeys","actionKeysImages","actionKeysNames","actionKeysNamesArray","actionName","actionParams","activateAddons","activatedAddons","activateKey","add3DENConnection","add3DENEventHandler","add3DENLayer","addAction","addBackpack","addBackpackCargo","addBackpackCargoGlobal","addBackpackGlobal","addBinocularItem","addCamShake","addCuratorAddons","addCuratorCameraArea","addCuratorEditableObjects","addCuratorEditingArea","addCuratorPoints","addEditorObject","addEventHandler","addForce","addForceGeneratorRTD","addGoggles","addGroupIcon","addHandgunItem","addHeadgear","addItem","addItemCargo","addItemCargoGlobal","addItemPool","addItemToBackpack","addItemToUniform","addItemToVest","addLiveStats","addMagazine","addMagazineAmmoCargo","addMagazineCargo","addMagazineCargoGlobal","addMagazineGlobal","addMagazinePool","addMagazines","addMagazineTurret","addMenu","addMenuItem","addMissionEventHandler","addMPEventHandler","addMusicEventHandler","addonFiles","addOwnedMine","addPlayerScores","addPrimaryWeaponItem","addPublicVariableEventHandler","addRating","addResources","addScore","addScoreSide","addSecondaryWeaponItem","addSwitchableUnit","addTeamMember","addToRemainsCollector","addTorque","addUniform","addVehicle","addVest","addWaypoint","addWeapon","addWeaponCargo","addWeaponCargoGlobal","addWeaponGlobal","addWeaponItem","addWeaponPool","addWeaponTurret","addWeaponWithAttachmentsCargo","addWeaponWithAttachmentsCargoGlobal","admin","agent","agents","AGLToASL","aimedAtTarget","aimPos","airDensityCurveRTD","airDensityRTD","airplaneThrottle","airportSide","AISFinishHeal","alive","all3DENEntities","allActiveTitleEffects","allAddonsInfo","allAirports","allControls","allCurators","allCutLayers","allDead","allDeadMen","allDiarySubjects","allDisplays","allGroups","allMapMarkers","allMines","allMissionObjects","allow3DMode","allowCrewInImmobile","allowCuratorLogicIgnoreAreas","allowDamage","allowDammage","allowFileOperations","allowFleeing","allowGetIn","allowSprint","allPlayers","allSimpleObjects","allSites","allTurrets","allUnits","allUnitsUAV","allVariables","ammo","ammoOnPylon","and","animate","animateBay","animateDoor","animatePylon","animateSource","animationNames","animationPhase","animationSourcePhase","animationState","apertureParams","append","apply","armoryPoints","arrayIntersect","asin","ASLToAGL","ASLToATL","assert","assignAsCargo","assignAsCargoIndex","assignAsCommander","assignAsDriver","assignAsGunner","assignAsTurret","assignCurator","assignedCargo","assignedCommander","assignedDriver","assignedGunner","assignedItems","assignedTarget","assignedTeam","assignedVehicle","assignedVehicleRole","assignItem","assignTeam","assignToAirport","atan","atan2","atg","ATLToASL","attachedObject","attachedObjects","attachedTo","attachObject","attachTo","attackEnabled","backpack","backpackCargo","backpackContainer","backpackItems","backpackMagazines","backpackSpaceFor","batteryChargeRTD","behaviour","benchmark","bezierInterpolation","binocular","binocularItems","binocularMagazine","boundingBox","boundingBoxReal","boundingCenter","break","breakOut","breakTo","breakWith","briefingName","buildingExit","buildingPos","buldozer_EnableRoadDiag","buldozer_IsEnabledRoadDiag","buldozer_LoadNewRoads","buldozer_reloadOperMap","buttonAction","buttonSetAction","cadetMode","calculatePath","calculatePlayerVisibilityByFriendly","call","callExtension","camCommand","camCommit","camCommitPrepared","camCommitted","camConstuctionSetParams","camCreate","camDestroy","cameraEffect","cameraEffectEnableHUD","cameraInterest","cameraOn","cameraView","campaignConfigFile","camPreload","camPreloaded","camPrepareBank","camPrepareDir","camPrepareDive","camPrepareFocus","camPrepareFov","camPrepareFovRange","camPreparePos","camPrepareRelPos","camPrepareTarget","camSetBank","camSetDir","camSetDive","camSetFocus","camSetFov","camSetFovRange","camSetPos","camSetRelPos","camSetTarget","camTarget","camUseNVG","canAdd","canAddItemToBackpack","canAddItemToUniform","canAddItemToVest","cancelSimpleTaskDestination","canFire","canMove","canSlingLoad","canStand","canSuspend","canTriggerDynamicSimulation","canUnloadInCombat","canVehicleCargo","captive","captiveNum","cbChecked","cbSetChecked","ceil","channelEnabled","cheatsEnabled","checkAIFeature","checkVisibility","className","clear3DENAttribute","clear3DENInventory","clearAllItemsFromBackpack","clearBackpackCargo","clearBackpackCargoGlobal","clearForcesRTD","clearGroupIcons","clearItemCargo","clearItemCargoGlobal","clearItemPool","clearMagazineCargo","clearMagazineCargoGlobal","clearMagazinePool","clearOverlay","clearRadio","clearVehicleInit","clearWeaponCargo","clearWeaponCargoGlobal","clearWeaponPool","clientOwner","closeDialog","closeDisplay","closeOverlay","collapseObjectTree","collect3DENHistory","collectiveRTD","combatBehaviour","combatMode","commandArtilleryFire","commandChat","commander","commandFire","commandFollow","commandFSM","commandGetOut","commandingMenu","commandMove","commandRadio","commandStop","commandSuppressiveFire","commandTarget","commandWatch","comment","commitOverlay","compile","compileFinal","compileScript","completedFSM","composeText","configClasses","configFile","configHierarchy","configName","configOf","configProperties","configSourceAddonList","configSourceMod","configSourceModList","confirmSensorTarget","connectTerminalToUAV","connectToServer","continue","continueWith","controlsGroupCtrl","copyFromClipboard","copyToClipboard","copyWaypoints","cos","count","countEnemy","countFriendly","countSide","countType","countUnknown","create3DENComposition","create3DENEntity","createAgent","createCenter","createDialog","createDiaryLink","createDiaryRecord","createDiarySubject","createDisplay","createGearDialog","createGroup","createGuardedPoint","createHashMap","createHashMapFromArray","createLocation","createMarker","createMarkerLocal","createMenu","createMine","createMissionDisplay","createMPCampaignDisplay","createSimpleObject","createSimpleTask","createSite","createSoundSource","createTarget","createTask","createTeam","createTrigger","createUnit","createVehicle","createVehicleCrew","createVehicleLocal","crew","ctAddHeader","ctAddRow","ctClear","ctCurSel","ctData","ctFindHeaderRows","ctFindRowHeader","ctHeaderControls","ctHeaderCount","ctRemoveHeaders","ctRemoveRows","ctrlActivate","ctrlAddEventHandler","ctrlAngle","ctrlAnimateModel","ctrlAnimationPhaseModel","ctrlAutoScrollDelay","ctrlAutoScrollRewind","ctrlAutoScrollSpeed","ctrlChecked","ctrlClassName","ctrlCommit","ctrlCommitted","ctrlCreate","ctrlDelete","ctrlEnable","ctrlEnabled","ctrlFade","ctrlFontHeight","ctrlHTMLLoaded","ctrlIDC","ctrlIDD","ctrlMapAnimAdd","ctrlMapAnimClear","ctrlMapAnimCommit","ctrlMapAnimDone","ctrlMapCursor","ctrlMapMouseOver","ctrlMapScale","ctrlMapScreenToWorld","ctrlMapWorldToScreen","ctrlModel","ctrlModelDirAndUp","ctrlModelScale","ctrlMousePosition","ctrlParent","ctrlParentControlsGroup","ctrlPosition","ctrlRemoveAllEventHandlers","ctrlRemoveEventHandler","ctrlScale","ctrlScrollValues","ctrlSetActiveColor","ctrlSetAngle","ctrlSetAutoScrollDelay","ctrlSetAutoScrollRewind","ctrlSetAutoScrollSpeed","ctrlSetBackgroundColor","ctrlSetChecked","ctrlSetDisabledColor","ctrlSetEventHandler","ctrlSetFade","ctrlSetFocus","ctrlSetFont","ctrlSetFontH1","ctrlSetFontH1B","ctrlSetFontH2","ctrlSetFontH2B","ctrlSetFontH3","ctrlSetFontH3B","ctrlSetFontH4","ctrlSetFontH4B","ctrlSetFontH5","ctrlSetFontH5B","ctrlSetFontH6","ctrlSetFontH6B","ctrlSetFontHeight","ctrlSetFontHeightH1","ctrlSetFontHeightH2","ctrlSetFontHeightH3","ctrlSetFontHeightH4","ctrlSetFontHeightH5","ctrlSetFontHeightH6","ctrlSetFontHeightSecondary","ctrlSetFontP","ctrlSetFontPB","ctrlSetFontSecondary","ctrlSetForegroundColor","ctrlSetModel","ctrlSetModelDirAndUp","ctrlSetModelScale","ctrlSetMousePosition","ctrlSetPixelPrecision","ctrlSetPosition","ctrlSetPositionH","ctrlSetPositionW","ctrlSetPositionX","ctrlSetPositionY","ctrlSetScale","ctrlSetScrollValues","ctrlSetStructuredText","ctrlSetText","ctrlSetTextColor","ctrlSetTextColorSecondary","ctrlSetTextSecondary","ctrlSetTextSelection","ctrlSetTooltip","ctrlSetTooltipColorBox","ctrlSetTooltipColorShade","ctrlSetTooltipColorText","ctrlSetURL","ctrlShow","ctrlShown","ctrlStyle","ctrlText","ctrlTextColor","ctrlTextHeight","ctrlTextSecondary","ctrlTextSelection","ctrlTextWidth","ctrlTooltip","ctrlType","ctrlURL","ctrlVisible","ctRowControls","ctRowCount","ctSetCurSel","ctSetData","ctSetHeaderTemplate","ctSetRowTemplate","ctSetValue","ctValue","curatorAddons","curatorCamera","curatorCameraArea","curatorCameraAreaCeiling","curatorCoef","curatorEditableObjects","curatorEditingArea","curatorEditingAreaType","curatorMouseOver","curatorPoints","curatorRegisteredObjects","curatorSelected","curatorWaypointCost","current3DENOperation","currentChannel","currentCommand","currentMagazine","currentMagazineDetail","currentMagazineDetailTurret","currentMagazineTurret","currentMuzzle","currentNamespace","currentPilot","currentTask","currentTasks","currentThrowable","currentVisionMode","currentWaypoint","currentWeapon","currentWeaponMode","currentWeaponTurret","currentZeroing","cursorObject","cursorTarget","customChat","customRadio","customWaypointPosition","cutFadeOut","cutObj","cutRsc","cutText","damage","date","dateToNumber","daytime","deActivateKey","debriefingText","debugFSM","debugLog","decayGraphValues","deg","delete3DENEntities","deleteAt","deleteCenter","deleteCollection","deleteEditorObject","deleteGroup","deleteGroupWhenEmpty","deleteIdentity","deleteLocation","deleteMarker","deleteMarkerLocal","deleteRange","deleteResources","deleteSite","deleteStatus","deleteTarget","deleteTeam","deleteVehicle","deleteVehicleCrew","deleteWaypoint","detach","detectedMines","diag_activeMissionFSMs","diag_activeScripts","diag_activeSQSScripts","diag_captureFrameToFile","diag_captureSlowFrame","diag_deltaTime","diag_drawMode","diag_enable","diag_enabled","diag_fps","diag_fpsMin","diag_frameNo","diag_list","diag_mergeConfigFile","diag_scope","diag_activeSQFScripts","diag_allMissionEventHandlers","diag_captureFrame","diag_codePerformance","diag_dumpCalltraceToLog","diag_dumpTerrainSynth","diag_dynamicSimulationEnd","diag_exportConfig","diag_exportTerrainSVG","diag_lightNewLoad","diag_localized","diag_log","diag_logSlowFrame","diag_recordTurretLimits","diag_resetShapes","diag_setLightNew","diag_tickTime","diag_toggle","dialog","diaryRecordNull","diarySubjectExists","didJIP","didJIPOwner","difficulty","difficultyEnabled","difficultyEnabledRTD","difficultyOption","direction","directSay","disableAI","disableCollisionWith","disableConversation","disableDebriefingStats","disableMapIndicators","disableNVGEquipment","disableRemoteSensors","disableSerialization","disableTIEquipment","disableUAVConnectability","disableUserInput","displayAddEventHandler","displayCtrl","displayParent","displayRemoveAllEventHandlers","displayRemoveEventHandler","displaySetEventHandler","dissolveTeam","distance","distance2D","distanceSqr","distributionRegion","do3DENAction","doArtilleryFire","doFire","doFollow","doFSM","doGetOut","doMove","doorPhase","doStop","doSuppressiveFire","doTarget","doWatch","drawArrow","drawEllipse","drawIcon","drawIcon3D","drawLine","drawLine3D","drawLink","drawLocation","drawPolygon","drawRectangle","drawTriangle","driver","drop","dynamicSimulationDistance","dynamicSimulationDistanceCoef","dynamicSimulationEnabled","dynamicSimulationSystemEnabled","echo","edit3DENMissionAttributes","editObject","editorSetEventHandler","effectiveCommander","elevatePeriscope","emptyPositions","enableAI","enableAIFeature","enableAimPrecision","enableAttack","enableAudioFeature","enableAutoStartUpRTD","enableAutoTrimRTD","enableCamShake","enableCaustics","enableChannel","enableCollisionWith","enableCopilot","enableDebriefingStats","enableDiagLegend","enableDynamicSimulation","enableDynamicSimulationSystem","enableEndDialog","enableEngineArtillery","enableEnvironment","enableFatigue","enableGunLights","enableInfoPanelComponent","enableIRLasers","enableMimics","enablePersonTurret","enableRadio","enableReload","enableRopeAttach","enableSatNormalOnDetail","enableSaving","enableSentences","enableSimulation","enableSimulationGlobal","enableStamina","enableStressDamage","enableTeamSwitch","enableTraffic","enableUAVConnectability","enableUAVWaypoints","enableVehicleCargo","enableVehicleSensor","enableWeaponDisassembly","endLoadingScreen","endMission","enemy","engineOn","enginesIsOnRTD","enginesPowerRTD","enginesRpmRTD","enginesTorqueRTD","entities","environmentEnabled","environmentVolume","estimatedEndServerTime","estimatedTimeLeft","evalObjectArgument","everyBackpack","everyContainer","exec","execEditorScript","execFSM","execVM","exp","expectedDestination","exportJIPMessages","exportLandscapeXYZ","eyeDirection","eyePos","face","faction","fadeEnvironment","fadeMusic","fadeRadio","fadeSound","fadeSpeech","failMission","fileExists","fillWeaponsFromPool","find","findCover","findDisplay","findEditorObject","findEmptyPosition","findEmptyPositionReady","findIf","findNearestEnemy","finishMissionInit","finite","fire","fireAtTarget","firstBackpack","flag","flagAnimationPhase","flagOwner","flagSide","flagTexture","flatten","fleeing","floor","flyInHeight","flyInHeightASL","focusedCtrl","fog","fogForecast","fogParams","forceAddUniform","forceAtPositionRTD","forceCadetDifficulty","forcedMap","forceEnd","forceFlagTexture","forceFollowRoad","forceGeneratorRTD","forceMap","forceRespawn","forceSpeed","forceUnicode","forceWalk","forceWeaponFire","forceWeatherChange","forEachMember","forEachMemberAgent","forEachMemberTeam","forgetTarget","format","formation","formationDirection","formationLeader","formationMembers","formationPosition","formationTask","formatText","formLeader","freeLook","friendly","fromEditor","fuel","fullCrew","gearIDCAmmoCount","gearSlotAmmoCount","gearSlotData","get","get3DENActionState","get3DENAttribute","get3DENCamera","get3DENConnections","get3DENEntity","get3DENEntityID","get3DENGrid","get3DENIconsVisible","get3DENLayerEntities","get3DENLinesVisible","get3DENMissionAttribute","get3DENMouseOver","get3DENSelected","getAimingCoef","getAllEnvSoundControllers","getAllHitPointsDamage","getAllOwnedMines","getAllPylonsInfo","getAllSoundControllers","getAllUnitTraits","getAmmoCargo","getAnimAimPrecision","getAnimSpeedCoef","getArray","getArtilleryAmmo","getArtilleryComputerSettings","getArtilleryETA","getAssetDLCInfo","getAssignedCuratorLogic","getAssignedCuratorUnit","getAttackTarget","getAudioOptionVolumes","getBackpackCargo","getBleedingRemaining","getBurningValue","getCalculatePlayerVisibilityByFriendly","getCameraViewDirection","getCargoIndex","getCenterOfMass","getClientState","getClientStateNumber","getCompatiblePylonMagazines","getConnectedUAV","getContainerMaxLoad","getCursorObjectParams","getCustomAimCoef","getCustomSoundController","getCustomSoundControllerCount","getDammage","getDescription","getDir","getDirVisual","getDiverState","getDLCAssetsUsage","getDLCAssetsUsageByName","getDLCs","getDLCUsageTime","getEditorCamera","getEditorMode","getEditorObjectScope","getElevationOffset","getEnvSoundController","getFatigue","getFieldManualStartPage","getForcedFlagTexture","getFriend","getFSMVariable","getFuelCargo","getGraphValues","getGroupIcon","getGroupIconParams","getGroupIcons","getHideFrom","getHit","getHitIndex","getHitPointDamage","getItemCargo","getLighting","getLightingAt","getLoadedModsInfo","getMagazineCargo","getMarkerColor","getMarkerPos","getMarkerSize","getMarkerType","getMass","getMissionConfig","getMissionConfigValue","getMissionDLCs","getMissionLayerEntities","getMissionLayers","getMissionPath","getModelInfo","getMousePosition","getMusicPlayedTime","getNumber","getObjectArgument","getObjectChildren","getObjectDLC","getObjectFOV","getObjectMaterials","getObjectProxy","getObjectScale","getObjectTextures","getObjectType","getObjectViewDistance","getOrDefault","getOxygenRemaining","getPersonUsedDLCs","getPilotCameraDirection","getPilotCameraPosition","getPilotCameraRotation","getPilotCameraTarget","getPlateNumber","getPlayerChannel","getPlayerID","getPlayerScores","getPlayerUID","getPlayerUIDOld","getPlayerVoNVolume","getPos","getPosASL","getPosASLVisual","getPosASLW","getPosATL","getPosATLVisual","getPosVisual","getPosWorld","getPosWorldVisual","getPylonMagazines","getRelDir","getRelPos","getRemoteSensorsDisabled","getRepairCargo","getResolution","getRoadInfo","getRotorBrakeRTD","getShadowDistance","getShotParents","getSlingLoad","getSoundController","getSoundControllerResult","getSpeed","getStamina","getStatValue","getSteamFriendsServers","getSubtitleOptions","getSuppression","getTerrainGrid","getTerrainHeightASL","getText","getTextRaw","getTextWidth","getTotalDLCUsageTime","getTrimOffsetRTD","getUnitLoadout","getUnitTrait","getUserMFDText","getUserMFDValue","getVariable","getVehicleCargo","getVehicleTIPars","getWeaponCargo","getWeaponSway","getWingsOrientationRTD","getWingsPositionRTD","getWorld","getWPPos","glanceAt","globalChat","globalRadio","goggles","goto","group","groupChat","groupFromNetId","groupIconSelectable","groupIconsVisible","groupId","groupOwner","groupRadio","groupSelectedUnits","groupSelectUnit","gunner","gusts","halt","handgunItems","handgunMagazine","handgunWeapon","handsHit","hasInterface","hasPilotCamera","hasWeapon","hcAllGroups","hcGroupParams","hcLeader","hcRemoveAllGroups","hcRemoveGroup","hcSelected","hcSelectGroup","hcSetGroup","hcShowBar","hcShownBar","headgear","hideBehindScripted","hideBody","hideObject","hideObjectGlobal","hideSelection","hierarchyObjectsCount","hint","hintC","hintCadet","hintSilent","hmd","hostMission","htmlLoad","HUDMovementLevels","humidity","image","importAllGroups","importance","in","inArea","inAreaArray","incapacitatedState","inflame","inflamed","infoPanel","infoPanelComponentEnabled","infoPanelComponents","infoPanels","inGameUISetEventHandler","inheritsFrom","initAmbientLife","inPolygon","inputAction","inRangeOfArtillery","insert","insertEditorObject","intersect","is3DEN","is3DENMultiplayer","is3DENPreview","isAbleToBreathe","isActionMenuVisible","isAgent","isAimPrecisionEnabled","isArray","isAutoHoverOn","isAutonomous","isAutoStartUpEnabledRTD","isAutotest","isAutoTrimOnRTD","isBleeding","isBurning","isClass","isCollisionLightOn","isCopilotEnabled","isDamageAllowed","isDedicated","isDLCAvailable","isEngineOn","isEqualTo","isEqualType","isEqualTypeAll","isEqualTypeAny","isEqualTypeArray","isEqualTypeParams","isFilePatchingEnabled","isFinal","isFlashlightOn","isFlatEmpty","isForcedWalk","isFormationLeader","isGameFocused","isGamePaused","isGroupDeletedWhenEmpty","isHidden","isHideBehindScripted","isInRemainsCollector","isInstructorFigureEnabled","isIRLaserOn","isKeyActive","isKindOf","isLaserOn","isLightOn","isLocalized","isManualFire","isMarkedForCollection","isMultiplayer","isMultiplayerSolo","isNil","isNotEqualTo","isNull","isNumber","isObjectHidden","isObjectRTD","isOnRoad","isPiPEnabled","isPlayer","isRealTime","isRemoteExecuted","isRemoteExecutedJIP","isSensorTargetConfirmed","isServer","isShowing3DIcons","isSimpleObject","isSprintAllowed","isStaminaEnabled","isSteamMission","isStreamFriendlyUIEnabled","isStressDamageEnabled","isText","isTouchingGround","isTurnedOut","isTutHintsEnabled","isUAVConnectable","isUAVConnected","isUIContext","isUniformAllowed","isVehicleCargo","isVehicleRadarOn","isVehicleSensorEnabled","isWalking","isWeaponDeployed","isWeaponRested","itemCargo","items","itemsWithMagazines","join","joinAs","joinAsSilent","joinSilent","joinString","kbAddDatabase","kbAddDatabaseTargets","kbAddTopic","kbHasTopic","kbReact","kbRemoveTopic","kbTell","kbWasSaid","keyImage","keyName","keys","knowsAbout","land","landAt","landResult","language","laserTarget","lbAdd","lbClear","lbColor","lbColorRight","lbCurSel","lbData","lbDelete","lbIsSelected","lbPicture","lbPictureRight","lbSelection","lbSetColor","lbSetColorRight","lbSetCurSel","lbSetData","lbSetPicture","lbSetPictureColor","lbSetPictureColorDisabled","lbSetPictureColorSelected","lbSetPictureRight","lbSetPictureRightColor","lbSetPictureRightColorDisabled","lbSetPictureRightColorSelected","lbSetSelectColor","lbSetSelectColorRight","lbSetSelected","lbSetText","lbSetTextRight","lbSetTooltip","lbSetValue","lbSize","lbSort","lbSortByValue","lbText","lbTextRight","lbValue","leader","leaderboardDeInit","leaderboardGetRows","leaderboardInit","leaderboardRequestRowsFriends","leaderboardRequestRowsGlobal","leaderboardRequestRowsGlobalAroundUser","leaderboardsRequestUploadScore","leaderboardsRequestUploadScoreKeepBest","leaderboardState","leaveVehicle","libraryCredits","libraryDisclaimers","lifeState","lightAttachObject","lightDetachObject","lightIsOn","lightnings","limitSpeed","linearConversion","lineIntersects","lineIntersectsObjs","lineIntersectsSurfaces","lineIntersectsWith","linkItem","list","listObjects","listRemoteTargets","listVehicleSensors","ln","lnbAddArray","lnbAddColumn","lnbAddRow","lnbClear","lnbColor","lnbColorRight","lnbCurSelRow","lnbData","lnbDeleteColumn","lnbDeleteRow","lnbGetColumnsPosition","lnbPicture","lnbPictureRight","lnbSetColor","lnbSetColorRight","lnbSetColumnsPos","lnbSetCurSelRow","lnbSetData","lnbSetPicture","lnbSetPictureColor","lnbSetPictureColorRight","lnbSetPictureColorSelected","lnbSetPictureColorSelectedRight","lnbSetPictureRight","lnbSetText","lnbSetTextRight","lnbSetTooltip","lnbSetValue","lnbSize","lnbSort","lnbSortByValue","lnbText","lnbTextRight","lnbValue","load","loadAbs","loadBackpack","loadFile","loadGame","loadIdentity","loadMagazine","loadOverlay","loadStatus","loadUniform","loadVest","local","localize","localNamespace","locationPosition","lock","lockCameraTo","lockCargo","lockDriver","locked","lockedCargo","lockedDriver","lockedInventory","lockedTurret","lockIdentity","lockInventory","lockTurret","lockWP","log","logEntities","logNetwork","logNetworkTerminate","lookAt","lookAtPos","magazineCargo","magazines","magazinesAllTurrets","magazinesAmmo","magazinesAmmoCargo","magazinesAmmoFull","magazinesDetail","magazinesDetailBackpack","magazinesDetailUniform","magazinesDetailVest","magazinesTurret","magazineTurretAmmo","mapAnimAdd","mapAnimClear","mapAnimCommit","mapAnimDone","mapCenterOnCamera","mapGridPosition","markAsFinishedOnSteam","markerAlpha","markerBrush","markerChannel","markerColor","markerDir","markerPolyline","markerPos","markerShadow","markerShape","markerSize","markerText","markerType","matrixMultiply","matrixTranspose","max","members","menuAction","menuAdd","menuChecked","menuClear","menuCollapse","menuData","menuDelete","menuEnable","menuEnabled","menuExpand","menuHover","menuPicture","menuSetAction","menuSetCheck","menuSetData","menuSetPicture","menuSetShortcut","menuSetText","menuSetURL","menuSetValue","menuShortcut","menuShortcutText","menuSize","menuSort","menuText","menuURL","menuValue","merge","min","mineActive","mineDetectedBy","missileTarget","missileTargetPos","missionConfigFile","missionDifficulty","missionName","missionNameSource","missionNamespace","missionStart","missionVersion","mod","modelToWorld","modelToWorldVisual","modelToWorldVisualWorld","modelToWorldWorld","modParams","moonIntensity","moonPhase","morale","move","move3DENCamera","moveInAny","moveInCargo","moveInCommander","moveInDriver","moveInGunner","moveInTurret","moveObjectToEnd","moveOut","moveTarget","moveTime","moveTo","moveToCompleted","moveToFailed","musicVolume","name","namedProperties","nameSound","nearEntities","nearestBuilding","nearestLocation","nearestLocations","nearestLocationWithDubbing","nearestObject","nearestObjects","nearestTerrainObjects","nearObjects","nearObjectsReady","nearRoads","nearSupplies","nearTargets","needReload","netId","netObjNull","newOverlay","nextMenuItemIndex","nextWeatherChange","nMenuItems","not","numberOfEnginesRTD","numberToDate","object","objectCurators","objectFromNetId","objectParent","objStatus","onBriefingGear","onBriefingGroup","onBriefingNotes","onBriefingPlan","onBriefingTeamSwitch","onCommandModeChanged","onDoubleClick","onEachFrame","onGroupIconClick","onGroupIconOverEnter","onGroupIconOverLeave","onHCGroupSelectionChanged","onMapSingleClick","onPlayerConnected","onPlayerDisconnected","onPreloadFinished","onPreloadStarted","onShowNewObject","onTeamSwitch","openCuratorInterface","openDLCPage","openDSInterface","openGPS","openMap","openSteamApp","openYoutubeVideo","or","orderGetIn","overcast","overcastForecast","owner","param","params","parseNumber","parseSimpleArray","parseText","parsingNamespace","particlesQuality","periscopeElevation","pickWeaponPool","pitch","pixelGrid","pixelGridBase","pixelGridNoUIScale","pixelH","pixelW","playableSlotsNumber","playableUnits","playAction","playActionNow","player","playerRespawnTime","playerSide","playersNumber","playGesture","playMission","playMove","playMoveNow","playMusic","playScriptedMission","playSound","playSound3D","position","positionCameraToWorld","posScreenToWorld","posWorldToScreen","ppEffectAdjust","ppEffectCommit","ppEffectCommitted","ppEffectCreate","ppEffectDestroy","ppEffectEnable","ppEffectEnabled","ppEffectForceInNVG","precision","preloadCamera","preloadObject","preloadSound","preloadTitleObj","preloadTitleRsc","preprocessFile","preprocessFileLineNumbers","primaryWeapon","primaryWeaponItems","primaryWeaponMagazine","priority","processDiaryLink","processInitCommands","productVersion","profileName","profileNamespace","profileNameSteam","progressLoadingScreen","progressPosition","progressSetPosition","publicVariable","publicVariableClient","publicVariableServer","pushBack","pushBackUnique","putWeaponPool","queryItemsPool","queryMagazinePool","queryWeaponPool","rad","radioChannelAdd","radioChannelCreate","radioChannelInfo","radioChannelRemove","radioChannelSetCallSign","radioChannelSetLabel","radioVolume","rain","rainbow","random","rank","rankId","rating","rectangular","registeredTasks","registerTask","reload","reloadEnabled","remoteControl","remoteExec","remoteExecCall","remoteExecutedOwner","remove3DENConnection","remove3DENEventHandler","remove3DENLayer","removeAction","removeAll3DENEventHandlers","removeAllActions","removeAllAssignedItems","removeAllBinocularItems","removeAllContainers","removeAllCuratorAddons","removeAllCuratorCameraAreas","removeAllCuratorEditingAreas","removeAllEventHandlers","removeAllHandgunItems","removeAllItems","removeAllItemsWithMagazines","removeAllMissionEventHandlers","removeAllMPEventHandlers","removeAllMusicEventHandlers","removeAllOwnedMines","removeAllPrimaryWeaponItems","removeAllSecondaryWeaponItems","removeAllWeapons","removeBackpack","removeBackpackGlobal","removeBinocularItem","removeClothing","removeCuratorAddons","removeCuratorCameraArea","removeCuratorEditableObjects","removeCuratorEditingArea","removeDiaryRecord","removeDiarySubject","removeDrawIcon","removeDrawLinks","removeEventHandler","removeFromRemainsCollector","removeGoggles","removeGroupIcon","removeHandgunItem","removeHeadgear","removeItem","removeItemFromBackpack","removeItemFromUniform","removeItemFromVest","removeItems","removeMagazine","removeMagazineGlobal","removeMagazines","removeMagazinesTurret","removeMagazineTurret","removeMenuItem","removeMissionEventHandler","removeMPEventHandler","removeMusicEventHandler","removeOwnedMine","removePrimaryWeaponItem","removeSecondaryWeaponItem","removeSimpleTask","removeSwitchableUnit","removeTeamMember","removeUniform","removeVest","removeWeapon","removeWeaponAttachmentCargo","removeWeaponCargo","removeWeaponGlobal","removeWeaponTurret","reportRemoteTarget","requiredVersion","resetCamShake","resetSubgroupDirection","resize","resources","respawnVehicle","restartEditorCamera","reveal","revealMine","reverse","reversedMouseY","roadAt","roadsConnectedTo","roleDescription","ropeAttachedObjects","ropeAttachedTo","ropeAttachEnabled","ropeAttachTo","ropeCreate","ropeCut","ropeDestroy","ropeDetach","ropeEndPosition","ropeLength","ropes","ropeSegments","ropeSetCargoMass","ropeUnwind","ropeUnwound","rotorsForcesRTD","rotorsRpmRTD","round","runInitScript","safeZoneH","safeZoneW","safeZoneWAbs","safeZoneX","safeZoneXAbs","safeZoneY","save3DENInventory","saveGame","saveIdentity","saveJoysticks","saveOverlay","saveProfileNamespace","saveStatus","saveVar","savingEnabled","say","say2D","say3D","scopeName","score","scoreSide","screenshot","screenToWorld","scriptDone","scriptName","scudState","secondaryWeapon","secondaryWeaponItems","secondaryWeaponMagazine","select","selectBestPlaces","selectDiarySubject","selectedEditorObjects","selectEditorObject","selectionNames","selectionPosition","selectLeader","selectMax","selectMin","selectNoPlayer","selectPlayer","selectRandom","selectRandomWeighted","selectWeapon","selectWeaponTurret","sendAUMessage","sendSimpleCommand","sendTask","sendTaskResult","sendUDPMessage","serverCommand","serverCommandAvailable","serverCommandExecutable","serverName","serverTime","set","set3DENAttribute","set3DENAttributes","set3DENGrid","set3DENIconsVisible","set3DENLayer","set3DENLinesVisible","set3DENLogicType","set3DENMissionAttribute","set3DENMissionAttributes","set3DENModelsVisible","set3DENObjectType","set3DENSelected","setAccTime","setActualCollectiveRTD","setAirplaneThrottle","setAirportSide","setAmmo","setAmmoCargo","setAmmoOnPylon","setAnimSpeedCoef","setAperture","setApertureNew","setAPURTD","setArmoryPoints","setAttributes","setAutonomous","setBatteryChargeRTD","setBatteryRTD","setBehaviour","setBehaviourStrong","setBleedingRemaining","setBrakesRTD","setCameraEffect","setCameraInterest","setCamShakeDefParams","setCamShakeParams","setCamUseTI","setCaptive","setCenterOfMass","setCollisionLight","setCombatBehaviour","setCombatMode","setCompassOscillation","setConvoySeparation","setCuratorCameraAreaCeiling","setCuratorCoef","setCuratorEditingAreaType","setCuratorWaypointCost","setCurrentChannel","setCurrentTask","setCurrentWaypoint","setCustomAimCoef","setCustomMissionData","setCustomSoundController","setCustomWeightRTD","setDamage","setDammage","setDate","setDebriefingText","setDefaultCamera","setDestination","setDetailMapBlendPars","setDiaryRecordText","setDiarySubjectPicture","setDir","setDirection","setDrawIcon","setDriveOnPath","setDropInterval","setDynamicSimulationDistance","setDynamicSimulationDistanceCoef","setEditorMode","setEditorObjectScope","setEffectCondition","setEffectiveCommander","setEngineRPMRTD","setEngineRpmRTD","setFace","setFaceAnimation","setFatigue","setFeatureType","setFlagAnimationPhase","setFlagOwner","setFlagSide","setFlagTexture","setFog","setForceGeneratorRTD","setFormation","setFormationTask","setFormDir","setFriend","setFromEditor","setFSMVariable","setFuel","setFuelCargo","setGroupIcon","setGroupIconParams","setGroupIconsSelectable","setGroupIconsVisible","setGroupId","setGroupIdGlobal","setGroupOwner","setGusts","setHideBehind","setHit","setHitIndex","setHitPointDamage","setHorizonParallaxCoef","setHUDMovementLevels","setIdentity","setImportance","setInfoPanel","setLeader","setLightAmbient","setLightAttenuation","setLightBrightness","setLightColor","setLightDayLight","setLightFlareMaxDistance","setLightFlareSize","setLightIntensity","setLightnings","setLightUseFlare","setLocalWindParams","setMagazineTurretAmmo","setMarkerAlpha","setMarkerAlphaLocal","setMarkerBrush","setMarkerBrushLocal","setMarkerColor","setMarkerColorLocal","setMarkerDir","setMarkerDirLocal","setMarkerPolyline","setMarkerPolylineLocal","setMarkerPos","setMarkerPosLocal","setMarkerShadow","setMarkerShadowLocal","setMarkerShape","setMarkerShapeLocal","setMarkerSize","setMarkerSizeLocal","setMarkerText","setMarkerTextLocal","setMarkerType","setMarkerTypeLocal","setMass","setMimic","setMissileTarget","setMissileTargetPos","setMousePosition","setMusicEffect","setMusicEventHandler","setName","setNameSound","setObjectArguments","setObjectMaterial","setObjectMaterialGlobal","setObjectProxy","setObjectScale","setObjectTexture","setObjectTextureGlobal","setObjectViewDistance","setOvercast","setOwner","setOxygenRemaining","setParticleCircle","setParticleClass","setParticleFire","setParticleParams","setParticleRandom","setPilotCameraDirection","setPilotCameraRotation","setPilotCameraTarget","setPilotLight","setPiPEffect","setPitch","setPlateNumber","setPlayable","setPlayerRespawnTime","setPlayerVoNVolume","setPos","setPosASL","setPosASL2","setPosASLW","setPosATL","setPosition","setPosWorld","setPylonLoadout","setPylonsPriority","setRadioMsg","setRain","setRainbow","setRandomLip","setRank","setRectangular","setRepairCargo","setRotorBrakeRTD","setShadowDistance","setShotParents","setSide","setSimpleTaskAlwaysVisible","setSimpleTaskCustomData","setSimpleTaskDescription","setSimpleTaskDestination","setSimpleTaskTarget","setSimpleTaskType","setSimulWeatherLayers","setSize","setSkill","setSlingLoad","setSoundEffect","setSpeaker","setSpeech","setSpeedMode","setStamina","setStaminaScheme","setStarterRTD","setStatValue","setSuppression","setSystemOfUnits","setTargetAge","setTaskMarkerOffset","setTaskResult","setTaskState","setTerrainGrid","setText","setThrottleRTD","setTimeMultiplier","setTitleEffect","setToneMapping","setToneMappingParams","setTrafficDensity","setTrafficDistance","setTrafficGap","setTrafficSpeed","setTriggerActivation","setTriggerArea","setTriggerInterval","setTriggerStatements","setTriggerText","setTriggerTimeout","setTriggerType","setType","setUnconscious","setUnitAbility","setUnitCombatMode","setUnitLoadout","setUnitPos","setUnitPosWeak","setUnitRank","setUnitRecoilCoefficient","setUnitTrait","setUnloadInCombat","setUserActionText","setUserMFDText","setUserMFDValue","setVariable","setVectorDir","setVectorDirAndUp","setVectorUp","setVehicleAmmo","setVehicleAmmoDef","setVehicleArmor","setVehicleCargo","setVehicleId","setVehicleInit","setVehicleLock","setVehiclePosition","setVehicleRadar","setVehicleReceiveRemoteTargets","setVehicleReportOwnPosition","setVehicleReportRemoteTargets","setVehicleTIPars","setVehicleVarName","setVelocity","setVelocityModelSpace","setVelocityTransformation","setViewDistance","setVisibleIfTreeCollapsed","setWantedRPMRTD","setWaves","setWaypointBehaviour","setWaypointCombatMode","setWaypointCompletionRadius","setWaypointDescription","setWaypointForceBehaviour","setWaypointFormation","setWaypointHousePosition","setWaypointLoiterAltitude","setWaypointLoiterRadius","setWaypointLoiterType","setWaypointName","setWaypointPosition","setWaypointScript","setWaypointSpeed","setWaypointStatements","setWaypointTimeout","setWaypointType","setWaypointVisible","setWeaponReloadingTime","setWeaponZeroing","setWind","setWindDir","setWindForce","setWindStr","setWingForceScaleRTD","setWPPos","show3DIcons","showChat","showCinemaBorder","showCommandingMenu","showCompass","showCuratorCompass","showGPS","showHUD","showLegend","showMap","shownArtilleryComputer","shownChat","shownCompass","shownCuratorCompass","showNewEditorObject","shownGPS","shownHUD","shownMap","shownPad","shownRadio","shownScoretable","shownUAVFeed","shownWarrant","shownWatch","showPad","showRadio","showScoretable","showSubtitles","showUAVFeed","showWarrant","showWatch","showWaypoint","showWaypoints","side","sideChat","sideEmpty","sideEnemy","sideFriendly","sideRadio","simpleTasks","simulationEnabled","simulCloudDensity","simulCloudOcclusion","simulInClouds","simulSetHumidity","simulWeatherSync","sin","size","sizeOf","skill","skillFinal","skipTime","sleep","sliderPosition","sliderRange","sliderSetPosition","sliderSetRange","sliderSetSpeed","sliderSpeed","slingLoadAssistantShown","soldierMagazines","someAmmo","sort","soundVolume","spawn","speaker","speechVolume","speed","speedMode","splitString","sqrt","squadParams","stance","startLoadingScreen","step","stop","stopEngineRTD","stopped","str","sunOrMoon","supportInfo","suppressFor","surfaceIsWater","surfaceNormal","surfaceTexture","surfaceType","swimInDepth","switchableUnits","switchAction","switchCamera","switchGesture","switchLight","switchMove","synchronizedObjects","synchronizedTriggers","synchronizedWaypoints","synchronizeObjectsAdd","synchronizeObjectsRemove","synchronizeTrigger","synchronizeWaypoint","systemChat","systemOfUnits","systemTime","systemTimeUTC","tan","targetKnowledge","targets","targetsAggregate","targetsQuery","taskAlwaysVisible","taskChildren","taskCompleted","taskCustomData","taskDescription","taskDestination","taskHint","taskMarkerOffset","taskName","taskParent","taskResult","taskState","taskType","teamMember","teamName","teams","teamSwitch","teamSwitchEnabled","teamType","terminate","terrainIntersect","terrainIntersectASL","terrainIntersectAtASL","text","textLog","textLogFormat","tg","throttleRTD","time","timeMultiplier","titleCut","titleFadeOut","titleObj","titleRsc","titleText","toArray","toFixed","toLower","toLowerANSI","toString","toUpper","toUpperANSI","triggerActivated","triggerActivation","triggerAmmo","triggerArea","triggerAttachedVehicle","triggerAttachObject","triggerAttachVehicle","triggerDynamicSimulation","triggerInterval","triggerStatements","triggerText","triggerTimeout","triggerTimeoutCurrent","triggerType","trim","turretLocal","turretOwner","turretUnit","tvAdd","tvClear","tvCollapse","tvCollapseAll","tvCount","tvCurSel","tvData","tvDelete","tvExpand","tvExpandAll","tvIsSelected","tvPicture","tvPictureRight","tvSelection","tvSetColor","tvSetCurSel","tvSetData","tvSetPicture","tvSetPictureColor","tvSetPictureColorDisabled","tvSetPictureColorSelected","tvSetPictureRight","tvSetPictureRightColor","tvSetPictureRightColorDisabled","tvSetPictureRightColorSelected","tvSetSelectColor","tvSetSelected","tvSetText","tvSetTooltip","tvSetValue","tvSort","tvSortAll","tvSortByValue","tvSortByValueAll","tvText","tvTooltip","tvValue","type","typeName","typeOf","UAVControl","uiNamespace","uiSleep","unassignCurator","unassignItem","unassignTeam","unassignVehicle","underwater","uniform","uniformContainer","uniformItems","uniformMagazines","unitAddons","unitAimPosition","unitAimPositionVisual","unitBackpack","unitCombatMode","unitIsUAV","unitPos","unitReady","unitRecoilCoefficient","units","unitsBelowHeight","unitTurret","unlinkItem","unlockAchievement","unregisterTask","updateDrawIcon","updateMenuItem","updateObjectTree","useAIOperMapObstructionTest","useAISteeringComponent","useAudioTimeForMoves","userInputDisabled","vectorAdd","vectorCos","vectorCrossProduct","vectorDiff","vectorDir","vectorDirVisual","vectorDistance","vectorDistanceSqr","vectorDotProduct","vectorFromTo","vectorLinearConversion","vectorMagnitude","vectorMagnitudeSqr","vectorModelToWorld","vectorModelToWorldVisual","vectorMultiply","vectorNormalized","vectorUp","vectorUpVisual","vectorWorldToModel","vectorWorldToModelVisual","vehicle","vehicleCargoEnabled","vehicleChat","vehicleMoveInfo","vehicleRadio","vehicleReceiveRemoteTargets","vehicleReportOwnPosition","vehicleReportRemoteTargets","vehicles","vehicleVarName","velocity","velocityModelSpace","verifySignature","vest","vestContainer","vestItems","vestMagazines","viewDistance","visibleCompass","visibleGPS","visibleMap","visiblePosition","visiblePositionASL","visibleScoretable","visibleWatch","waves","waypointAttachedObject","waypointAttachedVehicle","waypointAttachObject","waypointAttachVehicle","waypointBehaviour","waypointCombatMode","waypointCompletionRadius","waypointDescription","waypointForceBehaviour","waypointFormation","waypointHousePosition","waypointLoiterAltitude","waypointLoiterRadius","waypointLoiterType","waypointName","waypointPosition","waypoints","waypointScript","waypointsEnabledUAV","waypointShow","waypointSpeed","waypointStatements","waypointTimeout","waypointTimeoutCurrent","waypointType","waypointVisible","weaponAccessories","weaponAccessoriesCargo","weaponCargo","weaponDirection","weaponInertia","weaponLowered","weapons","weaponsItems","weaponsItemsCargo","weaponState","weaponsTurret","weightRTD","WFSideText","wind","windDir","windRTD","windStr","wingsForcesRTD","worldName","worldSize","worldToModel","worldToModelVisual","worldToScreen"], +literal:["blufor","civilian","configNull","controlNull","displayNull","east","endl","false","grpNull","independent","lineBreak","locationNull","nil","objNull","opfor","pi","resistance","scriptNull","sideAmbientLife","sideEmpty","sideLogic","sideUnknown","taskNull","teamMemberNull","true","west"] +},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{ +className:"variable",begin:/\b_+[a-zA-Z]\w*/},{className:"title", +begin:/[a-zA-Z]\w+_fnc_\w+/},t,a],illegal:/#|^\$ /}}})() +;hljs.registerLanguage("sqf",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js new file mode 100644 index 0000000..b25057b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js @@ -0,0 +1,17 @@ +/*! `sql` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={ +begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} +;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ +$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(c,{when:e=>e.length<3}),literal:n,type:a, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:r.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, +keyword:c.concat(s),literal:n,type:a}},{className:"type", +begin:r.either("double precision","large object","with timezone","without timezone") +},l,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})() +;hljs.registerLanguage("sql",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js new file mode 100644 index 0000000..72db8c0 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js @@ -0,0 +1,17 @@ +/*! `stan` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var _=(()=>{"use strict";return _=>{const e=_.COMMENT(/\/\*/,/\*\//,{ +relevance:0,contains:[{className:"doctag",match:/@(return|param)/}]}),l={ +className:"meta",begin:/^#include\b/,end:/$/,relevance:0,keywords:"include", +contains:[{match:/[a-z][a-z-.]+/,className:"string"},_.C_LINE_COMMENT_MODE]} +;return{name:"Stan",aliases:["stanfuncs"],keywords:{$pattern:_.IDENT_RE, +title:["functions","model","data","parameters","quantities","transformed","generated"], +keyword:["for","in","if","else","while","break","continue","return"].concat(["int","real","vector","ordered","positive_ordered","simplex","unit_vector","row_vector","matrix","cholesky_factor_corr|10","cholesky_factor_cov|10","corr_matrix|10","cov_matrix|10","void"]).concat(["print","reject","increment_log_prob|10","integrate_ode|10","integrate_ode_rk45|10","integrate_ode_bdf|10","algebra_solver"]), +built_in:["Phi","Phi_approx","abs","acos","acosh","algebra_solver","append_array","append_col","append_row","asin","asinh","atan","atan2","atanh","bernoulli_cdf","bernoulli_lccdf","bernoulli_lcdf","bernoulli_logit_lpmf","bernoulli_logit_rng","bernoulli_lpmf","bernoulli_rng","bessel_first_kind","bessel_second_kind","beta_binomial_cdf","beta_binomial_lccdf","beta_binomial_lcdf","beta_binomial_lpmf","beta_binomial_rng","beta_cdf","beta_lccdf","beta_lcdf","beta_lpdf","beta_rng","binary_log_loss","binomial_cdf","binomial_coefficient_log","binomial_lccdf","binomial_lcdf","binomial_logit_lpmf","binomial_lpmf","binomial_rng","block","categorical_logit_lpmf","categorical_logit_rng","categorical_lpmf","categorical_rng","cauchy_cdf","cauchy_lccdf","cauchy_lcdf","cauchy_lpdf","cauchy_rng","cbrt","ceil","chi_square_cdf","chi_square_lccdf","chi_square_lcdf","chi_square_lpdf","chi_square_rng","cholesky_decompose","choose","col","cols","columns_dot_product","columns_dot_self","cos","cosh","cov_exp_quad","crossprod","csr_extract_u","csr_extract_v","csr_extract_w","csr_matrix_times_vector","csr_to_dense_matrix","cumulative_sum","determinant","diag_matrix","diag_post_multiply","diag_pre_multiply","diagonal","digamma","dims","dirichlet_lpdf","dirichlet_rng","distance","dot_product","dot_self","double_exponential_cdf","double_exponential_lccdf","double_exponential_lcdf","double_exponential_lpdf","double_exponential_rng","e","eigenvalues_sym","eigenvectors_sym","erf","erfc","exp","exp2","exp_mod_normal_cdf","exp_mod_normal_lccdf","exp_mod_normal_lcdf","exp_mod_normal_lpdf","exp_mod_normal_rng","expm1","exponential_cdf","exponential_lccdf","exponential_lcdf","exponential_lpdf","exponential_rng","fabs","falling_factorial","fdim","floor","fma","fmax","fmin","fmod","frechet_cdf","frechet_lccdf","frechet_lcdf","frechet_lpdf","frechet_rng","gamma_cdf","gamma_lccdf","gamma_lcdf","gamma_lpdf","gamma_p","gamma_q","gamma_rng","gaussian_dlm_obs_lpdf","get_lp","gumbel_cdf","gumbel_lccdf","gumbel_lcdf","gumbel_lpdf","gumbel_rng","head","hypergeometric_lpmf","hypergeometric_rng","hypot","inc_beta","int_step","integrate_ode","integrate_ode_bdf","integrate_ode_rk45","inv","inv_Phi","inv_chi_square_cdf","inv_chi_square_lccdf","inv_chi_square_lcdf","inv_chi_square_lpdf","inv_chi_square_rng","inv_cloglog","inv_gamma_cdf","inv_gamma_lccdf","inv_gamma_lcdf","inv_gamma_lpdf","inv_gamma_rng","inv_logit","inv_sqrt","inv_square","inv_wishart_lpdf","inv_wishart_rng","inverse","inverse_spd","is_inf","is_nan","lbeta","lchoose","lgamma","lkj_corr_cholesky_lpdf","lkj_corr_cholesky_rng","lkj_corr_lpdf","lkj_corr_rng","lmgamma","lmultiply","log","log10","log1m","log1m_exp","log1m_inv_logit","log1p","log1p_exp","log2","log_determinant","log_diff_exp","log_falling_factorial","log_inv_logit","log_mix","log_rising_factorial","log_softmax","log_sum_exp","logistic_cdf","logistic_lccdf","logistic_lcdf","logistic_lpdf","logistic_rng","logit","lognormal_cdf","lognormal_lccdf","lognormal_lcdf","lognormal_lpdf","lognormal_rng","machine_precision","matrix_exp","max","mdivide_left_spd","mdivide_left_tri_low","mdivide_right_spd","mdivide_right_tri_low","mean","min","modified_bessel_first_kind","modified_bessel_second_kind","multi_gp_cholesky_lpdf","multi_gp_lpdf","multi_normal_cholesky_lpdf","multi_normal_cholesky_rng","multi_normal_lpdf","multi_normal_prec_lpdf","multi_normal_rng","multi_student_t_lpdf","multi_student_t_rng","multinomial_lpmf","multinomial_rng","multiply_log","multiply_lower_tri_self_transpose","neg_binomial_2_cdf","neg_binomial_2_lccdf","neg_binomial_2_lcdf","neg_binomial_2_log_lpmf","neg_binomial_2_log_rng","neg_binomial_2_lpmf","neg_binomial_2_rng","neg_binomial_cdf","neg_binomial_lccdf","neg_binomial_lcdf","neg_binomial_lpmf","neg_binomial_rng","negative_infinity","normal_cdf","normal_lccdf","normal_lcdf","normal_lpdf","normal_rng","not_a_number","num_elements","ordered_logistic_lpmf","ordered_logistic_rng","owens_t","pareto_cdf","pareto_lccdf","pareto_lcdf","pareto_lpdf","pareto_rng","pareto_type_2_cdf","pareto_type_2_lccdf","pareto_type_2_lcdf","pareto_type_2_lpdf","pareto_type_2_rng","pi","poisson_cdf","poisson_lccdf","poisson_lcdf","poisson_log_lpmf","poisson_log_rng","poisson_lpmf","poisson_rng","positive_infinity","pow","print","prod","qr_Q","qr_R","quad_form","quad_form_diag","quad_form_sym","rank","rayleigh_cdf","rayleigh_lccdf","rayleigh_lcdf","rayleigh_lpdf","rayleigh_rng","reject","rep_array","rep_matrix","rep_row_vector","rep_vector","rising_factorial","round","row","rows","rows_dot_product","rows_dot_self","scaled_inv_chi_square_cdf","scaled_inv_chi_square_lccdf","scaled_inv_chi_square_lcdf","scaled_inv_chi_square_lpdf","scaled_inv_chi_square_rng","sd","segment","sin","singular_values","sinh","size","skew_normal_cdf","skew_normal_lccdf","skew_normal_lcdf","skew_normal_lpdf","skew_normal_rng","softmax","sort_asc","sort_desc","sort_indices_asc","sort_indices_desc","sqrt","sqrt2","square","squared_distance","step","student_t_cdf","student_t_lccdf","student_t_lcdf","student_t_lpdf","student_t_rng","sub_col","sub_row","sum","tail","tan","tanh","target","tcrossprod","tgamma","to_array_1d","to_array_2d","to_matrix","to_row_vector","to_vector","trace","trace_gen_quad_form","trace_quad_form","trigamma","trunc","uniform_cdf","uniform_lccdf","uniform_lcdf","uniform_lpdf","uniform_rng","variance","von_mises_lpdf","von_mises_rng","weibull_cdf","weibull_lccdf","weibull_lcdf","weibull_lpdf","weibull_rng","wiener_lpdf","wishart_lpdf","wishart_rng"] +},contains:[_.C_LINE_COMMENT_MODE,l,_.HASH_COMMENT_MODE,e,{ +begin:/<\s*lower\s*=/,keywords:"lower"},{begin:/[<,]\s*upper\s*=/, +keywords:"upper"},{className:"keyword",begin:/\btarget\s*\+=/},{ +begin:"~\\s*("+_.IDENT_RE+")\\s*\\(", +keywords:["bernoulli","bernoulli_logit","beta","beta_binomial","binomial","binomial_logit","categorical","categorical_logit","cauchy","chi_square","dirichlet","double_exponential","exp_mod_normal","exponential","frechet","gamma","gaussian_dlm_obs","gumbel","hypergeometric","inv_chi_square","inv_gamma","inv_wishart","lkj_corr","lkj_corr_cholesky","logistic","lognormal","multi_gp","multi_gp_cholesky","multi_normal","multi_normal_cholesky","multi_normal_prec","multi_student_t","multinomial","neg_binomial","neg_binomial_2","neg_binomial_2_log","normal","ordered_logistic","pareto","pareto_type_2","poisson","poisson_log","rayleigh","scaled_inv_chi_square","skew_normal","student_t","uniform","von_mises","weibull","wiener","wishart"] +},{className:"number",variants:[{begin:/\b\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/},{ +begin:/\.\d+(?:[eE][+-]?\d+)?\b/}],relevance:0},{className:"string",begin:'"', +end:'"',relevance:0}]}}})();hljs.registerLanguage("stan",_)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js new file mode 100644 index 0000000..f1bd759 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js @@ -0,0 +1,11 @@ +/*! `stata` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Stata",aliases:["do","ado"], +case_insensitive:!0, +keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5", +contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable", +begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{ +begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in", +variants:[{ +begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()" +}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE] +})})();hljs.registerLanguage("stata",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js new file mode 100644 index 0000000..b2c85b1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js @@ -0,0 +1,10 @@ +/*! `step21` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"STEP Part 21", +aliases:["p21","step","stp"],case_insensitive:!0,keywords:{ +$pattern:"[A-Z_][A-Z0-9_.]*",keyword:["HEADER","ENDSEC","DATA"]},contains:[{ +className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta", +begin:"END-ISO-10303-21;",relevance:10 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{ +illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{ +className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#", +end:"\\d+",illegal:"\\W"}]}]})})();hljs.registerLanguage("step21",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js new file mode 100644 index 0000000..9c6d35c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js @@ -0,0 +1,36 @@ +/*! `stylus` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;return a=>{const n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}))(a),s={className:"variable",begin:"\\$"+a.IDENT_RE},l="(?=[.\\s\\n[:,(])" +;return{name:"Stylus",aliases:["styl"],case_insensitive:!1, +keywords:"if else for in", +illegal:"(\\?|(\\bReturn\\b)|(\\bEnd\\b)|(\\bend\\b)|(\\bdef\\b)|;|#\\s|\\*\\s|===\\s|\\||%)", +contains:[a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,n.HEXCOLOR,{ +begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[.\\s\\n[:,(])",className:"selector-class"},{ +begin:"#[a-zA-Z][a-zA-Z0-9_-]*(?=[.\\s\\n[:,(])",className:"selector-id"},{ +begin:"\\b("+e.join("|")+")"+l,className:"selector-tag"},{ +className:"selector-pseudo",begin:"&?:("+i.join("|")+")"+l},{ +className:"selector-pseudo",begin:"&?:(:)?("+o.join("|")+")"+l +},n.ATTRIBUTE_SELECTOR_MODE,{className:"keyword",begin:/@media/,starts:{ +end:/[{;}]/,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[n.CSS_NUMBER_MODE]}},{className:"keyword", +begin:"@((-(o|moz|ms|webkit)-)?(charset|css|debug|extend|font-face|for|import|include|keyframes|media|mixin|page|warn|while))\\b" +},s,n.CSS_NUMBER_MODE,{className:"function", +begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0, +contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{ +className:"params",begin:/\(/,end:/\)/, +contains:[n.HEXCOLOR,s,a.APOS_STRING_MODE,n.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE] +}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+r.join("|")+")\\b", +starts:{end:/;|$/, +contains:[n.HEXCOLOR,s,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,n.CSS_NUMBER_MODE,a.C_BLOCK_COMMENT_MODE,n.IMPORTANT], +illegal:/\./,relevance:0}},n.FUNCTION_DISPATCH]}}})() +;hljs.registerLanguage("stylus",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js new file mode 100644 index 0000000..ae33522 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js @@ -0,0 +1,9 @@ +/*! `subunit` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"SubUnit",case_insensitive:!0, +contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{ +className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z" +},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10, +variants:[{ +begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?" +},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}] +})})();hljs.registerLanguage("subunit",s)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js new file mode 100644 index 0000000..52de526 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js @@ -0,0 +1,60 @@ +/*! `swift` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function a(e){return t("(?=",e,")")} +function t(...a){return a.map((a=>e(a))).join("")}function n(...a){const t=(e=>{ +const a=e[e.length-1] +;return"object"==typeof a&&a.constructor===Object?(e.splice(e.length-1,1),a):{} +})(a);return"("+(t.capture?"":"?:")+a.map((a=>e(a))).join("|")+")"} +const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),u=["init","self"].map(i),c=["Any","Self"],r=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],o=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=n(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=n(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=n(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=n(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),y=t(/[A-Z]/,f,"*"),g=["autoclosure",t(/convention\(/,n("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],E=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;return e=>{const d={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{ +contains:["self"]}),v=[e.C_LINE_COMMENT_MODE,h],A={match:[/\./,n(...s,...u)], +className:{2:"keyword"}},N={match:t(/\./,n(...r)),relevance:0 +},C=r.filter((e=>"string"==typeof e)).concat(["_|0"]),D={variants:[{ +className:"keyword", +match:n(...r.filter((e=>"string"!=typeof e)).concat(c).map(i),...u)}]},k={ +$pattern:n(/\b\w+/,/#\w+/),keyword:C.concat(m),literal:o},B=[A,N,D],_=[{ +match:t(/\./,n(...p)),relevance:0},{className:"built_in", +match:t(/\b/,n(...p),/(?=\()/)}],S={match:/->/,relevance:0},M=[S,{ +className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${F})+`}] +}],x="([0-9a-fA-F]_*)+",I={className:"number",relevance:0,variants:[{ +match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +match:`\\b0x(${x})(\\.(${x}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},L=(e="")=>({ +className:"subst",variants:[{match:t(/\\/,e,/[0\\tnr"']/)},{ +match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),O=(e="")=>({className:"subst", +match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),T=(e="")=>({className:"subst", +label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/}),$=(e="")=>({begin:t(e,/"""/), +end:t(/"""/,e),contains:[L(e),O(e),T(e)]}),j=(e="")=>({begin:t(e,/"/), +end:t(/"/,e),contains:[L(e),T(e)]}),P={className:"string", +variants:[$(),$("#"),$("##"),$("###"),j(),j("#"),j("##"),j("###")]},K={ +match:t(/`/,w,/`/)},z=[K,{className:"variable",match:/\$\d+/},{ +className:"variable",match:`\\$${f}+`}],q=[{match:/(@|#)available/, +className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:E, +contains:[...M,I,P]}]}},{className:"keyword",match:t(/@/,n(...g))},{ +className:"meta",match:t(/@/,w)}],U={match:a(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+") +},{className:"type",match:y,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,a(y)),relevance:0}]},Z={ +begin:/</,end:/>/,keywords:k,contains:[...v,...B,...q,S,U]};U.contains.push(Z) +;const V={begin:/\(/,end:/\)/,relevance:0,keywords:k,contains:["self",{ +match:t(w,/\s*:/),keywords:"_|0",relevance:0 +},...v,...B,..._,...M,I,P,...z,...q,U]},W={begin:/</,end:/>/,contains:[...v,U] +},G={begin:/\(/,end:/\)/,keywords:k,contains:[{ +begin:n(a(t(w,/\s*:/)),a(t(w,/\s+/,w,/\s*:/))),end:/:/,relevance:0,contains:[{ +className:"keyword",match:/\b_\b/},{className:"params",match:w}] +},...v,...B,...M,I,P,...q,U,V],endsParent:!0,illegal:/["']/},R={ +match:[/func/,/\s+/,n(K.match,w,b)],className:{1:"keyword",3:"title.function"}, +contains:[W,G,d],illegal:[/\[/,/%/]},X={ +match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, +contains:[W,G,d],illegal:/\[|%/},H={match:[/operator/,/\s+/,b],className:{ +1:"keyword",3:"title"}},J={begin:[/precedencegroup/,/\s+/,y],className:{ +1:"keyword",3:"title"},contains:[U],keywords:[...l,...o],end:/}/} +;for(const e of P.variants){const a=e.contains.find((e=>"interpol"===e.label)) +;a.keywords=k;const t=[...B,..._,...M,I,P,...z];a.contains=[...t,{begin:/\(/, +end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:k, +contains:[...v,R,X,{beginKeywords:"struct protocol class extension enum actor", +end:"\\{",excludeEnd:!0,keywords:k,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...B] +},H,J,{beginKeywords:"import",end:/$/,contains:[...v],relevance:0 +},...B,..._,...M,I,P,...z,...q,U,V]}}})();hljs.registerLanguage("swift",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js new file mode 100644 index 0000000..b61a16d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js @@ -0,0 +1,8 @@ +/*! `taggerscript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Tagger Script",contains:[{ +className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\\[()]/},{ +begin:/\(/,end:/\)/,contains:[{begin:/\\[()]/},"self"]}],relevance:10},{ +className:"keyword",begin:/\$[_a-zA-Z0-9]+(?=\()/},{className:"variable", +begin:/%[_a-zA-Z0-9:]+%/},{className:"symbol",begin:/\\[\\nt$%,()]/},{ +className:"symbol",begin:/\\u[a-fA-F0-9]{4}/}]})})() +;hljs.registerLanguage("taggerscript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js new file mode 100644 index 0000000..b2c7571 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js @@ -0,0 +1,7 @@ +/*! `tap` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Test Anything Protocol", +case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{ +begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:/---$/, +end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number", +begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}] +}]})})();hljs.registerLanguage("tap",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js new file mode 100644 index 0000000..0b2930b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js @@ -0,0 +1,15 @@ +/*! `tcl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,t=/[a-zA-Z_][a-zA-Z0-9_]*/,r={className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{name:"Tcl", +aliases:["tk"], +keywords:["after","append","apply","array","auto_execok","auto_import","auto_load","auto_mkindex","auto_mkindex_old","auto_qualify","auto_reset","bgerror","binary","break","catch","cd","chan","clock","close","concat","continue","dde","dict","encoding","eof","error","eval","exec","exit","expr","fblocked","fconfigure","fcopy","file","fileevent","filename","flush","for","foreach","format","gets","glob","global","history","http","if","incr","info","interp","join","lappend|10","lassign|10","lindex|10","linsert|10","list","llength|10","load","lrange|10","lrepeat|10","lreplace|10","lreverse|10","lsearch|10","lset|10","lsort|10","mathfunc","mathop","memory","msgcat","namespace","open","package","parray","pid","pkg::create","pkg_mkIndex","platform","platform::shell","proc","puts","pwd","read","refchan","regexp","registry","regsub|10","rename","return","safe","scan","seek","set","socket","source","split","string","subst","switch","tcl_endOfWord","tcl_findLibrary","tcl_startOfNextWord","tcl_startOfPreviousWord","tcl_wordBreakAfter","tcl_wordBreakBefore","tcltest","tclvars","tell","time","tm","trace","unknown","unload","unset","update","uplevel","upvar","variable","vwait","while"], +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{className:"variable",variants:[{ +begin:a.concat(/\$/,a.optional(/::/),t,"(::",t,")*")},{ +begin:"\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"\\}",contains:[r]}]},{ +className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r]}}})() +;hljs.registerLanguage("tcl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js new file mode 100644 index 0000000..25de52e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js @@ -0,0 +1,12 @@ +/*! `thrift` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=["bool","byte","i16","i32","i64","double","string","binary"];return{ +name:"Thrift",keywords:{ +keyword:["namespace","const","typedef","struct","enum","service","exception","void","oneway","set","list","map","required","optional"], +type:t,literal:"true false"}, +contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"class",beginKeywords:"struct enum service exception",end:/\{/, +illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0, +excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",keywords:{ +type:[...t,"set","list","map"]},end:">",contains:["self"]}]}}})() +;hljs.registerLanguage("thrift",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js new file mode 100644 index 0000000..efe9449 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js @@ -0,0 +1,19 @@ +/*! `tp` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var O=(()=>{"use strict";return O=>{const e={className:"number", +begin:"[1-9][0-9]*",relevance:0},R={className:"symbol",begin:":[^\\]]+"};return{ +name:"TP",keywords:{ +keyword:["ABORT","ACC","ADJUST","AND","AP_LD","BREAK","CALL","CNT","COL","CONDITION","CONFIG","DA","DB","DIV","DETECT","ELSE","END","ENDFOR","ERR_NUM","ERROR_PROG","FINE","FOR","GP","GUARD","INC","IF","JMP","LINEAR_MAX_SPEED","LOCK","MOD","MONITOR","OFFSET","Offset","OR","OVERRIDE","PAUSE","PREG","PTH","RT_LD","RUN","SELECT","SKIP","Skip","TA","TB","TO","TOOL_OFFSET","Tool_Offset","UF","UT","UFRAME_NUM","UTOOL_NUM","UNLOCK","WAIT","X","Y","Z","W","P","R","STRLEN","SUBSTR","FINDSTR","VOFFSET","PROG","ATTR","MN","POS"], +literal:["ON","OFF","max_speed","LPOS","JPOS","ENABLE","DISABLE","START","STOP","RESET"] +},contains:[{className:"built_in", +begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[", +end:"\\]",contains:["self",e,R]},{className:"built_in", +begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]", +contains:["self",e,O.QUOTE_STRING_MODE,R]},{className:"keyword", +begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword", +begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword", +begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{ +className:"number", +begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0 +},O.COMMENT("//","[;$]"),O.COMMENT("!","[;$]"),O.COMMENT("--eg:","$"),O.QUOTE_STRING_MODE,{ +className:"string",begin:"'",end:"'"},O.C_NUMBER_MODE,{className:"variable", +begin:"\\$[A-Za-z0-9_]+"}]}}})();hljs.registerLanguage("tp",O)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js new file mode 100644 index 0000000..23e2abf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js @@ -0,0 +1,15 @@ +/*! `twig` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +var a="attribute block constant cycle date dump include max min parent random range source template_from_string",n={ +beginKeywords:a,keywords:{name:a},relevance:0,contains:[{className:"params", +begin:"\\(",end:"\\)"}]},t={begin:/\|[A-Za-z_]+:?/, +keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode", +contains:[n] +},s="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with" +;return s=s+" "+s.split(" ").map((e=>"end"+e)).join(" "),{name:"Twig", +aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{#/,/#\}/),{className:"template-tag",begin:/\{%/, +end:/%\}/,contains:[{className:"name",begin:/\w+/,keywords:s,starts:{ +endsWithParent:!0,contains:[t,n],relevance:0}}]},{className:"template-variable", +begin:/\{\{/,end:/\}\}/,contains:["self",t,n]}]}}})() +;hljs.registerLanguage("twig",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js new file mode 100644 index 0000000..34b48be --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js @@ -0,0 +1,92 @@ +/*! `typescript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s) +;function o(o){const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const a=e[0].length+e.index,t=e.input[a] +;if("<"===t||","===t)return void n.ignoreMatch();let s +;">"===t&&(((e,{after:n})=>{const a="</"+e[0].slice(1) +;return-1!==e.input.indexOf(a,n)})(e,{after:a +})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch() +}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c +},u="\\.([0-9](_?[0-9])*)",m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={ +className:"number",variants:[{ +begin:`(\\b(${m})((${u})|\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{ +begin:`\\b(${m})\\b((${u})\\b|\\.)?|(${u})\\b`},{ +begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ +begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ +begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{", +end:"\\}",keywords:g,contains:[]},A={begin:"html`",end:"",starts:{end:"`", +returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},p={ +begin:"css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={className:"string", +begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,y]},f={className:"comment", +variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ +begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, +excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)", +endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] +}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] +},N=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,E];y.contains=N.concat({ +begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(N)}) +;const h=[].concat(f,y.contains),v=h.concat([{begin:/\(/,end:/\)/,keywords:g, +contains:["self"].concat(h)}]),S={className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:v},w={variants:[{ +match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,l.concat(d,"(",l.concat(/\./,d),")*")], +scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ +match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0, +match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/), +className:"title.class",keywords:{_:[...t,...s]}},x={variants:[{ +match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], +className:{1:"keyword",3:"title.function"},label:"func.def",contains:[S], +illegal:/%/},O={ +match:l.concat(/\b/,(k=[...r,"super"],l.concat("(?!",k.join("|"),")")),d,l.lookahead(/\(/)), +className:"title.function",relevance:0};var k;const I={ +begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d, +excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},C={ +match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"}, +contains:[{begin:/\(\)/},S] +},T="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",M={ +match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,l.lookahead(T)],className:{ +1:"keyword",3:"title.function"},contains:[S]};return{name:"Javascript", +aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{PARAMS_CONTAINS:v, +CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[o.SHEBANG({label:"shebang", +binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,f,E,R,{className:"attr", +begin:d+l.lookahead(":"),relevance:0},M,{ +begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[f,o.REGEXP_MODE,{ +className:"function",begin:T,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:g,contains:v}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:"</>"},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, +"on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{ +begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},x,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:d, +className:"title.function"})]},{match:/\.\.\./,relevance:0},I,{match:"\\$"+d, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[S]},O,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},w,C,{match:/\$[(.]/}]}}return t=>{ +const s=o(t),r=["any","void","number","boolean","string","object","never","enum"],l={ +beginKeywords:"namespace",end:/\{/,excludeEnd:!0, +contains:[s.exports.CLASS_REFERENCE]},d={beginKeywords:"interface",end:/\{/, +excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r}, +contains:[s.exports.CLASS_REFERENCE]},b={$pattern:e, +keyword:n.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]), +literal:a,built_in:i.concat(r),"variable.language":c},g={className:"meta", +begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},u=(e,n,a)=>{ +const t=e.contains.findIndex((e=>e.label===n)) +;if(-1===t)throw Error("can not find mode to replace");e.contains.splice(t,1,a)} +;return Object.assign(s.keywords,b), +s.exports.PARAMS_CONTAINS.push(g),s.contains=s.contains.concat([g,l,d]), +u(s,"shebang",t.SHEBANG()),u(s,"use_strict",{className:"meta",relevance:10, +begin:/^\s*['"]use strict['"]/ +}),s.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(s,{ +name:"TypeScript",aliases:["ts","tsx"]}),s}})() +;hljs.registerLanguage("typescript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js new file mode 100644 index 0000000..f15aeec --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js @@ -0,0 +1,9 @@ +/*! `vala` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Vala",keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$"}]})})();hljs.registerLanguage("vala",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js new file mode 100644 index 0000000..0231859 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js @@ -0,0 +1,25 @@ +/*! `vbnet` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,s=/\d{1,2}(:\d{1,2}){1,2}/,r={ +className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ +begin:n.concat(/# */,s,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{ +begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,s),/ *#/)}] +},l=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}] +}),o=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]}) +;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0, +classNameAliases:{label:"symbol"},keywords:{ +keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", +built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", +type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", +literal:"true false nothing"}, +illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{ +className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/, +end:/"/,illegal:/\n/,contains:[{begin:/""/}]},r,{className:"number",relevance:0, +variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ +},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{ +begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{ +className:"label",begin:/^\w+:/},l,o,{className:"meta", +begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, +end:/$/,keywords:{ +keyword:"const disable else elseif enable end externalsource if region then"}, +contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js new file mode 100644 index 0000000..f08bf24 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js @@ -0,0 +1,4 @@ +/*! `vbscript-html` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"VBScript in HTML", +subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]})})() +;hljs.registerLanguage("vbscript-html",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js new file mode 100644 index 0000000..f26722d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js @@ -0,0 +1,10 @@ +/*! `vbscript` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=e.regex,r=["lcase","month","vartype","instrrev","ubound","setlocale","getobject","rgb","getref","string","weekdayname","rnd","dateadd","monthname","now","day","minute","isarray","cbool","round","formatcurrency","conversions","csng","timevalue","second","year","space","abs","clng","timeserial","fixs","len","asc","isempty","maths","dateserial","atn","timer","isobject","filter","weekday","datevalue","ccur","isdate","instr","datediff","formatdatetime","replace","isnull","right","sgn","array","snumeric","log","cdbl","hex","chr","lbound","msgbox","ucase","getlocale","cos","cdate","cbyte","rtrim","join","hour","oct","typename","trim","strcomp","int","createobject","loadpicture","tan","formatnumber","mid","split","cint","sin","datepart","ltrim","sqr","time","derived","eval","date","formatpercent","exp","inputbox","left","ascw","chrw","regexp","cstr","err"] +;return{name:"VBScript",aliases:["vbs"],case_insensitive:!0,keywords:{ +keyword:["call","class","const","dim","do","loop","erase","execute","executeglobal","exit","for","each","next","function","if","then","else","on","error","option","explicit","new","private","property","let","get","public","randomize","redim","rem","select","case","set","stop","sub","while","wend","with","end","to","elseif","is","or","xor","and","not","class_initialize","class_terminate","default","preserve","in","me","byval","byref","step","resume","goto"], +built_in:["server","response","request","scriptengine","scriptenginebuildversion","scriptengineminorversion","scriptenginemajorversion"], +literal:["true","false","null","nothing","empty"]},illegal:"//",contains:[{ +begin:t.concat(t.either(...r),"\\s*\\("),relevance:0,keywords:{built_in:r} +},e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{ +relevance:0}),e.C_NUMBER_MODE]}}})();hljs.registerLanguage("vbscript",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js new file mode 100644 index 0000000..d27bebb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js @@ -0,0 +1,17 @@ +/*! `verilog` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,t=["begin_keywords","celldefine","default_nettype","default_decay_time","default_trireg_strength","define","delay_mode_distributed","delay_mode_path","delay_mode_unit","delay_mode_zero","else","elsif","end_keywords","endcelldefine","endif","ifdef","ifndef","include","line","nounconnected_drive","pragma","resetall","timescale","unconnected_drive","undef","undefineall"] +;return{name:"Verilog",aliases:["v","sv","svh"],case_insensitive:!1,keywords:{ +$pattern:/\$?[\w]+(\$[\w]+)*/, +keyword:["accept_on","alias","always","always_comb","always_ff","always_latch","and","assert","assign","assume","automatic","before","begin","bind","bins","binsof","bit","break","buf|0","bufif0","bufif1","byte","case","casex","casez","cell","chandle","checker","class","clocking","cmos","config","const","constraint","context","continue","cover","covergroup","coverpoint","cross","deassign","default","defparam","design","disable","dist","do","edge","else","end","endcase","endchecker","endclass","endclocking","endconfig","endfunction","endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram","endproperty","endspecify","endsequence","endtable","endtask","enum","event","eventually","expect","export","extends","extern","final","first_match","for","force","foreach","forever","fork","forkjoin","function","generate|5","genvar","global","highz0","highz1","if","iff","ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir","include","initial","inout","input","inside","instance","int","integer","interconnect","interface","intersect","join","join_any","join_none","large","let","liblist","library","local","localparam","logic","longint","macromodule","matches","medium","modport","module","nand","negedge","nettype","new","nexttime","nmos","nor","noshowcancelled","not","notif0","notif1","or","output","package","packed","parameter","pmos","posedge","primitive","priority","program","property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect","pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos","real","realtime","ref","reg","reject_on","release","repeat","restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1","s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence","shortint","shortreal","showcancelled","signed","small","soft","solve","specify","specparam","static","string","strong","strong0","strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on","table","tagged","task","this","throughout","time","timeprecision","timeunit","tran","tranif0","tranif1","tri","tri0","tri1","triand","trior","trireg","type","typedef","union","unique","unique0","unsigned","until","until_with","untyped","use","uwire","var","vectored","virtual","void","wait","wait_order","wand","weak","weak0","weak1","while","wildcard","wire","with","within","wor","xnor","xor"], +literal:["null"], +built_in:["$finish","$stop","$exit","$fatal","$error","$warning","$info","$realtime","$time","$printtimescale","$bitstoreal","$bitstoshortreal","$itor","$signed","$cast","$bits","$stime","$timeformat","$realtobits","$shortrealtobits","$rtoi","$unsigned","$asserton","$assertkill","$assertpasson","$assertfailon","$assertnonvacuouson","$assertoff","$assertcontrol","$assertpassoff","$assertfailoff","$assertvacuousoff","$isunbounded","$sampled","$fell","$changed","$past_gclk","$fell_gclk","$changed_gclk","$rising_gclk","$steady_gclk","$coverage_control","$coverage_get","$coverage_save","$set_coverage_db_name","$rose","$stable","$past","$rose_gclk","$stable_gclk","$future_gclk","$falling_gclk","$changing_gclk","$display","$coverage_get_max","$coverage_merge","$get_coverage","$load_coverage_db","$typename","$unpacked_dimensions","$left","$low","$increment","$clog2","$ln","$log10","$exp","$sqrt","$pow","$floor","$ceil","$sin","$cos","$tan","$countbits","$onehot","$isunknown","$fatal","$warning","$dimensions","$right","$high","$size","$asin","$acos","$atan","$atan2","$hypot","$sinh","$cosh","$tanh","$asinh","$acosh","$atanh","$countones","$onehot0","$error","$info","$random","$dist_chi_square","$dist_erlang","$dist_exponential","$dist_normal","$dist_poisson","$dist_t","$dist_uniform","$q_initialize","$q_remove","$q_exam","$async$and$array","$async$nand$array","$async$or$array","$async$nor$array","$sync$and$array","$sync$nand$array","$sync$or$array","$sync$nor$array","$q_add","$q_full","$psprintf","$async$and$plane","$async$nand$plane","$async$or$plane","$async$nor$plane","$sync$and$plane","$sync$nand$plane","$sync$or$plane","$sync$nor$plane","$system","$display","$displayb","$displayh","$displayo","$strobe","$strobeb","$strobeh","$strobeo","$write","$readmemb","$readmemh","$writememh","$value$plusargs","$dumpvars","$dumpon","$dumplimit","$dumpports","$dumpportson","$dumpportslimit","$writeb","$writeh","$writeo","$monitor","$monitorb","$monitorh","$monitoro","$writememb","$dumpfile","$dumpoff","$dumpall","$dumpflush","$dumpportsoff","$dumpportsall","$dumpportsflush","$fclose","$fdisplay","$fdisplayb","$fdisplayh","$fdisplayo","$fstrobe","$fstrobeb","$fstrobeh","$fstrobeo","$swrite","$swriteb","$swriteh","$swriteo","$fscanf","$fread","$fseek","$fflush","$feof","$fopen","$fwrite","$fwriteb","$fwriteh","$fwriteo","$fmonitor","$fmonitorb","$fmonitorh","$fmonitoro","$sformat","$sformatf","$fgetc","$ungetc","$fgets","$sscanf","$rewind","$ftell","$ferror"] +},contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{ +scope:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/\b((\d+'([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{ +begin:/\B(('([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{begin:/\b[0-9][0-9_]*/, +relevance:0}]},{scope:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{ +begin:"\\.\\w+",relevance:0}]},{scope:"variable.constant", +match:n.concat(/`/,n.either("__FILE__","__LINE__"))},{scope:"meta", +begin:n.concat(/`/,n.either(...t)),end:/$|\/\/|\/\*/,returnEnd:!0,keywords:t}]}} +})();hljs.registerLanguage("verilog",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js new file mode 100644 index 0000000..61c9bc7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js @@ -0,0 +1,14 @@ +/*! `vhdl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"VHDL",case_insensitive:!0, +keywords:{ +keyword:["abs","access","after","alias","all","and","architecture","array","assert","assume","assume_guarantee","attribute","begin","block","body","buffer","bus","case","component","configuration","constant","context","cover","disconnect","downto","default","else","elsif","end","entity","exit","fairness","file","for","force","function","generate","generic","group","guarded","if","impure","in","inertial","inout","is","label","library","linkage","literal","loop","map","mod","nand","new","next","nor","not","null","of","on","open","or","others","out","package","parameter","port","postponed","procedure","process","property","protected","pure","range","record","register","reject","release","rem","report","restrict","restrict_guarantee","return","rol","ror","select","sequence","severity","shared","signal","sla","sll","sra","srl","strong","subtype","then","to","transport","type","unaffected","units","until","use","variable","view","vmode","vprop","vunit","wait","when","while","with","xnor","xor"], +built_in:["boolean","bit","character","integer","time","delay_length","natural","positive","string","bit_vector","file_open_kind","file_open_status","std_logic","std_logic_vector","unsigned","signed","boolean_vector","integer_vector","std_ulogic","std_ulogic_vector","unresolved_unsigned","u_unsigned","unresolved_signed","u_signed","real_vector","time_vector"], +literal:["false","true","note","warning","error","failure","line","text","side","width"] +},illegal:/\{/, +contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{ +className:"number", +begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)", +relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'", +contains:[e.BACKSLASH_ESCAPE]},{className:"symbol", +begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]})})() +;hljs.registerLanguage("vhdl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js new file mode 100644 index 0000000..ac9441e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js @@ -0,0 +1,12 @@ +/*! `vim` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"Vim Script",keywords:{ +$pattern:/[!#@\w]+/, +keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank", +built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp" +},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'", +illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/ +},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]+/},{ +begin:[/\b(?:function|function!)/,/\s+/,e.IDENT_RE],className:{1:"keyword", +3:"title"},end:"$",relevance:0,contains:[{className:"params",begin:"\\(", +end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]})})() +;hljs.registerLanguage("vim",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js new file mode 100644 index 0000000..8b946ca --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js @@ -0,0 +1,14 @@ +/*! `wasm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{e.regex;const a=e.COMMENT(/\(;/,/;\)/) +;return a.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/, +keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"] +},contains:[e.COMMENT(/;;/,/$/),a,{match:[/(?:offset|align)/,/\s*/,/=/], +className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{ +match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{ +begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword", +3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/, +className:"type"},{className:"keyword", +match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ +},{className:"number",relevance:0, +match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ +}]}}})();hljs.registerLanguage("wasm",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js new file mode 100644 index 0000000..bf80d0f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js @@ -0,0 +1,30 @@ +/*! `wren` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,s=/[a-zA-Z]\w*/,t=["as","break","class","construct","continue","else","for","foreign","if","import","in","is","return","static","var","while"],c=["true","false","null"],n=["this","super"],r=["-","~",/\*/,"%",/\.\.\./,/\.\./,/\+/,"<<",">>",">=","<=","<",">",/\^/,/!=/,/!/,/\bis\b/,"==","&&","&",/\|\|/,/\|/,/\?:/,"="],i={ +relevance:0,match:a.concat(/\b(?!(if|while|for|else|super)\b)/,s,/(?=\s*[({])/), +className:"title.function"},o={ +match:a.concat(a.either(a.concat(/\b(?!(if|while|for|else|super)\b)/,s),a.either(...r)),/(?=\s*\([^)]+\)\s*\{)/), +className:"title.function",starts:{contains:[{begin:/\(/,end:/\)/,contains:[{ +relevance:0,scope:"params",match:s}]}]}},l={variants:[{ +match:[/class\s+/,s,/\s+is\s+/,s]},{match:[/class\s+/,s]}],scope:{ +2:"title.class",4:"title.class.inherited"},keywords:t},m={relevance:0, +match:a.either(...r),className:"operator"},b={className:"property", +begin:a.concat(/\./,a.lookahead(s)),end:s,excludeBegin:!0,relevance:0},h={ +relevance:0,match:a.concat(/\b_/,s),scope:"variable"},p={relevance:0, +match:/\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/,scope:"title.class",keywords:{ +_:["Bool","Class","Fiber","Fn","List","Map","Null","Num","Object","Range","Sequence","String","System"] +}},u=e.C_NUMBER_MODE,g={match:[s,/\s*/,/=/,/\s*/,/\(/,s,/\)\s*\{/],scope:{ +1:"title.function",3:"operator",6:"params"}},d=e.COMMENT(/\/\*\*/,/\*\//,{ +contains:[{match:/@[a-z]+/,scope:"doctag"},"self"]}),v={scope:"subst", +begin:/%\(/,end:/\)/,contains:[u,p,i,h,m]},f={scope:"string",begin:/"/,end:/"/, +contains:[v,{scope:"char.escape",variants:[{match:/\\\\|\\["0%abefnrtv]/},{ +match:/\\x[0-9A-F]{2}/},{match:/\\u[0-9A-F]{4}/},{match:/\\U[0-9A-F]{8}/}]}]} +;v.contains.push(f);const N=[...t,...n,...c],_={relevance:0, +match:a.concat("\\b(?!",N.join("|"),"\\b)",/[a-zA-Z_]\w*(?:[?!]|\b)/), +className:"variable"};return{name:"Wren",keywords:{keyword:t, +"variable.language":n,literal:c},contains:[{scope:"comment",variants:[{ +begin:[/#!?/,/[A-Za-z_]+(?=\()/],beginScope:{},keywords:{literal:c},contains:[], +end:/\)/},{begin:[/#!?/,/[A-Za-z_]+/],beginScope:{},end:/$/}]},u,f,{ +className:"string",begin:/"""/,end:/"""/ +},d,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,p,l,g,o,i,m,h,b,_]}}})() +;hljs.registerLanguage("wren",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js new file mode 100644 index 0000000..ff8945d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js @@ -0,0 +1,19 @@ +/*! `x86asm` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Intel x86 Assembly", +case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE, +keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63", +built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr", +meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__" +},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{ +begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b", +relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{ +begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b" +},{ +begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b" +}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'" +},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{ +begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{ +begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst", +begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{ +className:"meta",begin:/^\s*\.[\w_-]+/}]})})();hljs.registerLanguage("x86asm",s) +})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js new file mode 100644 index 0000000..ac42b64 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js @@ -0,0 +1,15 @@ +/*! `xl` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t={ +$pattern:/[a-zA-Z][a-zA-Z0-9_?]*/, +keyword:["if","then","else","do","while","until","for","loop","import","with","is","as","where","when","by","data","constant","integer","real","text","name","boolean","symbol","infix","prefix","postfix","block","tree"], +literal:["true","false","nil"], +built_in:["in","mod","rem","and","or","xor","not","abs","sign","floor","ceil","sqrt","sin","cos","tan","asin","acos","atan","exp","expm1","log","log2","log10","log1p","pi","at","text_length","text_range","text_find","text_replace","contains","page","slide","basic_slide","title_slide","title","subtitle","fade_in","fade_out","fade_at","clear_color","color","line_color","line_width","texture_wrap","texture_transform","texture","scale_?x","scale_?y","scale_?z?","translate_?x","translate_?y","translate_?z?","rotate_?x","rotate_?y","rotate_?z?","rectangle","circle","ellipse","sphere","path","line_to","move_to","quad_to","curve_to","theme","background","contents","locally","time","mouse_?x","mouse_?y","mouse_buttons"].concat(["ObjectLoader","Animate","MovieCredits","Slides","Filters","Shading","Materials","LensFlare","Mapping","VLCAudioVideo","StereoDecoder","PointCloud","NetworkAccess","RemoteControl","RegExp","ChromaKey","Snowfall","NodeJS","Speech","Charts"]) +},a={className:"string",begin:'"',end:'"',illegal:"\\n"},n={ +beginKeywords:"import",end:"$",keywords:t,contains:[a]},o={className:"function", +begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{ +starts:{endsWithParent:!0,keywords:t}})]};return{name:"XL",aliases:["tao"], +keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{ +className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string", +begin:"<<",end:">>"},o,n,{className:"number", +begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}} +})();hljs.registerLanguage("xl",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js new file mode 100644 index 0000000..b0bb61b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js @@ -0,0 +1,28 @@ +/*! `xml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,n=a.concat(/[A-Z_]/,a.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={ +endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr", +begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{ +className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{ +begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/, +relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin:/<![a-z]/,end:/>/,contains:[t,i,l,c]}]}]},e.COMMENT(/<!--/,/-->/,{ +relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},s,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a.concat(/</,a.lookahead(a.concat(n,a.either(/\/>/,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{ +className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ +className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}} +})();hljs.registerLanguage("xml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js new file mode 100644 index 0000000..a5e87bf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js @@ -0,0 +1,32 @@ +/*! `xquery` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"XQuery",aliases:["xpath","xq"], +case_insensitive:!1,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:["module","schema","namespace","boundary-space","preserve","no-preserve","strip","default","collation","base-uri","ordering","context","decimal-format","decimal-separator","copy-namespaces","empty-sequence","except","exponent-separator","external","grouping-separator","inherit","no-inherit","lax","minus-sign","per-mille","percent","schema-attribute","schema-element","strict","unordered","zero-digit","declare","import","option","function","validate","variable","for","at","in","let","where","order","group","by","return","if","then","else","tumbling","sliding","window","start","when","only","end","previous","next","stable","ascending","descending","allowing","empty","greatest","least","some","every","satisfies","switch","case","typeswitch","try","catch","and","or","to","union","intersect","instance","of","treat","as","castable","cast","map","array","delete","insert","into","replace","value","rename","copy","modify","update"], +type:["item","document-node","node","attribute","document","element","comment","namespace","namespace-node","processing-instruction","text","construction","xs:anyAtomicType","xs:untypedAtomic","xs:duration","xs:time","xs:decimal","xs:float","xs:double","xs:gYearMonth","xs:gYear","xs:gMonthDay","xs:gMonth","xs:gDay","xs:boolean","xs:base64Binary","xs:hexBinary","xs:anyURI","xs:QName","xs:NOTATION","xs:dateTime","xs:dateTimeStamp","xs:date","xs:string","xs:normalizedString","xs:token","xs:language","xs:NMTOKEN","xs:Name","xs:NCName","xs:ID","xs:IDREF","xs:ENTITY","xs:integer","xs:nonPositiveInteger","xs:negativeInteger","xs:long","xs:int","xs:short","xs:byte","xs:nonNegativeInteger","xs:unisignedLong","xs:unsignedInt","xs:unsignedShort","xs:unsignedByte","xs:positiveInteger","xs:yearMonthDuration","xs:dayTimeDuration"], +literal:["eq","ne","lt","le","gt","ge","is","self::","child::","descendant::","descendant-or-self::","attribute::","following::","following-sibling::","parent::","ancestor::","ancestor-or-self::","preceding::","preceding-sibling::","NaN"] +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^</$:'"-]\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\b/ +},{begin:/\blocal:/,end:/\(/,excludeEnd:!0},{begin:/\bzip:/, +end:/(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b/},{ +begin:/\b(?:util|db|functx|app|xdmp|xmldb):/,end:/\(/,excludeEnd:!0}]},{ +className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/, +relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{ +className:"number", +begin:/(\b0[0-7_]+)|(\b0x[0-9a-fA-F_]+)|(\b[1-9][0-9_]*(\.[0-9_]+)?)|[0_]\b/, +relevance:0},{className:"comment",begin:/\(:/,end:/:\)/,relevance:10,contains:[{ +className:"doctag",begin:/@\w+/}]},{className:"meta",begin:/%[\w\-:]+/},{ +className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/, +end:/;/},{ +beginKeywords:"element attribute comment document processing-instruction", +end:/\{/,excludeEnd:!0},{begin:/<([\w._:-]+)(\s+\S*=('|").*('|"))?>/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})();hljs.registerLanguage("xquery",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js new file mode 100644 index 0000000..cb79aae --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js @@ -0,0 +1,25 @@ +/*! `yaml` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/, +end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]", +contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{ +begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ +begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type", +begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:b}}})();hljs.registerLanguage("yaml",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js new file mode 100644 index 0000000..d678288 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js @@ -0,0 +1,18 @@ +/*! `zephir` grammar compiled for Highlight.js 11.3.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.APOS_STRING_MODE,{ +illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})] +},a=e.UNDERSCORE_TITLE_MODE,s={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE] +},i="namespace class interface use extends function return abstract final public protected private static deprecated throw try catch Exception echo empty isset instanceof unset let var new const self require if else elseif switch case default do while loop for continue break likely unlikely __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ array boolean float double integer object resource string char long unsigned bool int uint ulong uchar true false null undefined" +;return{name:"Zephir",aliases:["zep"],keywords:i, +contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(/\/\*/,/\*\//,{contains:[{ +className:"doctag",begin:/@[A-Za-z]+/}]}),{className:"string", +begin:/<<<['"]?\w+['"]?$/,end:/^\w+;/,contains:[e.BACKSLASH_ESCAPE]},{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +beginKeywords:"function fn",end:/[;{]/,excludeEnd:!0,illegal:/\$|\[|%/, +contains:[a,{className:"params",begin:/\(/,end:/\)/,keywords:i, +contains:["self",e.C_BLOCK_COMMENT_MODE,n,s]}]},{className:"class", +beginKeywords:"class interface",end:/\{/,excludeEnd:!0,illegal:/[:($"]/, +contains:[{beginKeywords:"extends implements"},a]},{beginKeywords:"namespace", +end:/;/,illegal:/[.']/,contains:[a]},{beginKeywords:"use",end:/;/,contains:[a] +},{begin:/=>/},n,s]}}})();hljs.registerLanguage("zephir",e)})(); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css new file mode 100644 index 0000000..7820d7d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css @@ -0,0 +1,7 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/.hljs{background:#2b2b2b;color:#f8f8f2}.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ffa07a}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#f5ab35}.hljs-attribute{color:gold}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#abe338}.hljs-section,.hljs-title{color:#00e0e0}.hljs-keyword,.hljs-selector-tag{color:#dcc6e0}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css new file mode 100644 index 0000000..8b5ab90 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css @@ -0,0 +1,7 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: a11y-light + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/.hljs{background:#fefefe;color:#545454}.hljs-comment,.hljs-quote{color:#696969}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#d91e18}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#aa5d00}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:green}.hljs-section,.hljs-title{color:#007faa}.hljs-keyword,.hljs-selector-tag{color:#7928a1}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css new file mode 100644 index 0000000..bdbeed4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css @@ -0,0 +1,20 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: Agate + Author: (c) Taufik Nurrohman <hi@taufik-nurrohman.com> + Maintainer: @taufik-nurrohman + Updated: 2021-04-24 + + #333 + #62c8f3 + #7bd694 + #888 + #a2fca2 + #ade5fc + #b8d8a2 + #c6b4f0 + #d36363 + #fc9b9b + #fcc28c + #ffa + #fff +*/.hljs{background:#333;color:#fff}.hljs-doctag,.hljs-meta-keyword,.hljs-name,.hljs-strong{font-weight:700}.hljs-code,.hljs-emphasis{font-style:italic}.hljs-section,.hljs-tag{color:#62c8f3}.hljs-selector-class,.hljs-selector-id,.hljs-template-variable,.hljs-variable{color:#ade5fc}.hljs-meta-string,.hljs-string{color:#a2fca2}.hljs-attr,.hljs-quote,.hljs-selector-attr{color:#7bd694}.hljs-tag .hljs-attr{color:inherit}.hljs-attribute,.hljs-title,.hljs-type{color:#ffa}.hljs-number,.hljs-symbol{color:#d36363}.hljs-bullet,.hljs-template-tag{color:#b8d8a2}.hljs-built_in,.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#fcc28c}.hljs-code,.hljs-comment,.hljs-formula{color:#888}.hljs-link,.hljs-regexp,.hljs-selector-pseudo{color:#c6b4f0}.hljs-meta{color:#fc9b9b}.hljs-deletion{background:#fc9b9b;color:#333}.hljs-addition{background:#a2fca2;color:#333}.hljs-subst{color:#fff}.hljs a{color:inherit}.hljs a:focus,.hljs a:hover{color:inherit;text-decoration:underline}.hljs mark{background:#555;color:inherit} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css new file mode 100644 index 0000000..ffc7f8c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css @@ -0,0 +1,9 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: An Old Hope – Star Wars Syntax + Author: (c) Gustavo Costa <gusbemacbe@gmail.com> + Maintainer: @gusbemacbe + + Original theme - Ocean Dark Theme – by https://github.com/gavsiu + Based on Jesse Leite's Atom syntax theme 'An Old Hope' + https://github.com/JesseLeite/an-old-hope-syntax-atom +*/.hljs{background:#1c1d21;color:#c0c5ce}.hljs-comment,.hljs-quote{color:#b6b18b}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#eb3c54}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#e7ce56}.hljs-attribute{color:#ee7c2b}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#4fb4d7}.hljs-section,.hljs-title{color:#78bb65}.hljs-keyword,.hljs-selector-tag{color:#b45ea4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css new file mode 100644 index 0000000..7fbe783 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#282b2e}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#6897bb}.hljs-deletion,.hljs-keyword,.hljs-selector-tag{color:#cc7832}.hljs-link,.hljs-template-variable,.hljs-variable{color:#629755}.hljs-comment,.hljs-quote{color:grey}.hljs-meta{color:#bbb529}.hljs-addition,.hljs-attribute,.hljs-string{color:#6a8759}.hljs-section,.hljs-title,.hljs-type{color:#ffc66d}.hljs-name,.hljs-selector-class,.hljs-selector-id{color:#e8bf6a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css new file mode 100644 index 0000000..cadb130 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#434f54}.hljs-subst{color:#434f54}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#00979d}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-literal{color:#d35400}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#00979d}.hljs-deletion,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#005c5f}.hljs-comment{color:rgba(149,165,166,.8)}.hljs-meta .hljs-keyword{color:#728e00}.hljs-meta{color:#434f54}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-function{color:#728e00}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-number{color:#8a7b52} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css new file mode 100644 index 0000000..8dcdc74 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:#aaa}.hljs-subst{color:#aaa}.hljs-section{color:#fff}.hljs-comment,.hljs-meta,.hljs-quote{color:#444}.hljs-bullet,.hljs-regexp,.hljs-string,.hljs-symbol{color:#fc3}.hljs-addition,.hljs-number{color:#0c6}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-template-variable,.hljs-type{color:#32aaee}.hljs-keyword,.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag{color:#64a}.hljs-deletion,.hljs-template-tag,.hljs-title,.hljs-variable{color:#b16}.hljs-doctag,.hljs-section,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css new file mode 100644 index 0000000..3c9fe03 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-link,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#888}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#ccc}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css new file mode 100644 index 0000000..9296216 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-keyword,.hljs-operator,.hljs-pattern-match{color:#f92672}.hljs-function,.hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-function .hljs-params{color:#a6e22e}.hljs-function .hljs-params .hljs-typing{color:#fd971f}.hljs-module-access .hljs-module{color:#7e57c2}.hljs-constructor{color:#e2b93d}.hljs-constructor .hljs-string{color:#9ccc65}.hljs-comment,.hljs-quote{color:#b18eb1;font-style:italic}.hljs-doctag,.hljs-formula{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css new file mode 100644 index 0000000..5344ee3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css new file mode 100644 index 0000000..df0268a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css new file mode 100644 index 0000000..55cff40 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css @@ -0,0 +1,7 @@ +/*! + Theme: 3024 + Author: Jan T. Sott (http://github.com/idleberg) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a5a2a2;background:#090300}.hljs ::selection,.hljs::selection{background-color:#4a4543;color:#a5a2a2}.hljs-comment{color:#5c5855}.hljs-tag{color:#807d7c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a5a2a2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#db2d20}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e8bbd0}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fded02}.hljs-strong{font-weight:700;color:#fded02}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#01a252}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b5e4f4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#01a0e4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a16a94}.hljs-emphasis{color:#a16a94;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cdab53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css new file mode 100644 index 0000000..44368e6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Apathy + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#81b5ac;background:#031a16}.hljs ::selection,.hljs::selection{background-color:#184e45;color:#81b5ac}.hljs-comment{color:#2b685e}.hljs-tag{color:#5f9c92}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#81b5ac}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#3e9688}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#3e7996}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#3e4c96}.hljs-strong{font-weight:700;color:#3e4c96}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#883e96}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#963e4c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#96883e}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4c963e}.hljs-emphasis{color:#4c963e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3e965b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css new file mode 100644 index 0000000..00dc982 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Apprentice + Author: romainl + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bcbcbc;background:#262626}.hljs ::selection,.hljs::selection{background-color:#333;color:#bcbcbc}.hljs-comment{color:#6c6c6c}.hljs-tag{color:#787878}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bcbcbc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff8700}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5f8787}.hljs-strong{font-weight:700;color:#5f8787}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87af87}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5f875f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ffffaf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#87afd7}.hljs-emphasis{color:#87afd7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5f87af}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css new file mode 100644 index 0000000..4403f21 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Ashes + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7ccd1;background:#1c2023}.hljs ::selection,.hljs::selection{background-color:#565e65;color:#c7ccd1}.hljs-comment{color:#747c84}.hljs-tag{color:#adb3ba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7ccd1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c7ae95}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c7c795}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aec795}.hljs-strong{font-weight:700;color:#aec795}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c7ae}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#95aec7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ae95c7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c795ae}.hljs-emphasis{color:#c795ae;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c79595}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css new file mode 100644 index 0000000..25fcdf4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Cave Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#585260;background:#efecf4}.hljs ::selection,.hljs::selection{background-color:#8b8792;color:#585260}.hljs-comment{color:#7e7887}.hljs-tag{color:#655f6d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#585260}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css new file mode 100644 index 0000000..e51fe0a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Cave + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8b8792;background:#19171c}.hljs ::selection,.hljs::selection{background-color:#585260;color:#8b8792}.hljs-comment{color:#655f6d}.hljs-tag{color:#7e7887}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8b8792}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css new file mode 100644 index 0000000..f310ce1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Dune Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6e6b5e;background:#fefbec}.hljs ::selection,.hljs::selection{background-color:#a6a28c;color:#6e6b5e}.hljs-comment{color:#999580}.hljs-tag{color:#7d7a68}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6e6b5e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css new file mode 100644 index 0000000..05b260c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Dune + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a6a28c;background:#20201d}.hljs ::selection,.hljs::selection{background-color:#6e6b5e;color:#a6a28c}.hljs-comment{color:#7d7a68}.hljs-tag{color:#999580}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a6a28c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css new file mode 100644 index 0000000..90f8be4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Estuary Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5f5e4e;background:#f4f3ec}.hljs ::selection,.hljs::selection{background-color:#929181;color:#5f5e4e}.hljs-comment{color:#878573}.hljs-tag{color:#6c6b5a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5f5e4e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ba6236}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ae7313}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a5980d}.hljs-strong{font-weight:700;color:#a5980d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7d9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5b9d48}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#36a166}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#5f9182}.hljs-emphasis{color:#5f9182;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9d6c7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css new file mode 100644 index 0000000..b088f77 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Estuary + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#929181;background:#22221b}.hljs ::selection,.hljs::selection{background-color:#5f5e4e;color:#929181}.hljs-comment{color:#6c6b5a}.hljs-tag{color:#878573}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#929181}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ba6236}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ae7313}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a5980d}.hljs-strong{font-weight:700;color:#a5980d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7d9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5b9d48}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#36a166}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#5f9182}.hljs-emphasis{color:#5f9182;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9d6c7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css new file mode 100644 index 0000000..a54242d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Forest Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#68615e;background:#f1efee}.hljs ::selection,.hljs::selection{background-color:#a8a19f;color:#68615e}.hljs-comment{color:#9c9491}.hljs-tag{color:#766e6b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#68615e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f22c40}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5320}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c38418}.hljs-strong{font-weight:700;color:#c38418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7b9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3d97b8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#407ee7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6666ea}.hljs-emphasis{color:#6666ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c33ff3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css new file mode 100644 index 0000000..e6ca2d5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Forest + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a8a19f;background:#1b1918}.hljs ::selection,.hljs::selection{background-color:#68615e;color:#a8a19f}.hljs-comment{color:#766e6b}.hljs-tag{color:#9c9491}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a8a19f}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f22c40}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5320}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c38418}.hljs-strong{font-weight:700;color:#c38418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7b9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3d97b8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#407ee7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6666ea}.hljs-emphasis{color:#6666ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c33ff3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css new file mode 100644 index 0000000..dc38ca0 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Heath Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#695d69;background:#f7f3f7}.hljs ::selection,.hljs::selection{background-color:#ab9bab;color:#695d69}.hljs-comment{color:#9e8f9e}.hljs-tag{color:#776977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#695d69}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca402b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a65926}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8a35}.hljs-strong{font-weight:700;color:#bb8a35}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#918b3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#159393}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#516aec}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7b59c0}.hljs-emphasis{color:#7b59c0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c3c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css new file mode 100644 index 0000000..4656ef6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Heath + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ab9bab;background:#1b181b}.hljs ::selection,.hljs::selection{background-color:#695d69;color:#ab9bab}.hljs-comment{color:#776977}.hljs-tag{color:#9e8f9e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ab9bab}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca402b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a65926}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8a35}.hljs-strong{font-weight:700;color:#bb8a35}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#918b3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#159393}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#516aec}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7b59c0}.hljs-emphasis{color:#7b59c0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c3c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css new file mode 100644 index 0000000..c1252e3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Lakeside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#516d7b;background:#ebf8ff}.hljs ::selection,.hljs::selection{background-color:#7ea2b4;color:#516d7b}.hljs-comment{color:#7195a8}.hljs-tag{color:#5a7b8c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#516d7b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d22d72}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#935c25}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8a8a0f}.hljs-strong{font-weight:700;color:#8a8a0f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#568c3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d8f6f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#257fad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6b6bb8}.hljs-emphasis{color:#6b6bb8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b72dd2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css new file mode 100644 index 0000000..efcb981 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Lakeside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#7ea2b4;background:#161b1d}.hljs ::selection,.hljs::selection{background-color:#516d7b;color:#7ea2b4}.hljs-comment{color:#5a7b8c}.hljs-tag{color:#7195a8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#7ea2b4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d22d72}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#935c25}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8a8a0f}.hljs-strong{font-weight:700;color:#8a8a0f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#568c3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d8f6f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#257fad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6b6bb8}.hljs-emphasis{color:#6b6bb8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b72dd2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css new file mode 100644 index 0000000..44362de --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Plateau Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#585050;background:#f4ecec}.hljs ::selection,.hljs::selection{background-color:#8a8585;color:#585050}.hljs-comment{color:#7e7777}.hljs-tag{color:#655d5d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#585050}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca4949}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45a3c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4b8b8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5485b6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7272ca}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8464c4}.hljs-emphasis{color:#8464c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bd5187}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css new file mode 100644 index 0000000..7051d01 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Plateau + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8a8585;background:#1b1818}.hljs ::selection,.hljs::selection{background-color:#585050;color:#8a8585}.hljs-comment{color:#655d5d}.hljs-tag{color:#7e7777}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8a8585}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca4949}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45a3c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4b8b8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5485b6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7272ca}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8464c4}.hljs-emphasis{color:#8464c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bd5187}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css new file mode 100644 index 0000000..4d63650 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Savanna Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#526057;background:#ecf4ee}.hljs ::selection,.hljs::selection{background-color:#87928a;color:#526057}.hljs-comment{color:#78877d}.hljs-tag{color:#5f6d64}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#526057}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b16139}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9f713c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#489963}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1c9aa0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#478c90}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#55859b}.hljs-emphasis{color:#55859b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#867469}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css new file mode 100644 index 0000000..286c1d9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Savanna + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#87928a;background:#171c19}.hljs ::selection,.hljs::selection{background-color:#526057;color:#87928a}.hljs-comment{color:#5f6d64}.hljs-tag{color:#78877d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#87928a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b16139}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9f713c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#489963}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1c9aa0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#478c90}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#55859b}.hljs-emphasis{color:#55859b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#867469}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css new file mode 100644 index 0000000..524a951 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Seaside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e6e5e;background:#f4fbf4}.hljs ::selection,.hljs::selection{background-color:#8ca68c;color:#5e6e5e}.hljs-comment{color:#809980}.hljs-tag{color:#687d68}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e6e5e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e6193c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#87711d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#98981b}.hljs-strong{font-weight:700;color:#98981b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29a329}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1999b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d62f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad2bee}.hljs-emphasis{color:#ad2bee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e619c3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css new file mode 100644 index 0000000..f1b2fe0 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Seaside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8ca68c;background:#131513}.hljs ::selection,.hljs::selection{background-color:#5e6e5e;color:#8ca68c}.hljs-comment{color:#687d68}.hljs-tag{color:#809980}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8ca68c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e6193c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#87711d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#98981b}.hljs-strong{font-weight:700;color:#98981b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29a329}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1999b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d62f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad2bee}.hljs-emphasis{color:#ad2bee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e619c3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css new file mode 100644 index 0000000..8e038f5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Sulphurpool Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e6687;background:#f5f7ff}.hljs ::selection,.hljs::selection{background-color:#979db4;color:#5e6687}.hljs-comment{color:#898ea4}.hljs-tag{color:#6b7394}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e6687}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c94922}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c76b29}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c08b30}.hljs-strong{font-weight:700;color:#c08b30}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ac9739}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#22a2c9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d8fd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6679cc}.hljs-emphasis{color:#6679cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9c637a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css new file mode 100644 index 0000000..519aa38 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atelier Sulphurpool + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#979db4;background:#202746}.hljs ::selection,.hljs::selection{background-color:#5e6687;color:#979db4}.hljs-comment{color:#6b7394}.hljs-tag{color:#898ea4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#979db4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c94922}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c76b29}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c08b30}.hljs-strong{font-weight:700;color:#c08b30}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ac9739}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#22a2c9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d8fd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6679cc}.hljs-emphasis{color:#6679cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9c637a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css new file mode 100644 index 0000000..62a8848 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Atlas + Author: Alex Lende (https://ajlende.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a1a19a;background:#002635}.hljs ::selection,.hljs::selection{background-color:#517f8d;color:#a1a19a}.hljs-comment{color:#6c8b91}.hljs-tag{color:#869696}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a1a19a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5a67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f08e48}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcc1b}.hljs-strong{font-weight:700;color:#ffcc1b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7fc06e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#14747e}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5dd7b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9a70a4}.hljs-emphasis{color:#9a70a4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c43060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css new file mode 100644 index 0000000..234cb64 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Bespin + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8a8986;background:#28211c}.hljs ::selection,.hljs::selection{background-color:#5e5d5c;color:#8a8986}.hljs-comment{color:#666}.hljs-tag{color:#797977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8a8986}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf6a4c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cf7d34}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9ee98}.hljs-strong{font-weight:700;color:#f9ee98}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54be0d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#afc4db}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5ea6ea}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b859d}.hljs-emphasis{color:#9b859d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#937121}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css new file mode 100644 index 0000000..b315d96 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Bathory) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e78a53}.hljs-strong{font-weight:700;color:#e78a53}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#fbcb97}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css new file mode 100644 index 0000000..7729779 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Burzum) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9ba}.hljs-strong{font-weight:700;color:#9ba}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#dec}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css new file mode 100644 index 0000000..7bffc28 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Dark Funeral) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5f81a5}.hljs-strong{font-weight:700;color:#5f81a5}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d0dfee}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css new file mode 100644 index 0000000..0fbfafe --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Gorgoroth) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8c7f70}.hljs-strong{font-weight:700;color:#8c7f70}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9b8d7f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css new file mode 100644 index 0000000..1cbd00a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Immortal) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#567}.hljs-strong{font-weight:700;color:#567}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css new file mode 100644 index 0000000..1ca9ceb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Khold) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#974b46}.hljs-strong{font-weight:700;color:#974b46}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#eceee3}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css new file mode 100644 index 0000000..1ecf596 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Marduk) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#626b67}.hljs-strong{font-weight:700;color:#626b67}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5aaa7}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css new file mode 100644 index 0000000..d031b52 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Mayhem) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#eecc6c}.hljs-strong{font-weight:700;color:#eecc6c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f3ecd4}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css new file mode 100644 index 0000000..9b991b6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Nile) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#775}.hljs-strong{font-weight:700;color:#775}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css new file mode 100644 index 0000000..17e9ccb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal (Venom) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#79241f}.hljs-strong{font-weight:700;color:#79241f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f8f7f2}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css new file mode 100644 index 0000000..b44199d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Black Metal + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06666}.hljs-strong{font-weight:700;color:#a06666}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d99}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css new file mode 100644 index 0000000..cf2257d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Brewer + Author: Timothée Poisot (http://github.com/tpoisot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b7b8b9;background:#0c0d0e}.hljs ::selection,.hljs::selection{background-color:#515253;color:#b7b8b9}.hljs-comment{color:#737475}.hljs-tag{color:#959697}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b7b8b9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e31a1c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e6550d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dca060}.hljs-strong{font-weight:700;color:#dca060}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#31a354}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#80b1d3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3182bd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#756bb1}.hljs-emphasis{color:#756bb1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b15928}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css new file mode 100644 index 0000000..0e104ef --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Bright + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e0e0;background:#000}.hljs ::selection,.hljs::selection{background-color:#505050;color:#e0e0e0}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#d0d0d0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0e0e0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb0120}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc6d24}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fda331}.hljs-strong{font-weight:700;color:#fda331}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1c659}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#76c7b7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6fb3d2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d381c3}.hljs-emphasis{color:#d381c3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css new file mode 100644 index 0000000..2a1a8e8 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Brogrammer + Author: Vik Ramanujam (http://github.com/piggyslasher) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#4e5ab7;background:#1f1f1f}.hljs ::selection,.hljs::selection{background-color:#2dc55e;color:#4e5ab7}.hljs-comment{color:#ecba0f}.hljs-tag{color:#2a84d2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#4e5ab7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d6dbe5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#de352e}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#1dd361}.hljs-strong{font-weight:700;color:#1dd361}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f3bd09}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1081d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5350b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#0f7ddb}.hljs-emphasis{color:#0f7ddb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#fff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css new file mode 100644 index 0000000..18e798d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Brush Trees Dark + Author: Abraham White <abelincoln.white@gmail.com> + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b0c5c8;background:#485867}.hljs ::selection,.hljs::selection{background-color:#6d828e;color:#b0c5c8}.hljs-comment{color:#8299a1}.hljs-tag{color:#98afb5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b0c5c8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b38686}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d8bba2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aab386}.hljs-strong{font-weight:700;color:#aab386}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87b386}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86b3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#868cb3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b386b2}.hljs-emphasis{color:#b386b2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b39f9f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css new file mode 100644 index 0000000..ebc2b58 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Brush Trees + Author: Abraham White <abelincoln.white@gmail.com> + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6d828e;background:#e3efef}.hljs ::selection,.hljs::selection{background-color:#b0c5c8;color:#6d828e}.hljs-comment{color:#98afb5}.hljs-tag{color:#8299a1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6d828e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b38686}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d8bba2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aab386}.hljs-strong{font-weight:700;color:#aab386}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87b386}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86b3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#868cb3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b386b2}.hljs-emphasis{color:#b386b2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b39f9f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css new file mode 100644 index 0000000..a7bbe07 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Chalk + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb9fb1}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eda987}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ddb26f}.hljs-strong{font-weight:700;color:#ddb26f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#acc267}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#12cfc0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6fc2ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#e1a3ee}.hljs-emphasis{color:#e1a3ee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#deaf8f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css new file mode 100644 index 0000000..e34e78b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Circus + Author: Stephan Boyer (https://github.com/stepchowfun) and Esther Wang (https://github.com/ewang12) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a7a7a7;background:#191919}.hljs ::selection,.hljs::selection{background-color:#303030;color:#a7a7a7}.hljs-comment{color:#5f5a60}.hljs-tag{color:#505050}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a7a7a7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc657d}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#4bb1a7}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c3ba63}.hljs-strong{font-weight:700;color:#c3ba63}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#84b97c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4bb1a7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#639ee4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b888e2}.hljs-emphasis{color:#b888e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b888e2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css new file mode 100644 index 0000000..c9b4c40 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Classic Dark + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ac4142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28445}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#90a959}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75b5aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6a9fb5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa759f}.hljs-emphasis{color:#aa759f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8f5536}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css new file mode 100644 index 0000000..67f392f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Classic Light + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#303030;background:#f5f5f5}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#303030}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#505050}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#303030}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ac4142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28445}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#90a959}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75b5aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6a9fb5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa759f}.hljs-emphasis{color:#aa759f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8f5536}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css new file mode 100644 index 0000000..db20ed4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Codeschool + Author: blockloop + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9ea7a6;background:#232c31}.hljs ::selection,.hljs::selection{background-color:#2a343a;color:#9ea7a6}.hljs-comment{color:#3f4944}.hljs-tag{color:#84898c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9ea7a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#2a5491}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#43820d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a03b1e}.hljs-strong{font-weight:700;color:#a03b1e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#237986}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b02f30}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#484d79}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c59820}.hljs-emphasis{color:#c59820;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c98344}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css new file mode 100644 index 0000000..742aeeb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Colors + Author: mrmrs (http://clrs.cc) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bbb;background:#111}.hljs ::selection,.hljs::selection{background-color:#555;color:#bbb}.hljs-comment{color:#777}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bbb}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4136}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff851b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc00}.hljs-strong{font-weight:700;color:#ffdc00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2ecc40}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7fdbff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0074d9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b10dc9}.hljs-emphasis{color:#b10dc9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#85144b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css new file mode 100644 index 0000000..b3bffc3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Cupcake + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8b8198;background:#fbf1f2}.hljs ::selection,.hljs::selection{background-color:#d8d5dd;color:#8b8198}.hljs-comment{color:#bfb9c6}.hljs-tag{color:#a59daf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8b8198}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d57e85}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ebb790}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dcb16c}.hljs-strong{font-weight:700;color:#dcb16c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3b367}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#69a9a7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7297b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb99b4}.hljs-emphasis{color:#bb99b4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#baa58c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css new file mode 100644 index 0000000..abec520 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Cupertino + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#404040;background:#fff}.hljs ::selection,.hljs::selection{background-color:silver;color:#404040}.hljs-comment,.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#404040}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c41a15}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb8500}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#826b28}.hljs-strong{font-weight:700;color:#826b28}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#007400}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#318495}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a90d91}.hljs-emphasis{color:#a90d91;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#826b28}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css new file mode 100644 index 0000000..d9bf65d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css @@ -0,0 +1,7 @@ +/*! + Theme: DanQing + Author: Wenhan Zhu (Cosmos) (zhuwenhan950913@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0f0ef;background:#2d302f}.hljs ::selection,.hljs::selection{background-color:#5a605d;color:#e0f0ef}.hljs-comment{color:#9da8a3}.hljs-tag{color:#cad8d2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0f0ef}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f9906f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b38a61}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f0c239}.hljs-strong{font-weight:700;color:#f0c239}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8ab361}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#30dff3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#b0a4e3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#cca4e3}.hljs-emphasis{color:#cca4e3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ca6924}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css new file mode 100644 index 0000000..7824e83 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Darcula + Author: jetbrains + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#2b2b2b}.hljs ::selection,.hljs::selection{background-color:#323232;color:#a9b7c6}.hljs-comment{color:#606366}.hljs-tag{color:#a4a3a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a9b7c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#4eade5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#689757}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bbb529}.hljs-strong{font-weight:700;color:#bbb529}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6a8759}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#629755}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9876aa}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#cc7832}.hljs-emphasis{color:#cc7832;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:grey}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css new file mode 100644 index 0000000..de19c81 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Dark Violet + Author: ruler501 (https://github.com/ruler501/base16-darkviolet) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b08ae6;background:#000}.hljs ::selection,.hljs::selection{background-color:#432d59;color:#b08ae6}.hljs-comment{color:#593380}.hljs-tag{color:#0f0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b08ae6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a82ee6}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f29df2}.hljs-strong{font-weight:700;color:#f29df2}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4595e6}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#40dfff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4136d9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7e5ce6}.hljs-emphasis{color:#7e5ce6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a886bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css new file mode 100644 index 0000000..86c7f42 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css @@ -0,0 +1,7 @@ +/*! + Theme: darkmoss + Author: Gabriel Avanzi (https://github.com/avanzzzi) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7c7a5;background:#171e1f}.hljs ::selection,.hljs::selection{background-color:#373c3d;color:#c7c7a5}.hljs-comment{color:#555e5f}.hljs-tag{color:#818f80}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7c7a5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4658}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e6db74}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fdb11f}.hljs-strong{font-weight:700;color:#fdb11f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#499180}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#66d9ef}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#498091}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9bc0c8}.hljs-emphasis{color:#9bc0c8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d27b53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css new file mode 100644 index 0000000..b95a507 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Darktooth + Author: Jason Milkins (https://github.com/jasonm23) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a89984;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#504945;color:#a89984}.hljs-comment{color:#665c54}.hljs-tag{color:#928374}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a89984}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb543f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8625}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fac03b}.hljs-strong{font-weight:700;color:#fac03b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c085}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ba59b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0d6678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f4673}.hljs-emphasis{color:#8f4673;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a87322}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css new file mode 100644 index 0000000..82057b6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Decaf + Author: Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#777}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff7f7b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffbf70}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffd67c}.hljs-strong{font-weight:700;color:#ffd67c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#beda78}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#bed6ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#90bee1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#efb3f7}.hljs-emphasis{color:#efb3f7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff93b3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css new file mode 100644 index 0000000..eee7cd6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Default Dark + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d8d8d8;background:#181818}.hljs ::selection,.hljs::selection{background-color:#383838;color:#d8d8d8}.hljs-comment{color:#585858}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d8d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7ca88}.hljs-strong{font-weight:700;color:#f7ca88}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1b56c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86c1b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8baf}.hljs-emphasis{color:#ba8baf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css new file mode 100644 index 0000000..2b85d9c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Default Light + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7ca88}.hljs-strong{font-weight:700;color:#f7ca88}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1b56c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86c1b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8baf}.hljs-emphasis{color:#ba8baf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css new file mode 100644 index 0000000..801a545 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css @@ -0,0 +1,7 @@ +/*! + Theme: dirtysea + Author: Kahlil (Kal) Hodgson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#e0e0e0}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#000}.hljs-comment{color:#707070}.hljs-tag{color:#202020}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#000}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#840000}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#006565}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#755b00}.hljs-strong{font-weight:700;color:#755b00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#730073}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#755b00}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#007300}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#000090}.hljs-emphasis{color:#000090;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#755b00}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css new file mode 100644 index 0000000..729bbbf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Dracula + Author: Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (http://github.com/dracula) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e9e9f4;background:#282936}.hljs ::selection,.hljs::selection{background-color:#4d4f68;color:#e9e9f4}.hljs-comment{color:#626483}.hljs-tag{color:#62d6e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e9e9f4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ea51b2}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45bcf}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#00f769}.hljs-strong{font-weight:700;color:#00f769}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ebff87}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a1efe4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#62d6e8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b45bcf}.hljs-emphasis{color:#b45bcf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#00f769}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css new file mode 100644 index 0000000..9e2ddb2 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Edge Dark + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b7bec9;background:#262729}.hljs ::selection,.hljs::selection{background-color:#b7bec9;color:#b7bec9}.hljs-comment{color:#3e4249}.hljs-tag{color:#73b3e7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b7bec9}.hljs-operator{opacity:.7}.hljs-attr,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-symbol,.hljs-template-variable,.hljs-variable,.hljs-variable.constant_{color:#e77171}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dbb774}.hljs-strong{font-weight:700;color:#dbb774}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1bf78}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5ebaa5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#73b3e7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d390e7}.hljs-emphasis{color:#d390e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5ebaa5}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css new file mode 100644 index 0000000..940401f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Edge Light + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e646f;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#d69822;color:#5e646f}.hljs-comment{color:#5e646f}.hljs-tag{color:#6587bf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e646f}.hljs-operator{opacity:.7}.hljs-attr,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-symbol,.hljs-template-variable,.hljs-variable,.hljs-variable.constant_{color:#db7070}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d69822}.hljs-strong{font-weight:700;color:#d69822}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7c9f4b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#509c93}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6587bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b870ce}.hljs-emphasis{color:#b870ce;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#509c93}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css new file mode 100644 index 0000000..0ef9e1e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Eighties + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d3d0c8;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#d3d0c8}.hljs-comment{color:#747369}.hljs-tag{color:#a09f93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d3d0c8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2777a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc6}.hljs-strong{font-weight:700;color:#fc6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9c9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6cc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c9c}.hljs-emphasis{color:#c9c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d27b53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css new file mode 100644 index 0000000..eb5426c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Embers + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a39a90;background:#16130f}.hljs ::selection,.hljs::selection{background-color:#433b32;color:#a39a90}.hljs-comment{color:#5a5047}.hljs-tag{color:#8a8075}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a39a90}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#826d57}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#828257}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#6d8257}.hljs-strong{font-weight:700;color:#6d8257}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#57826d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#576d82}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6d5782}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82576d}.hljs-emphasis{color:#82576d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#825757}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css new file mode 100644 index 0000000..e3fe3ae --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Equilibrium Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#afaba2;background:#0c1118}.hljs ::selection,.hljs::selection{background-color:#22262d;color:#afaba2}.hljs-comment{color:#7b776e}.hljs-tag{color:#949088}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#afaba2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f04339}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5923}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8801}.hljs-strong{font-weight:700;color:#bb8801}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7f8b00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00948b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#008dd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6a7fd2}.hljs-emphasis{color:#6a7fd2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e3488e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css new file mode 100644 index 0000000..d3c2ff1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Equilibrium Gray Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ababab;background:#111}.hljs ::selection,.hljs::selection{background-color:#262626;color:#ababab}.hljs-comment{color:#777}.hljs-tag{color:#919191}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ababab}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f04339}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5923}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8801}.hljs-strong{font-weight:700;color:#bb8801}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7f8b00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00948b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#008dd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6a7fd2}.hljs-emphasis{color:#6a7fd2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e3488e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css new file mode 100644 index 0000000..817269f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Equilibrium Gray Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#474747;background:#f1f1f1}.hljs ::selection,.hljs::selection{background-color:#d4d4d4;color:#474747}.hljs-comment{color:#777}.hljs-tag{color:#5e5e5e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#474747}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d02023}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bf3e05}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9d6f00}.hljs-strong{font-weight:700;color:#9d6f00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#637200}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#007a72}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0073b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4e66b6}.hljs-emphasis{color:#4e66b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c42775}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css new file mode 100644 index 0000000..38564e9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Equilibrium Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#43474e;background:#f5f0e7}.hljs ::selection,.hljs::selection{background-color:#d8d4cb;color:#43474e}.hljs-comment{color:#73777f}.hljs-tag{color:#5a5f66}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#43474e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d02023}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bf3e05}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9d6f00}.hljs-strong{font-weight:700;color:#9d6f00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#637200}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#007a72}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0073b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4e66b6}.hljs-emphasis{color:#4e66b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c42775}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css new file mode 100644 index 0000000..9d9a0ae --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Espresso + Author: Unknown. Maintained by Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#777}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d25252}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9a959}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc66d}.hljs-strong{font-weight:700;color:#ffc66d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5c261}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#bed6ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6c99bb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d197d9}.hljs-emphasis{color:#d197d9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f97394}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css new file mode 100644 index 0000000..ab37158 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Eva Dim + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9fa2a6;background:#2a3b4d}.hljs ::selection,.hljs::selection{background-color:#4b6988;color:#9fa2a6}.hljs-comment{color:#55799c}.hljs-tag{color:#7e90a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9fa2a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c4676c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#cfd05d}.hljs-strong{font-weight:700;color:#cfd05d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5de561}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8f77}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1ae1dc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9c6cd3}.hljs-emphasis{color:#9c6cd3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb64a9}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css new file mode 100644 index 0000000..c4fb9cc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Eva + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9fa2a6;background:#2a3b4d}.hljs ::selection,.hljs::selection{background-color:#4b6988;color:#9fa2a6}.hljs-comment{color:#55799c}.hljs-tag{color:#7e90a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9fa2a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c4676c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ff6}.hljs-strong{font-weight:700;color:#ff6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6f6}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8f77}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#15f4ee}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9c6cd3}.hljs-emphasis{color:#9c6cd3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb64a9}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css new file mode 100644 index 0000000..7e6ece5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Flat + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e0e0;background:#2c3e50}.hljs ::selection,.hljs::selection{background-color:#7f8c8d;color:#e0e0e0}.hljs-comment{color:#95a5a6}.hljs-tag{color:#bdc3c7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0e0e0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e74c3c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e67e22}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f1c40f}.hljs-strong{font-weight:700;color:#f1c40f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2ecc71}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1abc9c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3498db}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b59b6}.hljs-emphasis{color:#9b59b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css new file mode 100644 index 0000000..3024b54 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Framer + Author: Framer (Maintained by Jesse Hoyos) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#181818}.hljs ::selection,.hljs::selection{background-color:#464646;color:#d0d0d0}.hljs-comment{color:#747474}.hljs-tag{color:#b9b9b9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fd886b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc4769}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fecb6e}.hljs-strong{font-weight:700;color:#fecb6e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#32ccdc}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#acddfd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#20bcfc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8cfc}.hljs-emphasis{color:#ba8cfc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b15f4a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css new file mode 100644 index 0000000..6e84fd7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Fruit Soda + Author: jozip + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#515151;background:#f1ecf1}.hljs ::selection,.hljs::selection{background-color:#d8d5d5;color:#515151}.hljs-comment{color:#b5b4b6}.hljs-tag{color:#979598}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#515151}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fe3e31}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe6d08}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7e203}.hljs-strong{font-weight:700;color:#f7e203}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#47f74c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0f9cfd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2931df}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#611fce}.hljs-emphasis{color:#611fce;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b16f40}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css new file mode 100644 index 0000000..9115b0c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gigavolt + Author: Aidan Swope (http://github.com/Whillikers) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e9e7e1;background:#202126}.hljs ::selection,.hljs::selection{background-color:#5a576e;color:#e9e7e1}.hljs-comment{color:#a1d2e6}.hljs-tag{color:#cad3ff}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e9e7e1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff661a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#19f988}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc2d}.hljs-strong{font-weight:700;color:#ffdc2d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f2e6a9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#fb6acb}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#40bfff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ae94f9}.hljs-emphasis{color:#ae94f9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#6187ff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css new file mode 100644 index 0000000..188aaaa --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Github + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c8c8fa;color:#333}.hljs-comment{color:#969896}.hljs-tag{color:#e8e8e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#333}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ed6a43}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#0086b3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#795da3}.hljs-strong{font-weight:700;color:#795da3}.hljs-addition,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-string,.hljs-title.class_.inherited__{color:#183691}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#795da3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a71d5d}.hljs-emphasis{color:#a71d5d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#333}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css new file mode 100644 index 0000000..bd2a2dc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Google Dark + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c5c8c6;background:#1d1f21}.hljs ::selection,.hljs::selection{background-color:#373b41;color:#c5c8c6}.hljs-comment{color:#969896}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c5c8c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cc342b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96a38}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fba922}.hljs-strong{font-weight:700;color:#fba922}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#198844}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3971ed}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a36ac7}.hljs-emphasis{color:#a36ac7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3971ed}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css new file mode 100644 index 0000000..26e6ffb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Google Light + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#373b41;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c5c8c6;color:#373b41}.hljs-comment{color:#b4b7b4}.hljs-tag{color:#969896}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#373b41}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cc342b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96a38}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fba922}.hljs-strong{font-weight:700;color:#fba922}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#198844}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3971ed}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a36ac7}.hljs-emphasis{color:#a36ac7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3971ed}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css new file mode 100644 index 0000000..54c9a4c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Grayscale Dark + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b9b9b9;background:#101010}.hljs ::selection,.hljs::selection{background-color:#464646;color:#b9b9b9}.hljs-comment{color:#525252}.hljs-tag{color:#ababab}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b9b9b9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#7c7c7c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#999}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a0a0a0}.hljs-strong{font-weight:700;color:#a0a0a0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8e8e8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#868686}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#686868}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#747474}.hljs-emphasis{color:#747474;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e5e5e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css new file mode 100644 index 0000000..3d85f2c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Grayscale Light + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#464646;background:#f7f7f7}.hljs ::selection,.hljs::selection{background-color:#b9b9b9;color:#464646}.hljs-comment{color:#ababab}.hljs-tag{color:#525252}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#464646}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#7c7c7c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#999}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a0a0a0}.hljs-strong{font-weight:700;color:#a0a0a0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8e8e8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#868686}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#686868}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#747474}.hljs-emphasis{color:#747474;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e5e5e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css new file mode 100644 index 0000000..8f66630 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Green Screen + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#0b0;background:#010}.hljs ::selection,.hljs::selection{background-color:#050;color:#0b0}.hljs-comment{color:#070}.hljs-tag{color:#090}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#0b0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#070}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#090}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#070}.hljs-strong{font-weight:700;color:#070}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0b0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#050}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#090}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#0b0}.hljs-emphasis{color:#0b0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#050}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css new file mode 100644 index 0000000..d82083e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox dark, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css new file mode 100644 index 0000000..1fc5e3a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox dark, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#282828}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css new file mode 100644 index 0000000..293b4bc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox dark, pale + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dab997;background:#262626}.hljs ::selection,.hljs::selection{background-color:#4e4e4e;color:#dab997}.hljs-comment{color:#8a8a8a}.hljs-tag{color:#949494}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dab997}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d75f5f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff8700}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffaf00}.hljs-strong{font-weight:700;color:#ffaf00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#afaf00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#85ad85}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83adad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d485ad}.hljs-emphasis{color:#d485ad;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css new file mode 100644 index 0000000..c327bbc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox dark, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#32302f}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css new file mode 100644 index 0000000..34d5cb7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox light, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#f9f5d7}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css new file mode 100644 index 0000000..e866687 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox light, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#fbf1c7}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css new file mode 100644 index 0000000..32ad2bd --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Gruvbox light, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#f2e5bc}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css new file mode 100644 index 0000000..ce0a615 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Hardcore + Author: Chris Caller + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cdcdcd;background:#212121}.hljs ::selection,.hljs::selection{background-color:#353535;color:#cdcdcd}.hljs-comment{color:#4a4a4a}.hljs-tag{color:#707070}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cdcdcd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f92672}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd971f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6db74}.hljs-strong{font-weight:700;color:#e6db74}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a6e22e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#708387}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66d9ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9e6ffe}.hljs-emphasis{color:#9e6ffe;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e8b882}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css new file mode 100644 index 0000000..497ad03 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Harmonic16 Dark + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cbd6e2;background:#0b1c2c}.hljs ::selection,.hljs::selection{background-color:#405c79;color:#cbd6e2}.hljs-comment{color:#627e99}.hljs-tag{color:#aabcce}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cbd6e2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf8b56}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bfbf56}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8bbf56}.hljs-strong{font-weight:700;color:#8bbf56}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#56bf8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#568bbf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8b56bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bf568b}.hljs-emphasis{color:#bf568b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf5656}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css new file mode 100644 index 0000000..72ab06a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Harmonic16 Light + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#405c79;background:#f7f9fb}.hljs ::selection,.hljs::selection{background-color:#cbd6e2;color:#405c79}.hljs-comment{color:#aabcce}.hljs-tag{color:#627e99}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#405c79}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf8b56}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bfbf56}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8bbf56}.hljs-strong{font-weight:700;color:#8bbf56}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#56bf8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#568bbf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8b56bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bf568b}.hljs-emphasis{color:#bf568b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf5656}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css new file mode 100644 index 0000000..66cb473 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Heetch Dark + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bdb6c5;background:#190134}.hljs ::selection,.hljs::selection{background-color:#5a496e;color:#bdb6c5}.hljs-comment{color:#7b6d8b}.hljs-tag{color:#9c92a8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bdb6c5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#27d9d5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#5ba2b6}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8f6c97}.hljs-strong{font-weight:700;color:#8f6c97}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c33678}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#f80059}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#bd0152}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82034c}.hljs-emphasis{color:#82034c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#470546}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css new file mode 100644 index 0000000..576538f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Heetch Light + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5a496e;background:#feffff}.hljs ::selection,.hljs::selection{background-color:#7b6d8b;color:#5a496e}.hljs-comment{color:#9c92a8}.hljs-tag{color:#ddd6e5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5a496e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#27d9d5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bdb6c5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5ba2b6}.hljs-strong{font-weight:700;color:#5ba2b6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f80059}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c33678}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#47f9f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bd0152}.hljs-emphasis{color:#bd0152;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#dedae2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css new file mode 100644 index 0000000..fe2574a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Helios + Author: Alex Meyer (https://github.com/reyemxela) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5d5d5;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#53585b;color:#d5d5d5}.hljs-comment{color:#6f7579}.hljs-tag{color:#cdcdcd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5d5d5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d72638}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb8413}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f19d1a}.hljs-strong{font-weight:700;color:#f19d1a}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#88b92d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1ba595}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1e8bac}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#be4264}.hljs-emphasis{color:#be4264;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c85e0d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css new file mode 100644 index 0000000..908ae4c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Hopscotch + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b9b5b8;background:#322931}.hljs ::selection,.hljs::selection{background-color:#5c545b;color:#b9b5b8}.hljs-comment{color:#797379}.hljs-tag{color:#989498}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b9b5b8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dd464c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8b19}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fdcc59}.hljs-strong{font-weight:700;color:#fdcc59}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8fc13e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149b93}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1290bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c85e7c}.hljs-emphasis{color:#c85e7c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b33508}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css new file mode 100644 index 0000000..a6fad3e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Horizon Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cbced0;background:#1c1e26}.hljs ::selection,.hljs::selection{background-color:#2e303e;color:#cbced0}.hljs-comment{color:#6f6f70}.hljs-tag{color:#9da0a2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cbced0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e93c58}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e58d7d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#efb993}.hljs-strong{font-weight:700;color:#efb993}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#efaf8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#24a8b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#df5273}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b072d1}.hljs-emphasis{color:#b072d1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e4a382}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css new file mode 100644 index 0000000..ae33a6e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Horizon Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#403c3d;background:#fdf0ed}.hljs ::selection,.hljs::selection{background-color:#f9cbbe;color:#403c3d}.hljs-comment{color:#bdb3b1}.hljs-tag{color:#948c8a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#403c3d}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e95678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9cec3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fadad1}.hljs-strong{font-weight:700;color:#fadad1}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29d398}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#59e1e3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#26bbd9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ee64ac}.hljs-emphasis{color:#ee64ac;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f9cbbe}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css new file mode 100644 index 0000000..a87c147 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Humanoid dark + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f8f8f2;background:#232629}.hljs ::selection,.hljs::selection{background-color:#484e54;color:#f8f8f2}.hljs-comment{color:#60615d}.hljs-tag{color:#c0c0bd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f8f8f2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f11235}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9505}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb627}.hljs-strong{font-weight:700;color:#ffb627}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#02d849}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0dd9d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00a6fb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f15ee3}.hljs-emphasis{color:#f15ee3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b27701}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css new file mode 100644 index 0000000..4e3b7ca --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Humanoid light + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#232629;background:#f8f8f2}.hljs ::selection,.hljs::selection{background-color:#deded8;color:#232629}.hljs-comment{color:#c0c0bd}.hljs-tag{color:#60615d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#232629}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b0151a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff3d00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb627}.hljs-strong{font-weight:700;color:#ffb627}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#388e3c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#008e8e}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0082c9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#700f98}.hljs-emphasis{color:#700f98;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b27701}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css new file mode 100644 index 0000000..b80fad4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: iA Dark + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#1a1a1a}.hljs ::selection,.hljs::selection{background-color:#1d414d;color:#ccc}.hljs-comment{color:#767676}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d88568}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d86868}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b99353}.hljs-strong{font-weight:700;color:#b99353}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#83a471}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7c9cae}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8eccdd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b98eb2}.hljs-emphasis{color:#b98eb2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8b6c37}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css new file mode 100644 index 0000000..8a33ab7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: iA Light + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#181818;background:#f6f6f6}.hljs ::selection,.hljs::selection{background-color:#bde5f2;color:#181818}.hljs-comment{color:#898989}.hljs-tag{color:#767676}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#181818}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9c5a02}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c43e18}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c48218}.hljs-strong{font-weight:700;color:#c48218}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#38781c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d6bb1}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#48bac2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a94598}.hljs-emphasis{color:#a94598;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8b6c37}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css new file mode 100644 index 0000000..25cf077 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Icy Dark + Author: icyphox (https://icyphox.ga) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#095b67;background:#021012}.hljs ::selection,.hljs::selection{background-color:#041f23;color:#095b67}.hljs-comment{color:#052e34}.hljs-tag{color:#064048}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#095b67}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#16c1d9}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b3ebf2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#80deea}.hljs-strong{font-weight:700;color:#80deea}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4dd0e1}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#26c6da}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00bcd4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#00acc1}.hljs-emphasis{color:#00acc1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#0097a7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css new file mode 100644 index 0000000..54afa45 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css @@ -0,0 +1,7 @@ +/*! + Theme: IR Black + Author: Timothée Poisot (http://timotheepoisot.fr) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b5b3aa;background:#000}.hljs ::selection,.hljs::selection{background-color:#484844;color:#b5b3aa}.hljs-comment{color:#6c6c66}.hljs-tag{color:#918f88}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b5b3aa}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff6c60}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e9c062}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffffb6}.hljs-strong{font-weight:700;color:#ffffb6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a8ff60}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c6c5fe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#96cbfe}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff73fd}.hljs-emphasis{color:#ff73fd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b18a3d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css new file mode 100644 index 0000000..ef27862 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Isotope + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#000}.hljs ::selection,.hljs::selection{background-color:#606060;color:#d0d0d0}.hljs-comment{color:grey}.hljs-tag{color:silver}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:red}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f90}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f09}.hljs-strong{font-weight:700;color:#f09}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#3f0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#06f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c0f}.hljs-emphasis{color:#c0f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#30f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css new file mode 100644 index 0000000..f2c29f4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Kimber + Author: Mishka Nguyen (https://github.com/akhsiM) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dedee7;background:#222}.hljs ::selection,.hljs::selection{background-color:#555d55;color:#dedee7}.hljs-comment{color:#644646}.hljs-tag{color:#5a5a5a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dedee7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c88c8c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#476c88}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d8b56d}.hljs-strong{font-weight:700;color:#d8b56d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99c899}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#78b4b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#537c9c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#86cacd}.hljs-emphasis{color:#86cacd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#704f4f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css new file mode 100644 index 0000000..613ed64 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css @@ -0,0 +1,7 @@ +/*! + Theme: London Tube + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d9d8d8;background:#231f20}.hljs ::selection,.hljs::selection{background-color:#5a5758;color:#d9d8d8}.hljs-comment{color:#737171}.hljs-tag{color:#959ca1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d9d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ee2e24}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f386a1}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffd204}.hljs-strong{font-weight:700;color:#ffd204}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00853e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#85cebc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#009ddc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#98005d}.hljs-emphasis{color:#98005d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b06110}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css new file mode 100644 index 0000000..a947f9c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Macintosh + Author: Rebecca Bettencourt (http://www.kreativekorp.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#404040;color:silver}.hljs-comment,.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dd0907}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff6403}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fbf305}.hljs-strong{font-weight:700;color:#fbf305}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#1fb714}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#02abea}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0000d3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4700a5}.hljs-emphasis{color:#4700a5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#90713a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css new file mode 100644 index 0000000..3940e22 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Marrakesh + Author: Alexandre Gavioli (http://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#948e48;background:#201602}.hljs ::selection,.hljs::selection{background-color:#5f5b17;color:#948e48}.hljs-comment{color:#6c6823}.hljs-tag{color:#86813b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#948e48}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c35359}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b36144}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a88339}.hljs-strong{font-weight:700;color:#a88339}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#18974e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75a738}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#477ca1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8868b3}.hljs-emphasis{color:#8868b3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b3588e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css new file mode 100644 index 0000000..ceb7c0c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Materia + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cdd3de;background:#263238}.hljs ::selection,.hljs::selection{background-color:#37474f;color:#cdd3de}.hljs-comment{color:#707880}.hljs-tag{color:#c9ccd3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cdd3de}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ec5f67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea9560}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc0}.hljs-strong{font-weight:700;color:#fc0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8bd649}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#80cbc4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#89ddff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82aaff}.hljs-emphasis{color:#82aaff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ec5f67}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css new file mode 100644 index 0000000..8e32102 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Material Darker + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eff;background:#212121}.hljs ::selection,.hljs::selection{background-color:#353535;color:#eff}.hljs-comment{color:#4a4a4a}.hljs-tag{color:#b2ccd6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eff}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css new file mode 100644 index 0000000..bf84b5e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Material Lighter + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#80cbc4;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#cceae7;color:#80cbc4}.hljs-comment{color:#ccd7da}.hljs-tag{color:#8796b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#80cbc4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5370}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f76d47}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb62c}.hljs-strong{font-weight:700;color:#ffb62c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#91b859}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#39adb5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6182b8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7c4dff}.hljs-emphasis{color:#7c4dff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e53935}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css new file mode 100644 index 0000000..901eb09 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Material Palenight + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#959dcb;background:#292d3e}.hljs ::selection,.hljs::selection{background-color:#32374d;color:#959dcb}.hljs-comment{color:#676e95}.hljs-tag{color:#8796b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#959dcb}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css new file mode 100644 index 0000000..cadaf26 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Material Vivid + Author: joshyrobot + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#80868b;background:#202124}.hljs ::selection,.hljs::selection{background-color:#323639;color:#80868b}.hljs-comment{color:#44464d}.hljs-tag{color:#676c71}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#80868b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f44336}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9800}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffeb3b}.hljs-strong{font-weight:700;color:#ffeb3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00e676}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00bcd4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2196f3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#673ab7}.hljs-emphasis{color:#673ab7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8d6e63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css new file mode 100644 index 0000000..90c3de9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Material + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eff;background:#263238}.hljs ::selection,.hljs::selection{background-color:#314549;color:#eff}.hljs-comment{color:#546e7a}.hljs-tag{color:#b2ccd6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eff}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css new file mode 100644 index 0000000..be9fd92 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Mellow Purple + Author: gidsi + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#fef;background:#1e0528}.hljs ::selection,.hljs::selection{background-color:#331354;color:#fef}.hljs-comment{color:#320f55}.hljs-tag{color:#873582}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#fef}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#00d9e9}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa00a3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#955ae7}.hljs-strong{font-weight:700;color:#955ae7}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#05cb0d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b900b1}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#550068}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8991bb}.hljs-emphasis{color:#8991bb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#4d6fff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css new file mode 100644 index 0000000..13747e5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Mexico Light + Author: Sheldon Johnson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f79a0e}.hljs-strong{font-weight:700;color:#f79a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#538947}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8093}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#96609e}.hljs-emphasis{color:#96609e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css new file mode 100644 index 0000000..bc1f3bf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Mocha + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0c8c6;background:#3b3228}.hljs ::selection,.hljs::selection{background-color:#645240;color:#d0c8c6}.hljs-comment{color:#7e705a}.hljs-tag{color:#b8afad}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0c8c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cb6077}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28b71}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bc87}.hljs-strong{font-weight:700;color:#f4bc87}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#beb55b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7bbda4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8ab3b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a89bb9}.hljs-emphasis{color:#a89bb9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb9584}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css new file mode 100644 index 0000000..8aacf00 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Monokai + Author: Wimer Hazenberg (http://www.monokai.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f8f8f2;background:#272822}.hljs ::selection,.hljs::selection{background-color:#49483e;color:#f8f8f2}.hljs-comment{color:#75715e}.hljs-tag{color:#a59f85}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f8f8f2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f92672}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd971f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a6e22e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a1efe4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66d9ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ae81ff}.hljs-emphasis{color:#ae81ff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css new file mode 100644 index 0000000..17de036 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Nebula + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a4a6a9;background:#22273b}.hljs ::selection,.hljs::selection{background-color:#5a8380;color:#a4a6a9}.hljs-comment{color:#6e6f72}.hljs-tag{color:#87888b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a4a6a9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#777abc}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#94929e}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#4f9062}.hljs-strong{font-weight:700;color:#4f9062}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6562a8}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#226f68}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4d6bb6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#716cae}.hljs-emphasis{color:#716cae;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8c70a7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css new file mode 100644 index 0000000..508ae85 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Nord + Author: arcticicestudio + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e5e9f0;background:#2e3440}.hljs ::selection,.hljs::selection{background-color:#434c5e;color:#e5e9f0}.hljs-comment{color:#4c566a}.hljs-tag{color:#d8dee9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e5e9f0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf616a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d08770}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ebcb8b}.hljs-strong{font-weight:700;color:#ebcb8b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3be8c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#88c0d0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#81a1c1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b48ead}.hljs-emphasis{color:#b48ead;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e81ac}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css new file mode 100644 index 0000000..5b9a408 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Nova + Author: George Essig (https://github.com/gessig), Trevor D. Miller (https://trevordmiller.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c5d4dd;background:#3c4c55}.hljs ::selection,.hljs::selection{background-color:#6a7d89;color:#c5d4dd}.hljs-comment,.hljs-tag{color:#899ba6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c5d4dd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#83afe5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#7fc1ca}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a8ce93}.hljs-strong{font-weight:700;color:#a8ce93}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7fc1ca}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#f2c38f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83afe5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9a93e1}.hljs-emphasis{color:#9a93e1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f2c38f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css new file mode 100644 index 0000000..9127e53 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Ocean + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c0c5ce;background:#2b303b}.hljs ::selection,.hljs::selection{background-color:#4f5b66;color:#c0c5ce}.hljs-comment{color:#65737e}.hljs-tag{color:#a7adba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c0c5ce}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf616a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d08770}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ebcb8b}.hljs-strong{font-weight:700;color:#ebcb8b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3be8c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#96b5b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8fa1b3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b48ead}.hljs-emphasis{color:#b48ead;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ab7967}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css new file mode 100644 index 0000000..627c14b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css @@ -0,0 +1,7 @@ +/*! + Theme: OceanicNext + Author: https://github.com/voronianski/oceanic-next-color-scheme + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c0c5ce;background:#1b2b34}.hljs ::selection,.hljs::selection{background-color:#4f5b66;color:#c0c5ce}.hljs-comment{color:#65737e}.hljs-tag{color:#a7adba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c0c5ce}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ec5f67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fac863}.hljs-strong{font-weight:700;color:#fac863}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99c794}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5fb3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c594c5}.hljs-emphasis{color:#c594c5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ab7967}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css new file mode 100644 index 0000000..63f57cb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: One Light + Author: Daniel Pfeifer (http://github.com/purpleKarrot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#e5e5e6;color:#383a42}.hljs-comment{color:#a0a1a7}.hljs-tag{color:#696c77}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383a42}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca1243}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d75f00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c18401}.hljs-strong{font-weight:700;color:#c18401}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#50a14f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0184bc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4078f2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a626a4}.hljs-emphasis{color:#a626a4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#986801}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css new file mode 100644 index 0000000..1b8c6b7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: OneDark + Author: Lalit Magant (http://github.com/tilal6991) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs ::selection,.hljs::selection{background-color:#3e4451;color:#abb2bf}.hljs-comment{color:#545862}.hljs-tag{color:#565c64}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#abb2bf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e06c75}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d19a66}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e5c07b}.hljs-strong{font-weight:700;color:#e5c07b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#98c379}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#56b6c2}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#61afef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c678dd}.hljs-emphasis{color:#c678dd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be5046}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css new file mode 100644 index 0000000..22995a1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Outrun Dark + Author: Hugo Delahousse (http://github.com/hugodelahousse/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0fa;background:#00002a}.hljs ::selection,.hljs::selection{background-color:#30305a;color:#d0d0fa}.hljs-comment{color:#50507a}.hljs-tag{color:#b0b0da}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0fa}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4242}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc8d28}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f3e877}.hljs-strong{font-weight:700;color:#f3e877}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#59f176}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ef0f0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66b0ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f10596}.hljs-emphasis{color:#f10596;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f003ef}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css new file mode 100644 index 0000000..c35d7c7 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: PaperColor Dark + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:grey;background:#1c1c1c}.hljs ::selection,.hljs::selection{background-color:#5faf00;color:grey}.hljs-comment{color:#d7af5f}.hljs-tag{color:#5fafd7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:grey}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#585858}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#5faf5f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#afd700}.hljs-strong{font-weight:700;color:#afd700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#af87d7}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#ffaf00}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ff5faf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#00afaf}.hljs-emphasis{color:#00afaf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5f8787}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css new file mode 100644 index 0000000..e23b616 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: PaperColor Light + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#eee}.hljs ::selection,.hljs::selection{background-color:#008700;color:#444}.hljs-comment{color:#5f8700}.hljs-tag{color:#0087af}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#444}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bcbcbc}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d70000}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d70087}.hljs-strong{font-weight:700;color:#d70087}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8700af}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#d75f00}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#005faf}.hljs-emphasis{color:#005faf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#005f87}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css new file mode 100644 index 0000000..135fcd2 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Paraiso + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a39e9b;background:#2f1e2e}.hljs ::selection,.hljs::selection{background-color:#4f424c;color:#a39e9b}.hljs-comment{color:#776e71}.hljs-tag{color:#8d8687}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a39e9b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99b15}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fec418}.hljs-strong{font-weight:700;color:#fec418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#48b685}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5bc4bf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#06b6ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#815ba4}.hljs-emphasis{color:#815ba4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e96ba8}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css new file mode 100644 index 0000000..e4c2672 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Pasque + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dedcdf;background:#271c3a}.hljs ::selection,.hljs::selection{background-color:#3e2d5c;color:#dedcdf}.hljs-comment{color:#5d5766}.hljs-tag{color:#bebcbf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dedcdf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a92258}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#918889}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#804ead}.hljs-strong{font-weight:700;color:#804ead}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c6914b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7263aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8e7dc6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#953b9d}.hljs-emphasis{color:#953b9d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#59325c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css new file mode 100644 index 0000000..b5f9fea --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css @@ -0,0 +1,7 @@ +/*! + Theme: PhD + Author: Hennig Hasemann (http://leetless.de/vim.html) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b8bbc2;background:#061229}.hljs ::selection,.hljs::selection{background-color:#4d5666;color:#b8bbc2}.hljs-comment{color:#717885}.hljs-tag{color:#9a99a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b8bbc2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d07346}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f0a000}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fbd461}.hljs-strong{font-weight:700;color:#fbd461}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99bf52}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#72b9bf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5299bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9989cc}.hljs-emphasis{color:#9989cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b08060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css new file mode 100644 index 0000000..3765998 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Pico + Author: PICO-8 (http://www.lexaloffle.com/pico-8.php) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5f574f;background:#000}.hljs ::selection,.hljs::selection{background-color:#7e2553;color:#5f574f}.hljs-comment{color:#008751}.hljs-tag{color:#ab5236}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5f574f}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff004d}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffa300}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fff024}.hljs-strong{font-weight:700;color:#fff024}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00e756}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#29adff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83769c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff77a8}.hljs-emphasis{color:#ff77a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#fca}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css new file mode 100644 index 0000000..22b488a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Pop + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#000}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#eb008a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f29333}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f8ca12}.hljs-strong{font-weight:700;color:#f8ca12}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#37b349}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ab}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0e5a94}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b31e8d}.hljs-emphasis{color:#b31e8d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#7a2d00}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css new file mode 100644 index 0000000..77aac4c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Porple + Author: Niek den Breeje (https://github.com/AuditeMarlow) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d8d8d8;background:#292c36}.hljs ::selection,.hljs::selection{background-color:#474160;color:#d8d8d8}.hljs-comment{color:#65568a}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d8d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f84547}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28e5d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#efa16b}.hljs-strong{font-weight:700;color:#efa16b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c76f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#64878f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8485ce}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b74989}.hljs-emphasis{color:#b74989;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#986841}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css new file mode 100644 index 0000000..6b333ba --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Qualia + Author: isaacwhanson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#101010}.hljs ::selection,.hljs::selection{background-color:#454545;color:silver}.hljs-comment{color:#454545}.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#efa6a2}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a3b8ef}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6a3dc}.hljs-strong{font-weight:700;color:#e6a3dc}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#80c990}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c8c874}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#50cacd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#e0af85}.hljs-emphasis{color:#e0af85;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:grey}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css new file mode 100644 index 0000000..835bace --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Railscasts + Author: Ryan Bates (http://railscasts.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e6e1dc;background:#2b2b2b}.hljs ::selection,.hljs::selection{background-color:#3a4055;color:#e6e1dc}.hljs-comment{color:#5a647e}.hljs-tag{color:#d4cfc9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e6e1dc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#da4939}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cc7833}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc66d}.hljs-strong{font-weight:700;color:#ffc66d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5c261}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#519f50}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6d9cbe}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b6b3eb}.hljs-emphasis{color:#b6b3eb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bc9458}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css new file mode 100644 index 0000000..c7c3d77 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Rebecca + Author: Victor Borja (http://github.com/vic) based on Rebecca Theme (http://github.com/vic/rebecca-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f1eff8;background:#292a44}.hljs ::selection,.hljs::selection{background-color:#383a62;color:#f1eff8}.hljs-comment{color:#669}.hljs-tag{color:#a0a0c5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f1eff8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a0a0c5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#efe4a1}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae81ff}.hljs-strong{font-weight:700;color:#ae81ff}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6dfedf}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8eaee0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2de0a7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7aa5ff}.hljs-emphasis{color:#7aa5ff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff79c6}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css new file mode 100644 index 0000000..a877d23 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Rosé Pine Dawn + Author: Emilia Dunfelt <sayhi@dunfelt.se> + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#575279;background:#faf4ed}.hljs ::selection,.hljs::selection{background-color:#f2e9de;color:#575279}.hljs-comment{color:#9893a5}.hljs-tag{color:#6e6a86}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#575279}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#1f1d2e}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b4637a}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ea9d34}.hljs-strong{font-weight:700;color:#ea9d34}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d7827e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#286983}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#56949f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#907aa9}.hljs-emphasis{color:#907aa9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c5c3ce}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css new file mode 100644 index 0000000..eab4a50 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Rosé Pine Moon + Author: Emilia Dunfelt <sayhi@dunfelt.se> + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0def4;background:#232136}.hljs ::selection,.hljs::selection{background-color:#393552;color:#e0def4}.hljs-comment{color:#59546d}.hljs-tag{color:#817c9c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0def4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ecebf0}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb6f92}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f6c177}.hljs-strong{font-weight:700;color:#f6c177}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ea9a97}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3e8fb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9ccfd8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c4a7e7}.hljs-emphasis{color:#c4a7e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b9b9bc}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css new file mode 100644 index 0000000..ddc4e69 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Rosé Pine + Author: Emilia Dunfelt <sayhi@dunfelt.se> + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0def4;background:#191724}.hljs ::selection,.hljs::selection{background-color:#26233a;color:#e0def4}.hljs-comment{color:#555169}.hljs-tag{color:#6e6a86}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0def4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e2e1e7}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb6f92}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f6c177}.hljs-strong{font-weight:700;color:#f6c177}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ebbcba}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#31748f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9ccfd8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c4a7e7}.hljs-emphasis{color:#c4a7e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e5e5e5}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css new file mode 100644 index 0000000..f0dc927 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Sagelight + Author: Carter Veldhuizen + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fa8480}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffaa61}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc61}.hljs-strong{font-weight:700;color:#ffdc61}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a0d2c8}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a2d6f5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#a0a7d2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c8a0d2}.hljs-emphasis{color:#c8a0d2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d2b2a0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css new file mode 100644 index 0000000..601dc21 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Sandcastle + Author: George Essig (https://github.com/gessig) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a89984;background:#282c34}.hljs ::selection,.hljs::selection{background-color:#3e4451;color:#a89984}.hljs-comment{color:#665c54}.hljs-tag{color:#928374}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a89984}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#83a598}.hljs-attr,.hljs-class .hljs-title,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-title,.hljs-title.class_,.hljs-variable.constant_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#528b8b}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d75f5f}.hljs-emphasis{color:#d75f5f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a87322}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css new file mode 100644 index 0000000..fa3347e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Seti UI + Author: + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d6d6d6;background:#151718}.hljs ::selection,.hljs::selection{background-color:#3b758c;color:#d6d6d6}.hljs-comment{color:#41535b}.hljs-tag{color:#43a5d5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d6d6d6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cd3f45}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#db7b55}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6cd69}.hljs-strong{font-weight:700;color:#e6cd69}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9fca56}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#55dbbe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#55b5db}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a074c4}.hljs-emphasis{color:#a074c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8a553f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css new file mode 100644 index 0000000..a3e83b5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Shapeshifter + Author: Tyler Benziger (http://tybenz.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#102015;background:#f9f9f9}.hljs ::selection,.hljs::selection{background-color:#ababab;color:#102015}.hljs-comment{color:#555}.hljs-tag{color:#343434}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#102015}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e92f2f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e09448}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dddd13}.hljs-strong{font-weight:700;color:#dddd13}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0ed839}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#23edda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3b48e3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f996e2}.hljs-emphasis{color:#f996e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#69542d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css new file mode 100644 index 0000000..1315a0b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Silk Dark + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7dbdd;background:#0e3c46}.hljs ::selection,.hljs::selection{background-color:#2a5054;color:#c7dbdd}.hljs-comment{color:#587073}.hljs-tag{color:#9dc8cd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7dbdd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb6953}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcab74}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fce380}.hljs-strong{font-weight:700;color:#fce380}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#73d8ad}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3fb2b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#46bddd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#756b8a}.hljs-emphasis{color:#756b8a;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9b647b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css new file mode 100644 index 0000000..54b0058 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Silk Light + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#385156;background:#e9f1ef}.hljs ::selection,.hljs::selection{background-color:#90b7b6;color:#385156}.hljs-comment{color:#5c787b}.hljs-tag{color:#4b5b5f}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#385156}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf432e}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d27f46}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#cfad25}.hljs-strong{font-weight:700;color:#cfad25}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6ca38c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#329ca2}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#39aac9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6e6582}.hljs-emphasis{color:#6e6582;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#865369}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css new file mode 100644 index 0000000..2241752 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Snazzy + Author: Chawye Hsu (https://github.com/chawyehsu) based on Hyper Snazzy Theme (https://github.com/sindresorhus/hyper-snazzy) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e2e4e5;background:#282a36}.hljs ::selection,.hljs::selection{background-color:#43454f;color:#e2e4e5}.hljs-comment{color:#78787e}.hljs-tag{color:#a5a5a9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e2e4e5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5c57}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9f43}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f3f99d}.hljs-strong{font-weight:700;color:#f3f99d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5af78e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#9aedfe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#57c7ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff6ac1}.hljs-emphasis{color:#ff6ac1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b2643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css new file mode 100644 index 0000000..4b6a98f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Solar Flare Light + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586875;background:#f5f7fa}.hljs ::selection,.hljs::selection{background-color:#a6afb8;color:#586875}.hljs-comment{color:#85939e}.hljs-tag{color:#667581}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586875}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef5253}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e66b2b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e4b51c}.hljs-strong{font-weight:700;color:#e4b51c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7cc844}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#52cbb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#33b5e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a363d5}.hljs-emphasis{color:#a363d5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d73c9a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css new file mode 100644 index 0000000..115fb97 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Solar Flare + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a6afb8;background:#18262f}.hljs ::selection,.hljs::selection{background-color:#586875;color:#a6afb8}.hljs-comment{color:#667581}.hljs-tag{color:#85939e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a6afb8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef5253}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e66b2b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e4b51c}.hljs-strong{font-weight:700;color:#e4b51c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7cc844}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#52cbb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#33b5e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a363d5}.hljs-emphasis{color:#a363d5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d73c9a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css new file mode 100644 index 0000000..e2b1535 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Solarized Dark + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#93a1a1;background:#002b36}.hljs ::selection,.hljs::selection{background-color:#586e75;color:#93a1a1}.hljs-comment{color:#657b83}.hljs-tag{color:#839496}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#93a1a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700;color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css new file mode 100644 index 0000000..67a590b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Solarized Light + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586e75;background:#fdf6e3}.hljs ::selection,.hljs::selection{background-color:#93a1a1;color:#586e75}.hljs-comment{color:#839496}.hljs-tag{color:#657b83}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586e75}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700;color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css new file mode 100644 index 0000000..ba8f7d9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Spacemacs + Author: Nasser Alshammari (https://github.com/nashamri/spacemacs-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a3a3a3;background:#1f2022}.hljs ::selection,.hljs::selection{background-color:#444155;color:#a3a3a3}.hljs-comment{color:#585858}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a3a3a3}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2241f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:orange}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b1951d}.hljs-strong{font-weight:700;color:#b1951d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#67b11d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d9574}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4f97d7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a31db1}.hljs-emphasis{color:#a31db1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b03060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css new file mode 100644 index 0000000..931b035 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css @@ -0,0 +1,7 @@ +/*! + Theme: summercamp + Author: zoe firi (zoefiri.github.io) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#736e55;background:#1c1810}.hljs ::selection,.hljs::selection{background-color:#3a3527;color:#736e55}.hljs-comment{color:#504b38}.hljs-tag{color:#5f5b45}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#736e55}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e35142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fba11b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f2ff27}.hljs-strong{font-weight:700;color:#f2ff27}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5ceb5a}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5aebbc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#489bf0}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff8080}.hljs-emphasis{color:#ff8080;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f69be7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css new file mode 100644 index 0000000..8ba6c88 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Summerfruit Dark + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff0086}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8900}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aba800}.hljs-strong{font-weight:700;color:#aba800}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00c918}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1faaaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3777e6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad00a1}.hljs-emphasis{color:#ad00a1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css new file mode 100644 index 0000000..958eda3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Summerfruit Light + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#101010;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#101010}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#000}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#101010}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff0086}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8900}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aba800}.hljs-strong{font-weight:700;color:#aba800}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00c918}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1faaaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3777e6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad00a1}.hljs-emphasis{color:#ad00a1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css new file mode 100644 index 0000000..faa5d4d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Synth Midnight Terminal Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c3c4;background:#050608}.hljs ::selection,.hljs::selection{background-color:#28292a;color:#c1c3c4}.hljs-comment{color:#474849}.hljs-tag{color:#a3a5a6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c3c4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b53b50}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea770d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c9d364}.hljs-strong{font-weight:700;color:#c9d364}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#06ea61}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#42fff9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#03aeff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ea5ce2}.hljs-emphasis{color:#ea5ce2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cd6320}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css new file mode 100644 index 0000000..579a65f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Synth Midnight Terminal Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#28292a;background:#dddfe0}.hljs ::selection,.hljs::selection{background-color:#c1c3c4;color:#28292a}.hljs-comment{color:#a3a5a6}.hljs-tag{color:#474849}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#28292a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b53b50}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea770d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c9d364}.hljs-strong{font-weight:700;color:#c9d364}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#06ea61}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#42fff9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#03aeff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ea5ce2}.hljs-emphasis{color:#ea5ce2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cd6320}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css new file mode 100644 index 0000000..d37318a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Tango + Author: @Schnouki, based on the Tango Desktop Project + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d3d7cf;background:#2e3436}.hljs ::selection,.hljs::selection{background-color:#fce94f;color:#d3d7cf}.hljs-comment{color:#555753}.hljs-tag{color:#729fcf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d3d7cf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c00}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ef2929}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c4a000}.hljs-strong{font-weight:700;color:#c4a000}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4e9a06}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#06989a}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3465a4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#75507b}.hljs-emphasis{color:#75507b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#34e2e2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css new file mode 100644 index 0000000..c72c7df --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css @@ -0,0 +1,7 @@ +/*! + Theme: tender + Author: Jacobo Tabernero (https://github/com/jacoborus/tender.vim) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eee;background:#282828}.hljs ::selection,.hljs::selection{background-color:#484848;color:#eee}.hljs-comment{color:#4c4c4c}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eee}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f43753}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc24b}.hljs-strong{font-weight:700;color:#ffc24b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c9d05c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#73cef4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#b3deef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3b987}.hljs-emphasis{color:#d3b987;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css new file mode 100644 index 0000000..a0b3f62 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Tomorrow Night + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#999}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2777a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc6}.hljs-strong{font-weight:700;color:#fc6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9c9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6cc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c9c}.hljs-emphasis{color:#c9c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a3685a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css new file mode 100644 index 0000000..5785f6e --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Tomorrow + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#4d4d4c;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d6d6d6;color:#4d4d4c}.hljs-comment{color:#8e908c}.hljs-tag{color:#969896}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#4d4d4c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c82829}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f5871f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#eab700}.hljs-strong{font-weight:700;color:#eab700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#718c00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3e999f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4271ae}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8959a8}.hljs-emphasis{color:#8959a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a3685a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css new file mode 100644 index 0000000..0a8f5f9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Twilight + Author: David Hart (https://github.com/hartbit) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a7a7a7;background:#1e1e1e}.hljs ::selection,.hljs::selection{background-color:#464b50;color:#a7a7a7}.hljs-comment{color:#5f5a60}.hljs-tag{color:#838184}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a7a7a7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf6a4c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cda869}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9ee98}.hljs-strong{font-weight:700;color:#f9ee98}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8f9d6a}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#afc4db}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7587a6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b859d}.hljs-emphasis{color:#9b859d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9b703f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css new file mode 100644 index 0000000..752d90a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Unikitty Dark + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bcbabe;background:#2e2a31}.hljs ::selection,.hljs::selection{background-color:#666369;color:#bcbabe}.hljs-comment{color:#838085}.hljs-tag{color:#9f9da2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bcbabe}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d8137f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d65407}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dc8a0e}.hljs-strong{font-weight:700;color:#dc8a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#17ad98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149bda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#796af5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb60ea}.hljs-emphasis{color:#bb60ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c720ca}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css new file mode 100644 index 0000000..fe74653 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Unikitty Light + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6c696e;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c4c3c5;color:#6c696e}.hljs-comment{color:#a7a5a8}.hljs-tag{color:#89878b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6c696e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d8137f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d65407}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dc8a0e}.hljs-strong{font-weight:700;color:#dc8a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#17ad98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149bda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#775dff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa17e6}.hljs-emphasis{color:#aa17e6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e013d0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css new file mode 100644 index 0000000..3c88968 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css @@ -0,0 +1,7 @@ +/*! + Theme: vulcan + Author: Andrey Varfolomeev + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5b778c;background:#041523}.hljs ::selection,.hljs::selection{background-color:#003552;color:#5b778c}.hljs-comment{color:#7a5759}.hljs-tag{color:#6b6977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5b778c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#818591}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9198a3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#adb4b9}.hljs-strong{font-weight:700;color:#adb4b9}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-string,.hljs-title.class_.inherited__,.hljs-title.function_,.ruby .hljs-property{color:#977d7c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9198a3}.hljs-emphasis{color:#9198a3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#977d7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css new file mode 100644 index 0000000..b27b99f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows 10 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#767676;background:#f2f2f2}.hljs ::selection,.hljs::selection{background-color:#d9d9d9;color:#767676}.hljs-comment{color:#ccc}.hljs-tag{color:#ababab}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#767676}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c50f1f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9f1a5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c19c00}.hljs-strong{font-weight:700;color:#c19c00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#13a10e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3a96dd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0037da}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#881798}.hljs-emphasis{color:#881798;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#16c60c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css new file mode 100644 index 0000000..296b84c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows 10 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#0c0c0c}.hljs ::selection,.hljs::selection{background-color:#535353;color:#ccc}.hljs-comment{color:#767676}.hljs-tag{color:#b9b9b9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e74856}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c19c00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9f1a5}.hljs-strong{font-weight:700;color:#f9f1a5}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#16c60c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#61d6d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3b78ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b4009e}.hljs-emphasis{color:#b4009e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#13a10e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css new file mode 100644 index 0000000..c30dd24 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows 95 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#545454;background:#fcfcfc}.hljs ::selection,.hljs::selection{background-color:#c4c4c4;color:#545454}.hljs-comment{color:#a8a8a8}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#545454}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a80000}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcfc54}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a85400}.hljs-strong{font-weight:700;color:#a85400}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00a800}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00a8a8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0000a8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a800a8}.hljs-emphasis{color:#a800a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#54fc54}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css new file mode 100644 index 0000000..962d307 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows 95 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a8a8a8;background:#000}.hljs ::selection,.hljs::selection{background-color:#383838;color:#a8a8a8}.hljs-comment{color:#545454}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a8a8a8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fc5454}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a85400}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fcfc54}.hljs-strong{font-weight:700;color:#fcfc54}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54fc54}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#54fcfc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5454fc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#fc54fc}.hljs-emphasis{color:#fc54fc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#00a800}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css new file mode 100644 index 0000000..fb24f75 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows High Contrast Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#545454;background:#fcfcfc}.hljs ::selection,.hljs::selection{background-color:#d4d4d4;color:#545454}.hljs-comment{color:silver}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#545454}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:maroon}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcfc54}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:olive}.hljs-strong{font-weight:700;color:olive}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:green}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:teal}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:navy}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:purple}.hljs-emphasis{color:purple;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#54fc54}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css new file mode 100644 index 0000000..363f590 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows High Contrast + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#383838;color:silver}.hljs-comment{color:#545454}.hljs-tag{color:#a2a2a2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fc5454}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:olive}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fcfc54}.hljs-strong{font-weight:700;color:#fcfc54}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54fc54}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#54fcfc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5454fc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#fc54fc}.hljs-emphasis{color:#fc54fc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:green}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css new file mode 100644 index 0000000..4332edf --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows NT Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:grey;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d5d5d5;color:grey}.hljs-comment{color:silver}.hljs-tag{color:#a0a0a0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:grey}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:maroon}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff0}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:olive}.hljs-strong{font-weight:700;color:olive}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:green}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:teal}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:navy}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:purple}.hljs-emphasis{color:purple;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#0f0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css new file mode 100644 index 0000000..b37fdf5 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Windows NT + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#555;color:silver}.hljs-comment{color:grey}.hljs-tag{color:#a1a1a1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:red}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:olive}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ff0}.hljs-strong{font-weight:700;color:#ff0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0f0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f0f}.hljs-emphasis{color:#f0f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:green}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css new file mode 100644 index 0000000..a83a68b --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Woodland + Author: Jay Cornwall (https://jcornwall.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cabcb1;background:#231e18}.hljs ::selection,.hljs::selection{background-color:#48413a;color:#cabcb1}.hljs-comment{color:#9d8b70}.hljs-tag{color:#b4a490}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cabcb1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d35c5c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ca7f32}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e0ac16}.hljs-strong{font-weight:700;color:#e0ac16}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b7ba53}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6eb958}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#88a4d3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb90e2}.hljs-emphasis{color:#bb90e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b49368}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css new file mode 100644 index 0000000..7cf105a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css @@ -0,0 +1,7 @@ +/*! + Theme: XCode Dusk + Author: Elsa Gonsiorowski (https://github.com/gonsie) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#939599;background:#282b35}.hljs ::selection,.hljs::selection{background-color:#53555d;color:#939599}.hljs-comment{color:#686a71}.hljs-tag{color:#7e8086}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#939599}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b21889}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#786dc5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#438288}.hljs-strong{font-weight:700;color:#438288}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#df0002}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00a0be}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#790ead}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b21889}.hljs-emphasis{color:#b21889;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c77c48}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css new file mode 100644 index 0000000..a075f5f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css @@ -0,0 +1,7 @@ +/*! + Theme: Zenburn + Author: elnawe + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dcdccc;background:#383838}.hljs ::selection,.hljs::selection{background-color:#606060;color:#dcdccc}.hljs-comment{color:#6f6f6f}.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dcdccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dca3a3}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dfaf8f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e0cf9f}.hljs-strong{font-weight:700;color:#e0cf9f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5f7f5f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#93e0e3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cb8bb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#dc8cc3}.hljs-emphasis{color:#dc8cc3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#000}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css new file mode 100644 index 0000000..6231e8a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#363c69;background:url(./brown-papersq.png) #b7a68e}.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#059}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-link,.hljs-name,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#2c009f}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#802022}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png b/node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png new file mode 100644 index 0000000000000000000000000000000000000000..3813903dbf9fa7b1fb5bd11d9534c06667d9056f GIT binary patch literal 18198 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css new file mode 100644 index 0000000..0d7dff6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:#fff}.hljs-comment,.hljs-quote{color:#777}.hljs-built_in,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-regexp,.hljs-symbol,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ab875d}.hljs-attribute,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title,.hljs-type{color:#9b869b}.hljs-addition,.hljs-keyword,.hljs-selector-tag,.hljs-string{color:#8f9c6c}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css new file mode 100644 index 0000000..1c677e3 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-addition,.hljs-meta,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#756bb1}.hljs-comment,.hljs-quote{color:#636363}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#31a354}.hljs-deletion,.hljs-variable{color:#88f}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-tag,.hljs-title,.hljs-type{color:#3182bd}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css new file mode 100644 index 0000000..320a627 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ddd;background:#444}.hljs-keyword,.hljs-link,.hljs-literal,.hljs-section,.hljs-selector-tag{color:#fff}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-name,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#d88}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#777}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css new file mode 100644 index 0000000..96e1842 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css @@ -0,0 +1,9 @@ +/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev <maniac@softwaremaniacs.org> + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f0f0f0;color:#444}.hljs-comment{color:#888}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css new file mode 100644 index 0000000..d8c4c0f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css @@ -0,0 +1,7 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: devibeans (dark) + Author: @terminaldweller + Maintainer: @terminaldweller + + Inspired by vim's jellybeans theme (https://github.com/nanotech/jellybeans.vim) +*/.hljs{background:#000;color:#a39e9b}.hljs-attr,.hljs-template-tag{color:#8787d7}.hljs-comment,.hljs-doctag,.hljs-quote{color:#396}.hljs-params{color:#a39e9b}.hljs-regexp{color:#d700ff}.hljs-literal,.hljs-number,.hljs-selector-id,.hljs-tag{color:#ef5350}.hljs-meta,.hljs-meta .hljs-keyword{color:#0087ff}.hljs-code,.hljs-formula,.hljs-keyword,.hljs-link,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-variable{color:#64b5f6}.hljs-built_in,.hljs-deletion,.hljs-title{color:#ff8700}.hljs-attribute,.hljs-function,.hljs-name,.hljs-property,.hljs-section,.hljs-type{color:#ffd75f}.hljs-addition,.hljs-bullet,.hljs-meta .hljs-string,.hljs-string,.hljs-subst,.hljs-symbol{color:#558b2f}.hljs-selector-tag{color:#96f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css new file mode 100644 index 0000000..382ecbb --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#f8f8ff}.hljs-comment,.hljs-quote{color:#408080;font-style:italic}.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-subst{color:#954121}.hljs-number{color:#40a070}.hljs-doctag,.hljs-string{color:#219161}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-type{color:#19469d}.hljs-params{color:#00f}.hljs-title{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-template-variable,.hljs-variable{color:teal}.hljs-link,.hljs-regexp{color:#b68}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css new file mode 100644 index 0000000..c338ef6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#0ff;background:navy}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#ff0}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type,.hljs-variable{color:#fff}.hljs-comment,.hljs-deletion,.hljs-doctag,.hljs-quote{color:#888}.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#0f0}.hljs-meta{color:teal}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css new file mode 100644 index 0000000..1ddcfa6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#eee;color:#000}.hljs-addition,.hljs-attribute,.hljs-emphasis,.hljs-link{color:#070}.hljs-emphasis{font-style:italic}.hljs-deletion,.hljs-string,.hljs-strong{color:#d14}.hljs-strong{font-weight:700}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-section,.hljs-title{color:#900}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{color:#458}.hljs-template-variable,.hljs-variable{color:#369}.hljs-bullet{color:#970}.hljs-meta{color:#34b}.hljs-code,.hljs-keyword,.hljs-literal,.hljs-number,.hljs-selector-tag{color:#099}.hljs-regexp{background-color:#fff0ff;color:#808}.hljs-symbol{color:#990073}.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-tag{color:#070} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css new file mode 100644 index 0000000..e266dfc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css @@ -0,0 +1,9 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark Dimmed + Description: Dark dimmed theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Colors taken from GitHub's CSS +*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css new file mode 100644 index 0000000..03b6da8 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark + Description: Dark theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css new file mode 100644 index 0000000..275239a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css new file mode 100644 index 0000000..89455fe --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:silver}.hljs-keyword{color:#ffb871;font-weight:700}.hljs-built_in{color:#ffb871}.hljs-literal{color:#ff8080}.hljs-symbol{color:#58e55a}.hljs-comment{color:#5b995b}.hljs-string{color:#ff0}.hljs-number{color:#ff8080}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-code,.hljs-deletion,.hljs-doctag,.hljs-function,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-name,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:silver}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css new file mode 100644 index 0000000..0140b89 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote{color:#800}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-title{color:#008}.hljs-template-variable,.hljs-variable{color:#660}.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#080}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-symbol{color:#066}.hljs-attr,.hljs-built_in,.hljs-doctag,.hljs-params,.hljs-title,.hljs-type{color:#606}.hljs-attribute,.hljs-subst{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-selector-class,.hljs-selector-id{color:#9b703f}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css new file mode 100644 index 0000000..9440d7f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#501f7a;background:linear-gradient(166deg,#501f7a 0,#2820b3 80%);color:#e7e4eb}.hljs-subtr{color:#e7e4eb}.hljs-comment,.hljs-doctag,.hljs-meta,.hljs-quote{color:#af8dd9}.hljs-attr,.hljs-regexp,.hljs-selector-id,.hljs-selector-tag,.hljs-tag,.hljs-template-tag{color:#aefbff}.hljs-bullet,.hljs-params,.hljs-selector-class{color:#f19fff}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-symbol,.hljs-type{color:#17fc95}.hljs-addition,.hljs-link,.hljs-number{color:#c5fe00}.hljs-string{color:#38c0ff}.hljs-addition,.hljs-attribute{color:#e7ff9f}.hljs-template-variable,.hljs-variable{color:#e447ff}.hljs-built_in,.hljs-class,.hljs-formula,.hljs-function,.hljs-name,.hljs-title{color:#ffc800}.hljs-deletion,.hljs-literal,.hljs-selector-pseudo{color:#ff9e44}.hljs-emphasis,.hljs-quote{font-style:italic}.hljs-keyword,.hljs-params,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-template-tag{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css new file mode 100644 index 0000000..48af9cc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fffd8d;background:linear-gradient(142deg,#fffd8d 0,#fcb7ff 35%,#90ecff 100%);color:#250482}.hljs-subtr{color:#01958b}.hljs-comment,.hljs-doctag,.hljs-meta,.hljs-quote{color:#cb7200}.hljs-attr,.hljs-regexp,.hljs-selector-id,.hljs-selector-tag,.hljs-tag,.hljs-template-tag{color:#07bd5f}.hljs-bullet,.hljs-params,.hljs-selector-class{color:#43449f}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-symbol,.hljs-type{color:#7d2801}.hljs-addition,.hljs-link,.hljs-number{color:#7f0096}.hljs-string{color:#38c0ff}.hljs-addition,.hljs-attribute{color:#296562}.hljs-template-variable,.hljs-variable{color:#025c8f}.hljs-built_in,.hljs-class,.hljs-formula,.hljs-function,.hljs-name,.hljs-title{color:#529117}.hljs-deletion,.hljs-literal,.hljs-selector-pseudo{color:#ad13ff}.hljs-emphasis,.hljs-quote{font-style:italic}.hljs-keyword,.hljs-params,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-template-tag{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css new file mode 100644 index 0000000..5eefdaa --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs-comment,.hljs-quote{color:#777;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number{color:#777}.hljs-doctag,.hljs-formula,.hljs-string{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC)}.hljs-section,.hljs-selector-id,.hljs-title{color:#000;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-name,.hljs-title.class_,.hljs-type{color:#333;font-weight:700}.hljs-tag{color:#333}.hljs-regexp{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==)}.hljs-bullet,.hljs-link,.hljs-symbol{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==)}.hljs-built_in{color:#000;text-decoration:underline}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{color:#fff;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==)}.hljs-addition{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css new file mode 100644 index 0000000..52489b6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1d1f21;color:#c5c8c6}.hljs span::selection,.hljs::selection{background:#373b41}.hljs span::-moz-selection,.hljs::-moz-selection{background:#373b41}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment,.hljs-meta,.hljs-meta .hljs-keyword{color:#707880}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css new file mode 100644 index 0000000..7cc62ff --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-subst,.hljs-title{font-weight:400;color:#000}.hljs-comment,.hljs-quote{color:grey;font-style:italic}.hljs-meta{color:olive}.hljs-tag{background:#efefef}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type{font-weight:700;color:navy}.hljs-attribute,.hljs-link,.hljs-number,.hljs-regexp{font-weight:700;color:#00f}.hljs-link,.hljs-number,.hljs-regexp{font-weight:400}.hljs-string{color:green;font-weight:700}.hljs-bullet,.hljs-formula,.hljs-symbol{color:#000;background:#d0eded;font-style:italic}.hljs-doctag{text-decoration:underline}.hljs-template-variable,.hljs-variable{color:#660e7a}.hljs-addition{background:#baeeba}.hljs-deletion{background:#ffc8bd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css new file mode 100644 index 0000000..e78fd08 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#000;color:#f8f8f8}.hljs-comment,.hljs-meta,.hljs-quote{color:#7c7c7c}.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#96cbfe}.hljs-attribute,.hljs-selector-id{color:#ffffb6}.hljs-addition,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#a8ff60}.hljs-subst{color:#daefa3}.hljs-link,.hljs-regexp{color:#e9c062}.hljs-doctag,.hljs-section,.hljs-title,.hljs-type{color:#ffffb6}.hljs-bullet,.hljs-literal,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#c6c5fe}.hljs-deletion,.hljs-number{color:#ff73fd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css new file mode 100644 index 0000000..535ef87 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#404040}.hljs,.hljs-subst{color:#f0f0f0}.hljs-comment{color:#b5b5b5;font-style:italic}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{color:#f0f0f0;font-weight:700}.hljs-string{color:#97bf0d}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#f0f0f0}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#e2c696}.hljs-built_in,.hljs-literal{color:#97bf0d;font-weight:700}.hljs-addition,.hljs-bullet,.hljs-code{color:#397300}.hljs-class{color:#ce9d4d;font-weight:700}.hljs-section,.hljs-title{color:#df471e}.hljs-title>.hljs-built_in{color:#81bce9;font-weight:400}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css new file mode 100644 index 0000000..f008c74 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-subst{color:#000}.hljs-comment{color:#555;font-style:italic}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{color:#000;font-weight:700}.hljs-string{color:navy}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#000}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#5e1700}.hljs-built_in,.hljs-literal{color:navy;font-weight:700}.hljs-addition,.hljs-bullet,.hljs-code{color:#397300}.hljs-class{color:#6f1c00;font-weight:700}.hljs-section,.hljs-title{color:#fb2c00}.hljs-title>.hljs-built_in{color:teal;font-weight:400}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css new file mode 100644 index 0000000..cf56cea --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#221a0f;color:#d3af86}.hljs-comment,.hljs-quote{color:#d6baad}.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#dc3958}.hljs-built_in,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f79a32}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#889b4a}.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#98676a}.hljs-attribute,.hljs-section,.hljs-title{color:#f06431}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css new file mode 100644 index 0000000..b9d0ea4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fbebd4;color:#84613d}.hljs-comment,.hljs-quote{color:#a57a4c}.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#dc3958}.hljs-built_in,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f79a32}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#889b4a}.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#98676a}.hljs-attribute,.hljs-section,.hljs-title{color:#f06431}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css new file mode 100644 index 0000000..b6c3791 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#fff}.hljs-name{color:#01a3a3}.hljs-meta,.hljs-tag{color:#789}.hljs-comment{color:#888}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#4286f4}.hljs-section,.hljs-title{color:#4286f4;font-weight:700}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#62bcbc}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#25c6c6}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css new file mode 100644 index 0000000..3d6a92f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#303030;color:#c5c8c6}.hljs-comment{color:#8d8d8d}.hljs-quote{color:#b3c7d8}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#c66}.hljs-built_in,.hljs-literal,.hljs-number,.hljs-subst .hljs-link,.hljs-type{color:#de935f}.hljs-attribute{color:#f0c674}.hljs-addition,.hljs-bullet,.hljs-params,.hljs-string{color:#b5bd68}.hljs-class,.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#be94bb}.hljs-meta,.hljs-section,.hljs-title{color:#81a2be}.hljs-symbol{color:#dbc4d9}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css new file mode 100644 index 0000000..e024387 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background-color:#f4f4f4;color:#000}.hljs-subst{color:#000}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-variable{color:#050}.hljs-comment,.hljs-quote{color:#777}.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp,.hljs-type{color:#800}.hljs-deletion,.hljs-meta{color:#00e}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-tag,.hljs-title{font-weight:700;color:navy}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css new file mode 100644 index 0000000..fb74d40 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#eaeef3;color:#00193a}.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title{font-weight:700}.hljs-comment{color:#738191}.hljs-addition,.hljs-built_in,.hljs-literal,.hljs-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-tag,.hljs-title,.hljs-type{color:#0048ab}.hljs-attribute,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-meta,.hljs-regexp,.hljs-subst,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#4c81c9}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css new file mode 100644 index 0000000..247e2e9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#23241f;color:#f8f8f2}.hljs-subst,.hljs-tag{color:#f8f8f2}.hljs-emphasis,.hljs-strong{color:#a8a8a2}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#ae81ff}.hljs-code,.hljs-section,.hljs-selector-class,.hljs-title{color:#a6e22e}.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}.hljs-attr,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#f92672}.hljs-attribute,.hljs-symbol{color:#66d9ef}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_{color:#f8f8f2}.hljs-addition,.hljs-built_in,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-variable,.hljs-type,.hljs-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css new file mode 100644 index 0000000..448d85d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css new file mode 100644 index 0000000..ed94590 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#011627;color:#d6deeb}.hljs-keyword{color:#c792ea;font-style:italic}.hljs-built_in{color:#addb67;font-style:italic}.hljs-type{color:#82aaff}.hljs-literal{color:#ff5874}.hljs-number{color:#f78c6c}.hljs-regexp{color:#5ca7e4}.hljs-string{color:#ecc48d}.hljs-subst{color:#d3423e}.hljs-symbol{color:#82aaff}.hljs-class{color:#ffcb8b}.hljs-function{color:#82aaff}.hljs-title{color:#dcdcaa;font-style:italic}.hljs-params{color:#7fdbca}.hljs-comment{color:#637777;font-style:italic}.hljs-doctag{color:#7fdbca}.hljs-meta,.hljs-meta .hljs-keyword{color:#82aaff}.hljs-meta .hljs-string{color:#ecc48d}.hljs-section{color:#82b1ff}.hljs-attr,.hljs-name,.hljs-tag{color:#7fdbca}.hljs-attribute{color:#80cbc4}.hljs-variable{color:#addb67}.hljs-bullet{color:#d9f5dd}.hljs-code{color:#80cbc4}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-strong{color:#addb67;font-weight:700}.hljs-formula{color:#c792ea}.hljs-link{color:#ff869a}.hljs-quote{color:#697098;font-style:italic}.hljs-selector-tag{color:#ff6363}.hljs-selector-id{color:#fad430}.hljs-selector-class{color:#addb67;font-style:italic}.hljs-selector-attr,.hljs-selector-pseudo{color:#c792ea;font-style:italic}.hljs-template-tag{color:#c792ea}.hljs-template-variable{color:#addb67}.hljs-addition{color:#addb67ff;font-style:italic}.hljs-deletion{color:#ef535090;font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css new file mode 100644 index 0000000..4e6403d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: nnfx dark + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason <jmason@ibinx.com> + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/.hljs{background:#333;color:#fff}.language-xml .hljs-meta,.language-xml .hljs-meta-string{font-weight:700;font-style:italic;color:#69f}.hljs-comment,.hljs-quote{font-style:italic;color:#9c6}.hljs-built_in,.hljs-keyword,.hljs-name{color:#a7a}.hljs-attr,.hljs-name{font-weight:700}.hljs-string{font-weight:400}.hljs-code,.hljs-link,.hljs-meta .hljs-string,.hljs-number,.hljs-regexp,.hljs-string{color:#bce}.hljs-bullet,.hljs-symbol,.hljs-template-variable,.hljs-title,.hljs-variable{color:#d40}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{font-weight:700;color:#96c}.hljs-attr,.hljs-function .hljs-title,.hljs-subst,.hljs-tag,.hljs-title.function_{color:#fff}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#797}.hljs-deletion{background-color:#c99}.hljs-meta{color:#69f}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{font-weight:700;color:#69f}.hljs-selector-pseudo{font-style:italic}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css new file mode 100644 index 0000000..469223a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: nnfx light + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason <jmason@ibinx.com> + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/.hljs{background:#fff;color:#000}.language-xml .hljs-meta,.language-xml .hljs-meta-string{font-weight:700;font-style:italic;color:#48b}.hljs-comment,.hljs-quote{font-style:italic;color:#070}.hljs-built_in,.hljs-keyword,.hljs-name{color:#808}.hljs-attr,.hljs-name{font-weight:700}.hljs-string{font-weight:400}.hljs-code,.hljs-link,.hljs-meta .hljs-string,.hljs-number,.hljs-regexp,.hljs-string{color:#00f}.hljs-bullet,.hljs-symbol,.hljs-template-variable,.hljs-title,.hljs-variable{color:#f40}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{font-weight:700;color:#639}.hljs-attr,.hljs-function .hljs-title,.hljs-subst,.hljs-tag,.hljs-title.function_{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#beb}.hljs-deletion{background-color:#fbb}.hljs-meta{color:#269}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{font-weight:700;color:#48b}.hljs-selector-pseudo{font-style:italic}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css new file mode 100644 index 0000000..efbb0c1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2e3440}.hljs,.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:700}.hljs-selector-attr,.hljs-selector-class{color:#8fbcbb}.hljs-property,.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:rgba(163,190,140,.5)}.hljs-deletion{background-color:rgba(191,97,106,.5)}.hljs-built_in,.hljs-class,.hljs-type{color:#8fbcbb}.hljs-function,.hljs-function>.hljs-title,.hljs-title.hljs-function{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:700}.hljs-link:hover{text-decoration:underline}.hljs-comment,.hljs-quote{color:#4c566a}.hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta .hljs-keyword{color:#5e81ac}.hljs-meta .hljs-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-template-variable,.hljs-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.language-abnf .hljs-attribute{color:#88c0d0}.language-abnf .hljs-symbol{color:#ebcb8b}.language-apache .hljs-attribute{color:#88c0d0}.language-apache .hljs-section{color:#81a1c1}.language-arduino .hljs-built_in{color:#88c0d0}.language-aspectj .hljs-meta{color:#d08770}.language-aspectj>.hljs-title{color:#88c0d0}.language-bnf .hljs-attribute{color:#8fbcbb}.language-clojure .hljs-name{color:#88c0d0}.language-clojure .hljs-symbol{color:#ebcb8b}.language-coq .hljs-built_in{color:#88c0d0}.language-cpp .hljs-meta .hljs-string{color:#8fbcbb}.language-css .hljs-built_in{color:#88c0d0}.language-css .hljs-keyword{color:#d08770}.language-diff .hljs-meta,.language-ebnf .hljs-attribute{color:#8fbcbb}.language-glsl .hljs-built_in{color:#88c0d0}.language-groovy .hljs-meta:not(:first-child),.language-haxe .hljs-meta,.language-java .hljs-meta{color:#d08770}.language-ldif .hljs-attribute{color:#8fbcbb}.language-lisp .hljs-name,.language-lua .hljs-built_in,.language-moonscript .hljs-built_in,.language-nginx .hljs-attribute{color:#88c0d0}.language-nginx .hljs-section{color:#5e81ac}.language-pf .hljs-built_in,.language-processing .hljs-built_in{color:#88c0d0}.language-scss .hljs-keyword,.language-stylus .hljs-keyword{color:#81a1c1}.language-swift .hljs-meta{color:#d08770}.language-vim .hljs-built_in{color:#88c0d0;font-style:italic}.language-yaml .hljs-meta{color:#d08770} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css new file mode 100644 index 0000000..c2a0786 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e2e4;background:#282b2e}.hljs-keyword,.hljs-literal,.hljs-selector-id,.hljs-selector-tag{color:#93c763}.hljs-number{color:#ffcd22}.hljs-attribute{color:#668bb0}.hljs-link,.hljs-regexp{color:#d39745}.hljs-meta{color:#557182}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-name,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-tag,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable{color:#8cbbad}.hljs-string,.hljs-symbol{color:#ec7600}.hljs-comment,.hljs-deletion,.hljs-quote{color:#818e96}.hljs-selector-class{color:#a082bd}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-class .hljs-title,.hljs-code,.hljs-section,.hljs-title.class_{color:#fff} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css new file mode 100644 index 0000000..d51dd18 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2f1e2e;color:#a39e9b}.hljs-comment,.hljs-quote{color:#8d8687}.hljs-link,.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-built_in,.hljs-deletion,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f99b15}.hljs-attribute,.hljs-section,.hljs-title{color:#fec418}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css new file mode 100644 index 0000000..3a17c3f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#e7e9db;color:#4f424c}.hljs-comment,.hljs-quote{color:#776e71}.hljs-link,.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-built_in,.hljs-deletion,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f99b15}.hljs-attribute,.hljs-section,.hljs-title{color:#fec418}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3 GIT binary patch literal 1186 zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0 zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5 z@ci`~)&qzDP(lO<O#w_=Ra{yPARq$(#Dp~sI5{Qw_V+=FlW<^Y6zm5ml}e>iQ5p?p z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6<E5Jc&8l!3As3|1J6!wQRd z-V(uI9KaVwV1y!skwSq$AdHNO5ej2s5)+pvCcfxj8FB)Q4jMoM2_^spgCq=wu7Iro zLP#9>A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ zG|~pGp<w4_&QCo@xn1P1M0j6PuuaUUx?w)Q15Ksdv-E1Uyr8jff%m|S;O0KGX4?5u zcY>EGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D zjzpyzPnD3}hBNaS4aFX7=0&~I*<I1gl);;MHu4&K1%I;}H}}pdeV}msD&8ZuzDzH< zjs%}^eZx9tj&Cj4Rem!m7?W9-;wPH|CTw__Q8b>Hu7#4au@qVBglH#-m;QFOx_`=j z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@ z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMy<Tt*(wEUr;=}T08 zwr4iQLXQt-4U$zHxQBaftQf(Yp<ET%udI>P7eA&RS{)h5{??W3^Rq=goFJ>?lA~J- zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9<C`ZfC?$$I3ZovN#F=y~=x<iwqpGc&Fa z!>_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g z`Hd<uZEy9yjY6-c(?%?S4=3`QI_=xfg529VWEEJk$>}h<_WR<Zc1@js5HPhhe{UnV z+qpwizwrJv_3wqH(KR=Zp2|HqVCv6SNX`wV`OPQRXJj)}%e$t=$MRdar)ZmEr9R!$ z<l(H`+bxXKz73<WvNG=#;y(f(W{xUg<V#f`{pr)>vUc|n*%v4Hbb-4tJD40iyF^<n zrd(ZUzA$o-V2Gj0TB0p$%WvWRao2gif1>q%g*&!6>hkYDvi-<Lx9G?TP4>{Uc4yTM zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i` zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~ qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css new file mode 100644 index 0000000..71345a9 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dccf8f;background:url(./pojoaque.jpg) left top #181914}.hljs-comment,.hljs-quote{color:#586e75;font-style:italic}.hljs-addition,.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#b64926}.hljs-doctag,.hljs-number,.hljs-regexp,.hljs-string{color:#468966}.hljs-built_in,.hljs-name,.hljs-section,.hljs-title{color:#ffb03b}.hljs-class .hljs-title,.hljs-tag,.hljs-template-variable,.hljs-title.class_,.hljs-type,.hljs-variable{color:#b58900}.hljs-attribute{color:#b89859}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-deletion{color:#dc322f}.hljs-selector-class,.hljs-selector-id{color:#d3a60c}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css new file mode 100644 index 0000000..e026c45 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#ffffdf}.hljs,.hljs-attr,.hljs-function,.hljs-name,.hljs-number,.hljs-params,.hljs-subst,.hljs-type{color:#000}.hljs-addition,.hljs-comment,.hljs-regexp,.hljs-section,.hljs-selector-pseudo{color:#0aa}.hljs-built_in,.hljs-class,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-selector-class{color:#066;font-weight:700}.hljs-code,.hljs-tag,.hljs-title,.hljs-variable{color:#066}.hljs-selector-attr,.hljs-string{color:#0080ff}.hljs-attribute,.hljs-deletion,.hljs-link,.hljs-symbol{color:#924b72}.hljs-literal,.hljs-meta,.hljs-selector-id{color:#924b72;font-weight:700}.hljs-name,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css new file mode 100644 index 0000000..976e519 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#aaa;background:#000}.hljs-emphasis,.hljs-strong{color:#a8a8a2}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#f5f}.hljs-code .hljs-selector-class{color:#aaf}.hljs-emphasis,.hljs-stronge,.hljs-type{font-style:italic}.hljs-function,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-symbol{color:#ff5}.hljs-subst,.hljs-tag,.hljs-title{color:#aaa}.hljs-attribute{color:#f55}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-variable{color:#88f}.hljs-addition,.hljs-built_in,.hljs-link,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-type{color:#f5f}.hljs-comment,.hljs-deletion,.hljs-meta{color:#5ff} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css new file mode 100644 index 0000000..7f1af8c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-emphasis,.hljs-strong{color:#000}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:navy}.hljs-code .hljs-selector-class{color:purple}.hljs-emphasis,.hljs-stronge,.hljs-type{font-style:italic}.hljs-function,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-symbol{color:olive}.hljs-subst,.hljs-tag,.hljs-title{color:#000}.hljs-attribute{color:maroon}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-variable{color:#0055af}.hljs-addition,.hljs-built_in,.hljs-comment,.hljs-deletion,.hljs-link,.hljs-meta,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-type{color:green} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css new file mode 100644 index 0000000..c8ca25f --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#474949;color:#d1d9e1}.hljs-comment,.hljs-quote{color:#969896;font-style:italic}.hljs-addition,.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-type{color:#c9c}.hljs-number,.hljs-selector-attr,.hljs-selector-pseudo{color:#f99157}.hljs-doctag,.hljs-regexp,.hljs-string{color:#8abeb7}.hljs-built_in,.hljs-name,.hljs-section,.hljs-title{color:#b5bd68}.hljs-class .hljs-title,.hljs-selector-id,.hljs-template-variable,.hljs-title.class_,.hljs-variable{color:#fc6}.hljs-name,.hljs-section,.hljs-strong{font-weight:700}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-subst,.hljs-symbol{color:#f99157}.hljs-deletion{color:#dc322f}.hljs-formula{background:#eee8d5}.hljs-attr,.hljs-attribute{color:#81a2be}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css new file mode 100644 index 0000000..0378678 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#f0f0f0}.hljs-subst{color:#444}.hljs-comment{color:#888}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-attribute{color:#0e9a00}.hljs-function{color:#99069a}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#0c9a9a}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css new file mode 100644 index 0000000..843f268 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#3e5915;background:#f6f5b2}.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#059}.hljs-subst{color:#3e5915}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-link,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#2c009f}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#e60415}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css new file mode 100644 index 0000000..3dd25b4 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2d2b57;color:#e3dfff;font-weight:400}.hljs-subst{color:#e3dfff}.hljs-title{color:#fad000;font-weight:400}.hljs-name{color:#a1feff}.hljs-tag{color:#fff}.hljs-attr{color:#f8d000;font-style:italic}.hljs-built_in,.hljs-keyword,.hljs-section,.hljs-selector-tag{color:#fb9e00}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-code,.hljs-deletion,.hljs-quote,.hljs-regexp,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-string,.hljs-symbol,.hljs-template-tag{color:#4cd213}.hljs-meta,.hljs-meta .hljs-string{color:#fb9e00}.hljs-comment{color:#ac65ff}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong{font-weight:400}.hljs-literal,.hljs-number{color:#fa658d}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css new file mode 100644 index 0000000..377d61a --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1c1b19;color:#fce8c3}.hljs-literal,.hljs-quote,.hljs-subst{color:#fce8c3}.hljs-symbol,.hljs-type{color:#68a8e4}.hljs-deletion,.hljs-keyword{color:#ef2f27}.hljs-attribute,.hljs-function,.hljs-name,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#fbb829}.hljs-class,.hljs-code,.hljs-property,.hljs-template-variable,.hljs-variable{color:#0aaeb3}.hljs-addition,.hljs-bullet,.hljs-regexp,.hljs-string{color:#98bc37}.hljs-built_in,.hljs-params{color:#ff5c8f}.hljs-selector-tag,.hljs-template-tag{color:#2c78bf}.hljs-comment,.hljs-link,.hljs-meta,.hljs-number{color:#918175}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css new file mode 100644 index 0000000..33cea55 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css @@ -0,0 +1,13 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: StackOverflow Dark + Description: Dark theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/.hljs{color:#fff;background:#1c1b1b}.hljs-subst{color:#fff}.hljs-comment{color:#999}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#88aece}.hljs-attribute{color:#c59bc1}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#f08d49}.hljs-selector-class{color:#88aece}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#b5bd68}.hljs-meta,.hljs-selector-pseudo{color:#88aece}.hljs-built_in,.hljs-literal,.hljs-title{color:#f08d49}.hljs-bullet,.hljs-code{color:#ccc}.hljs-meta .hljs-string{color:#b5bd68}.hljs-deletion{color:#de7176}.hljs-addition{color:#76c490}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css new file mode 100644 index 0000000..c36d63d --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css @@ -0,0 +1,13 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: StackOverflow Light + Description: Light theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/.hljs{color:#2f3337;background:#f6f6f6}.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#b75501}.hljs-selector-class{color:#015692}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-literal,.hljs-title{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css new file mode 100644 index 0000000..9210ae6 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#000;color:#f8f8f8}.hljs-comment,.hljs-quote{color:#aeaeae;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#e28964}.hljs-string{color:#65b042}.hljs-subst{color:#daefa3}.hljs-link,.hljs-regexp{color:#e9c062}.hljs-name,.hljs-section,.hljs-tag,.hljs-title{color:#89bdff}.hljs-class .hljs-title,.hljs-doctag,.hljs-title.class_{text-decoration:underline}.hljs-bullet,.hljs-number,.hljs-symbol{color:#3387cc}.hljs-params,.hljs-template-variable,.hljs-variable{color:#3e87e3}.hljs-attribute{color:#cda869}.hljs-meta{color:#8996a8}.hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}.hljs-addition{background-color:#253b22;color:#f8f8f8}.hljs-deletion{background-color:#420e09;color:#f8f8f8}.hljs-selector-class{color:#9b703f}.hljs-selector-id{color:#8b98ab}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css new file mode 100644 index 0000000..2f71b26 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-quote{color:#7285b7}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ff9da4}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#ffc58f}.hljs-attribute{color:#ffeead}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#d1f1a9}.hljs-section,.hljs-title{color:#bbdaff}.hljs-keyword,.hljs-selector-tag{color:#ebbbff}.hljs{background:#002451;color:#fff}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css new file mode 100644 index 0000000..d335629 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-quote{color:#969896}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#d54e53}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#e78c45}.hljs-attribute{color:#e7c547}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#b9ca4a}.hljs-section,.hljs-title{color:#7aa6da}.hljs-keyword,.hljs-selector-tag{color:#c397d8}.hljs{background:#000;color:#eaeaea}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css new file mode 100644 index 0000000..fb695c1 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote,.hljs-variable{color:green}.hljs-built_in,.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#00f}.hljs-addition,.hljs-attribute,.hljs-literal,.hljs-section,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type{color:#a31515}.hljs-deletion,.hljs-meta,.hljs-selector-attr,.hljs-selector-pseudo{color:#2b91af}.hljs-doctag{color:grey}.hljs-attr{color:red}.hljs-bullet,.hljs-link,.hljs-symbol{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css new file mode 100644 index 0000000..7f6fe11 --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1e1e1e;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta .hljs-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css new file mode 100644 index 0000000..cda4adc --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.xml .hljs-meta{color:silver}.hljs-comment,.hljs-quote{color:#007400}.hljs-attribute,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#aa0d91}.hljs-template-variable,.hljs-variable{color:#3f6e74}.hljs-code,.hljs-meta .hljs-string,.hljs-string{color:#c41a16}.hljs-link,.hljs-regexp{color:#0e0eff}.hljs-bullet,.hljs-number,.hljs-symbol,.hljs-title{color:#1c00cf}.hljs-meta,.hljs-section{color:#643820}.hljs-built_in,.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-type{color:#5c2699}.hljs-attr{color:#836c28}.hljs-subst{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-selector-class,.hljs-selector-id{color:#9b703f}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css new file mode 100644 index 0000000..ef34f0c --- /dev/null +++ b/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eaeaea;background:#000}.hljs-subst{color:#eaeaea}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-type{color:#eaeaea}.hljs-params{color:#da0000}.hljs-literal,.hljs-name,.hljs-number{color:red;font-weight:bolder}.hljs-comment{color:#969896}.hljs-quote,.hljs-selector-id{color:#0ff}.hljs-template-variable,.hljs-title,.hljs-variable{color:#0ff;font-weight:700}.hljs-keyword,.hljs-selector-class,.hljs-symbol{color:#fff000}.hljs-bullet,.hljs-string{color:#0f0}.hljs-section,.hljs-tag{color:#000fff}.hljs-selector-tag{color:#000fff;font-weight:700}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-regexp{color:#f0f}.hljs-meta{color:#fff;font-weight:bolder} \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js b/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js new file mode 100644 index 0000000..3a6d663 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},i=function(e,t,r,n){for(var o=[],i=0;i<e.length;i++)if("text"===e[i].type){var l=e[i].data,d=!0,s=0,f=void 0;for(-1!==(f=l.indexOf(t))&&(s=f,o.push({type:"text",data:l.slice(0,s)}),d=!1);;){if(d){if(-1===(f=l.indexOf(t,s)))break;o.push({type:"text",data:l.slice(s,f)}),s=f}else{if(-1===(f=a(r,l,s+t.length)))break;o.push({type:"math",data:l.slice(s+t.length,f),rawData:l.slice(s,f+r.length),display:n}),s=f+r.length}d=!d}o.push({type:"text",data:l.slice(s)})}else o.push(e[i]);return o},l=function(e,t){for(var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=i(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters),n=document.createDocumentFragment(),a=0;a<r.length;a++)if("text"===r[a].type)n.appendChild(document.createTextNode(r[a].data));else{var l=document.createElement("span"),d=r[a].data;t.displayMode=r[a].display;try{t.preProcess&&(d=t.preProcess(d)),o.a.render(d,l,t)}catch(e){if(!(e instanceof o.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[a].data+"` with ",e),n.appendChild(document.createTextNode(r[a].rawData));continue}n.appendChild(l)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=l(o.textContent,r);n+=a.childNodes.length-1,t.replaceChild(a,o)}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs b/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs new file mode 100644 index 0000000..58de8b6 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs @@ -0,0 +1,215 @@ +import katex from '../katex.mjs'; + +/* eslint no-constant-condition:0 */ +const findEndOfMath = function findEndOfMath(delimiter, text, startIndex) { + // Adapted from + // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx + let index = startIndex; + let braceLevel = 0; + const delimLength = delimiter.length; + + while (index < text.length) { + const character = text[index]; + + if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) { + return index; + } else if (character === "\\") { + index++; + } else if (character === "{") { + braceLevel++; + } else if (character === "}") { + braceLevel--; + } + + index++; + } + + return -1; +}; + +const splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) { + const finalData = []; + + for (let i = 0; i < startData.length; i++) { + if (startData[i].type === "text") { + const text = startData[i].data; + let lookingForLeft = true; + let currIndex = 0; + let nextIndex; + nextIndex = text.indexOf(leftDelim); + + if (nextIndex !== -1) { + currIndex = nextIndex; + finalData.push({ + type: "text", + data: text.slice(0, currIndex) + }); + lookingForLeft = false; + } + + while (true) { + if (lookingForLeft) { + nextIndex = text.indexOf(leftDelim, currIndex); + + if (nextIndex === -1) { + break; + } + + finalData.push({ + type: "text", + data: text.slice(currIndex, nextIndex) + }); + currIndex = nextIndex; + } else { + nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length); + + if (nextIndex === -1) { + break; + } + + finalData.push({ + type: "math", + data: text.slice(currIndex + leftDelim.length, nextIndex), + rawData: text.slice(currIndex, nextIndex + rightDelim.length), + display: display + }); + currIndex = nextIndex + rightDelim.length; + } + + lookingForLeft = !lookingForLeft; + } + + finalData.push({ + type: "text", + data: text.slice(currIndex) + }); + } else { + finalData.push(startData[i]); + } + } + + return finalData; +}; + +/* eslint no-console:0 */ + +const splitWithDelimiters = function splitWithDelimiters(text, delimiters) { + let data = [{ + type: "text", + data: text + }]; + + for (let i = 0; i < delimiters.length; i++) { + const delimiter = delimiters[i]; + data = splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false); + } + + return data; +}; +/* Note: optionsCopy is mutated by this method. If it is ever exposed in the + * API, we should copy it before mutating. + */ + + +const renderMathInText = function renderMathInText(text, optionsCopy) { + const data = splitWithDelimiters(text, optionsCopy.delimiters); + const fragment = document.createDocumentFragment(); + + for (let i = 0; i < data.length; i++) { + if (data[i].type === "text") { + fragment.appendChild(document.createTextNode(data[i].data)); + } else { + const span = document.createElement("span"); + let math = data[i].data; // Override any display mode defined in the settings with that + // defined by the text itself + + optionsCopy.displayMode = data[i].display; + + try { + if (optionsCopy.preProcess) { + math = optionsCopy.preProcess(math); + } + + katex.render(math, span, optionsCopy); + } catch (e) { + if (!(e instanceof katex.ParseError)) { + throw e; + } + + optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e); + fragment.appendChild(document.createTextNode(data[i].rawData)); + continue; + } + + fragment.appendChild(span); + } + } + + return fragment; +}; + +const renderElem = function renderElem(elem, optionsCopy) { + for (let i = 0; i < elem.childNodes.length; i++) { + const childNode = elem.childNodes[i]; + + if (childNode.nodeType === 3) { + // Text node + const frag = renderMathInText(childNode.textContent, optionsCopy); + i += frag.childNodes.length - 1; + elem.replaceChild(frag, childNode); + } else if (childNode.nodeType === 1) { + // Element node + const className = ' ' + childNode.className + ' '; + const shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(x => className.indexOf(' ' + x + ' ') === -1); + + if (shouldRender) { + renderElem(childNode, optionsCopy); + } + } // Otherwise, it's something else, and ignore it. + + } +}; + +const renderMathInElement = function renderMathInElement(elem, options) { + if (!elem) { + throw new Error("No element provided to render"); + } + + const optionsCopy = {}; // Object.assign(optionsCopy, option) + + for (const option in options) { + if (options.hasOwnProperty(option)) { + optionsCopy[option] = options[option]; + } + } // default options + + + optionsCopy.delimiters = optionsCopy.delimiters || [{ + left: "$$", + right: "$$", + display: true + }, { + left: "\\(", + right: "\\)", + display: false + }, // LaTeX uses $…$, but it ruins the display of normal `$` in text: + // {left: "$", right: "$", display: false}, + // \[…\] must come last in this array. Otherwise, renderMathInElement + // will search for \[ before it searches for $$ or \( + // That makes it susceptible to finding a \\[0.3em] row delimiter and + // treating it as if it were the start of a KaTeX math zone. + { + left: "\\[", + right: "\\]", + display: true + }]; + optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"]; + optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || []; + optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different + // math elements within a single call to `renderMathInElement`. + + optionsCopy.macros = optionsCopy.macros || {}; + renderElem(elem, optionsCopy); +}; + +export default renderMathInElement; diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css new file mode 100644 index 0000000..555ed11 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css @@ -0,0 +1 @@ +.katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all} diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js new file mode 100644 index 0000000..e0354d6 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e,t){void 0===t&&(t=r);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs new file mode 100644 index 0000000..b6ed1ee --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs @@ -0,0 +1,85 @@ +// Set these to how you want inline and display math to be delimited. +const defaultCopyDelimiters = { + inline: ['$', '$'], + // alternative: ['\(', '\)'] + display: ['$$', '$$'] // alternative: ['\[', '\]'] + +}; // Replace .katex elements with their TeX source (<annotation> element). +// Modifies fragment in-place. Useful for writing your own 'copy' handler, +// as in copy-tex.js. + +const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) { + if (copyDelimiters === void 0) { + copyDelimiters = defaultCopyDelimiters; + } + + // Remove .katex-html blocks that are preceded by .katex-mathml blocks + // (which will get replaced below). + const katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html'); + + for (let i = 0; i < katexHtml.length; i++) { + const element = katexHtml[i]; + + if (element.remove) { + element.remove(null); + } else { + element.parentNode.removeChild(element); + } + } // Replace .katex-mathml elements with their annotation (TeX source) + // descendant, with inline delimiters. + + + const katexMathml = fragment.querySelectorAll('.katex-mathml'); + + for (let i = 0; i < katexMathml.length; i++) { + const element = katexMathml[i]; + const texSource = element.querySelector('annotation'); + + if (texSource) { + if (element.replaceWith) { + element.replaceWith(texSource); + } else { + element.parentNode.replaceChild(texSource, element); + } + + texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1]; + } + } // Switch display math to display delimiters. + + + const displays = fragment.querySelectorAll('.katex-display annotation'); + + for (let i = 0; i < displays.length; i++) { + const element = displays[i]; + element.innerHTML = copyDelimiters.display[0] + element.innerHTML.substr(copyDelimiters.inline[0].length, element.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1]; + } + + return fragment; +}; + +document.addEventListener('copy', function (event) { + const selection = window.getSelection(); + + if (selection.isCollapsed) { + return; // default action OK if selection is empty + } + + const fragment = selection.getRangeAt(0).cloneContents(); + + if (!fragment.querySelector('.katex-mathml')) { + return; // default action OK if no .katex-mathml elements + } // Preserve usual HTML copy/paste behavior. + + + const html = []; + + for (let i = 0; i < fragment.childNodes.length; i++) { + html.push(fragment.childNodes[i].outerHTML); + } + + event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version. + + event.clipboardData.setData('text/plain', katexReplaceWithTex(fragment).textContent); // Prevent normal copy handling. + + event.preventDefault(); +}); diff --git a/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js new file mode 100644 index 0000000..ae9f528 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],t);else{var r="object"==typeof exports?t(require("katex")):t(e.katex);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),u=document.body.getElementsByTagName("script");(u=Array.prototype.slice.call(u)).forEach(function(e){if(!e.type||!e.type.match(/math\/tex/i))return-1;var t=null!=e.type.match(/mode\s*=\s*display(;|\s|\n|$)/),r=document.createElement(t?"div":"span");r.setAttribute("class",t?"equation":"inline-equation");try{o.a.render(e.text,r,{displayMode:t})}catch(t){r.textContent=e.text}e.parentNode.replaceChild(r,e)})}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs new file mode 100644 index 0000000..7cfb90e --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs @@ -0,0 +1,24 @@ +import katex from '../katex.mjs'; + +let scripts = document.body.getElementsByTagName("script"); +scripts = Array.prototype.slice.call(scripts); +scripts.forEach(function (script) { + if (!script.type || !script.type.match(/math\/tex/i)) { + return -1; + } + + const display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null; + const katexElement = document.createElement(display ? "div" : "span"); + katexElement.setAttribute("class", display ? "equation" : "inline-equation"); + + try { + katex.render(script.text, katexElement, { + displayMode: display + }); + } catch (err) { + //console.error(err); linter doesn't like this + katexElement.textContent = script.text; + } + + script.parentNode.replaceChild(katexElement, script); +}); diff --git a/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js b/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js new file mode 100644 index 0000000..8fd9cca --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js @@ -0,0 +1 @@ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(o,a,function(e){return t[e]}.bind(null,a));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){"use strict";n.r(e);var o=n(0),a=n.n(o);a.a.__defineMacro("\\ce",function(t){return r(t.consumeArgs(1)[0],"ce")}),a.a.__defineMacro("\\pu",function(t){return r(t.consumeArgs(1)[0],"pu")}),a.a.__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var r=function(t,e){for(var n="",o=t[t.length-1].loc.start,a=t.length-1;a>=0;a--)t[a].loc.start>o&&(n+=" ",o=t[a].loc.start),n+=t[a].text,o+=t[a].text.length;return c.go(i.go(n,e))},i={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",a={};a.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var r=10,c=[];;){n!==t?(r=10,n=t):r--;var u=i.stateMachines[e],p=u.transitions[o]||u.transitions["*"];t:for(var s=0;s<p.length;s++){var _=i.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(u.actions[d.action_[m].type_])l=u.actions[d.action_[m].type_](a,_.match_,d.action_[m].option);else{if(!i.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=i.actions[d.action_[m].type_](a,_.match_,d.action_[m].option)}i.concatArray(c,l)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(r<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=i.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return i.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return i.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return i.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return i.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return i.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return i.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return i.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return i.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return i.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]\/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return i.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return i.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=i.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=i.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return i.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return i.go(e,"text")},"{text}":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return i.go(e,"tex-math")},"tex-math tight":function(t,e){return i.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return i.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return i.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};i.stateMachines={ce:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return i.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return i.concatArray(n,this.output(t)),i.concatArray(n,i.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=i.patterns.match_("orbital",t.o||""),a=i.patterns.match_("one lowercase greek letter $",t.o||""),r=i.patterns.match_("one lowercase latin letter $",t.o||""),c=i.patterns.match_("$one lowercase latin letter$ $",t.o||""),u="-"===e&&(o&&""===o.remainder||a||r||c);!u||t.a||t.b||t.p||t.d||t.q||o||!r||(t.o="$"+t.o+"$");var p=[];return u?(i.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=i.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(i.concatArray(p,i.actions["d="](t,e)),i.concatArray(p,this.output(t))):(i.concatArray(p,this.output(t)),i.concatArray(p,i.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:i.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,a,r;t.r?(a="M"===t.rdt?i.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:i.go(t.rd),r="M"===t.rqt?i.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:i.go(t.rq),o={type_:"arrow",r:t.r,rd:a,rq:r}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&i.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:i.go(t.a,"a"),b:i.go(t.b,"bd"),p:i.go(t.p,"pq"),o:i.go(t.o,"o"),q:i.go(t.q,"pq"),d:i.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var c in t)"parenthesisLevel"!==c&&"beginsWithBond"!==c&&delete t[c];return o},"oxidation-output":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:i.go(e[0]),p2:i.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:i.go(e[0]),p2:i.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:i.go(e[0]),p2:i.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:i.go(e[0]),p2:i.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:i.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:i.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"pq")}}}},bd:{transitions:i.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"bd")}}}},oxidation:{transitions:i.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:i.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(i.concatArray(n,i.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?i.concatArray(n,i.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),i.concatArray(n,i.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=i.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=i.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var a={d:i.go(t.d,"pu"),q:i.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:a.d,p2:a.q}:(e=a.d,a.d.length>1||a.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),i.concatArray(e,a.q))}else e=i.go(t.d,"pu-2");for(var r in t)delete t[r];return e}}},"pu-2":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=i.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?i.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:i.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var c={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var r=t[a];"string"==typeof r?n+=r:(n+=c._go2(r),"1st-level escape"===r.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?c.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:c._goInner(t.a),b:c._goInner(t.b),p:c._goInner(t.p),o:c._goInner(t.o),q:c._goInner(t.q),d:c._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+c._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+c._goInner(t.p1);break;case"bond":if(!(e=c._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+c._goInner(t.p1)+"}_{"+c._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+c._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var r={rd:c._goInner(t.rd),rq:c._goInner(t.rq)},i="\\x"+c._getArrow(t.r);r.rq&&(i+="[{"+r.rq+"}]"),e=i+=r.rd?"{"+r.rd+"}":"{}";break;case"operator":e=c._getOperator(t.kind_);break;case"1st-level escape":e=t.p1+" ";break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}}}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs b/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs new file mode 100644 index 0000000..46241b5 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs @@ -0,0 +1,3109 @@ +import katex from '../katex.mjs'; + +/* eslint-disable */ + +/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */ + +/* vim: set ts=2 et sw=2 tw=80: */ + +/************************************************************* + * + * KaTeX mhchem.js + * + * This file implements a KaTeX version of mhchem version 3.3.0. + * It is adapted from MathJax/extensions/TeX/mhchem.js + * It differs from the MathJax version as follows: + * 1. The interface is changed so that it can be called from KaTeX, not MathJax. + * 2. \rlap and \llap are replaced with \mathrlap and \mathllap. + * 3. Four lines of code are edited in order to use \raisebox instead of \raise. + * 4. The reaction arrow code is simplified. All reaction arrows are rendered + * using KaTeX extensible arrows instead of building non-extensible arrows. + * 5. \tripledash vertical alignment is slightly adjusted. + * + * This code, as other KaTeX code, is released under the MIT license. + * + * /************************************************************* + * + * MathJax/extensions/TeX/mhchem.js + * + * Implements the \ce command for handling chemical formulas + * from the mhchem LaTeX package. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2011-2015 The MathJax Consortium + * Copyright (c) 2015-2018 Martin Hensel + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// Coding Style +// - use '' for identifiers that can by minified/uglified +// - use "" for strings that need to stay untouched +// version: "3.3.0" for MathJax and KaTeX +// Add \ce, \pu, and \tripledash to the KaTeX macros. +katex.__defineMacro("\\ce", function (context) { + return chemParse(context.consumeArgs(1)[0], "ce"); +}); + +katex.__defineMacro("\\pu", function (context) { + return chemParse(context.consumeArgs(1)[0], "pu"); +}); // Needed for \bond for the ~ forms +// Raise by 2.56mu, not 2mu. We're raising a hyphen-minus, U+002D, not +// a mathematical minus, U+2212. So we need that extra 0.56. + + +katex.__defineMacro("\\tripledash", "{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu" + "\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}"); +// This is the main function for handing the \ce and \pu commands. +// It takes the argument to \ce or \pu and returns the corresponding TeX string. +// + +var chemParse = function chemParse(tokens, stateMachine) { + // Recreate the argument string from KaTeX's array of tokens. + var str = ""; + var expectedLoc = tokens[tokens.length - 1].loc.start; + + for (var i = tokens.length - 1; i >= 0; i--) { + if (tokens[i].loc.start > expectedLoc) { + // context.consumeArgs has eaten a space. + str += " "; + expectedLoc = tokens[i].loc.start; + } + + str += tokens[i].text; + expectedLoc += tokens[i].text.length; + } + + var tex = texify.go(mhchemParser.go(str, stateMachine)); + return tex; +}; // +// Core parser for mhchem syntax (recursive) +// + +/** @type {MhchemParser} */ + + +var mhchemParser = { + // + // Parses mchem \ce syntax + // + // Call like + // go("H2O"); + // + go: function go(input, stateMachine) { + if (!input) { + return []; + } + + if (stateMachine === undefined) { + stateMachine = 'ce'; + } + + var state = '0'; // + // String buffers for parsing: + // + // buffer.a == amount + // buffer.o == element + // buffer.b == left-side superscript + // buffer.p == left-side subscript + // buffer.q == right-side subscript + // buffer.d == right-side superscript + // + // buffer.r == arrow + // buffer.rdt == arrow, script above, type + // buffer.rd == arrow, script above, content + // buffer.rqt == arrow, script below, type + // buffer.rq == arrow, script below, content + // + // buffer.text_ + // buffer.rm + // etc. + // + // buffer.parenthesisLevel == int, starting at 0 + // buffer.sb == bool, space before + // buffer.beginsWithBond == bool + // + // These letters are also used as state names. + // + // Other states: + // 0 == begin of main part (arrow/operator unlikely) + // 1 == next entity + // 2 == next entity (arrow/operator unlikely) + // 3 == next atom + // c == macro + // + + /** @type {Buffer} */ + + var buffer = {}; + buffer['parenthesisLevel'] = 0; + input = input.replace(/\n/g, " "); + input = input.replace(/[\u2212\u2013\u2014\u2010]/g, "-"); + input = input.replace(/[\u2026]/g, "..."); // + // Looks through mhchemParser.transitions, to execute a matching action + // (recursive) + // + + var lastInput; + var watchdog = 10; + /** @type {ParserOutput[]} */ + + var output = []; + + while (true) { + if (lastInput !== input) { + watchdog = 10; + lastInput = input; + } else { + watchdog--; + } // + // Find actions in transition table + // + + + var machine = mhchemParser.stateMachines[stateMachine]; + var t = machine.transitions[state] || machine.transitions['*']; + + iterateTransitions: for (var i = 0; i < t.length; i++) { + var matches = mhchemParser.patterns.match_(t[i].pattern, input); + + if (matches) { + // + // Execute actions + // + var task = t[i].task; + + for (var iA = 0; iA < task.action_.length; iA++) { + var o; // + // Find and execute action + // + + if (machine.actions[task.action_[iA].type_]) { + o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option); + } else if (mhchemParser.actions[task.action_[iA].type_]) { + o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option); + } else { + throw ["MhchemBugA", "mhchem bug A. Please report. (" + task.action_[iA].type_ + ")"]; // Trying to use non-existing action + } // + // Add output + // + + + mhchemParser.concatArray(output, o); + } // + // Set next state, + // Shorten input, + // Continue with next character + // (= apply only one transition per position) + // + + + state = task.nextState || state; + + if (input.length > 0) { + if (!task.revisit) { + input = matches.remainder; + } + + if (!task.toContinue) { + break iterateTransitions; + } + } else { + return output; + } + } + } // + // Prevent infinite loop + // + + + if (watchdog <= 0) { + throw ["MhchemBugU", "mhchem bug U. Please report."]; // Unexpected character + } + } + }, + concatArray: function concatArray(a, b) { + if (b) { + if (Array.isArray(b)) { + for (var iB = 0; iB < b.length; iB++) { + a.push(b[iB]); + } + } else { + a.push(b); + } + } + }, + patterns: { + // + // Matching patterns + // either regexps or function that return null or {match_:"a", remainder:"bc"} + // + patterns: { + // property names must not look like integers ("2") for correct property traversal order, later on + 'empty': /^$/, + 'else': /^./, + 'else2': /^./, + 'space': /^\s/, + 'space A': /^\s(?=[A-Z\\$])/, + 'space$': /^\s$/, + 'a-z': /^[a-z]/, + 'x': /^x/, + 'x$': /^x$/, + 'i$': /^i$/, + 'letters': /^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/, + '\\greek': /^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/, + 'one lowercase latin letter $': /^(?:([a-z])(?:$|[^a-zA-Z]))$/, + '$one lowercase latin letter$ $': /^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/, + 'one lowercase greek letter $': /^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/, + 'digits': /^[0-9]+/, + '-9.,9': /^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/, + '-9.,9 no missing 0': /^[+\-]?[0-9]+(?:[.,][0-9]+)?/, + '(-)(9.,9)(e)(99)': function e99(input) { + var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/); + + if (m && m[0]) { + return { + match_: m.splice(1), + remainder: input.substr(m[0].length) + }; + } + + return null; + }, + '(-)(9)^(-9)': function _(input) { + var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/); + + if (m && m[0]) { + return { + match_: m.splice(1), + remainder: input.substr(m[0].length) + }; + } + + return null; + }, + 'state of aggregation $': function stateOfAggregation$(input) { + // ... or crystal system + var a = mhchemParser.patterns.findObserveGroups(input, "", /^\([a-z]{1,3}(?=[\),])/, ")", ""); // (aq), (aq,$\infty$), (aq, sat) + + if (a && a.remainder.match(/^($|[\s,;\)\]\}])/)) { + return a; + } // AND end of 'phrase' + + + var m = input.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/); // OR crystal system ($o$) (\ca$c$) + + if (m) { + return { + match_: m[0], + remainder: input.substr(m[0].length) + }; + } + + return null; + }, + '_{(state of aggregation)}$': /^_\{(\([a-z]{1,3}\))\}/, + '{[(': /^(?:\\\{|\[|\()/, + ')]}': /^(?:\)|\]|\\\})/, + ', ': /^[,;]\s*/, + ',': /^[,;]/, + '.': /^[.]/, + '. ': /^([.\u22C5\u00B7\u2022])\s*/, + '...': /^\.\.\.(?=$|[^.])/, + '* ': /^([*])\s*/, + '^{(...)}': function _(input) { + return mhchemParser.patterns.findObserveGroups(input, "^{", "", "", "}"); + }, + '^($...$)': function $$(input) { + return mhchemParser.patterns.findObserveGroups(input, "^", "$", "$", ""); + }, + '^a': /^\^([0-9]+|[^\\_])/, + '^\\x{}{}': function x(input) { + return mhchemParser.patterns.findObserveGroups(input, "^", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); + }, + '^\\x{}': function x(input) { + return mhchemParser.patterns.findObserveGroups(input, "^", /^\\[a-zA-Z]+\{/, "}", ""); + }, + '^\\x': /^\^(\\[a-zA-Z]+)\s*/, + '^(-1)': /^\^(-?\d+)/, + '\'': /^'/, + '_{(...)}': function _(input) { + return mhchemParser.patterns.findObserveGroups(input, "_{", "", "", "}"); + }, + '_($...$)': function _$$(input) { + return mhchemParser.patterns.findObserveGroups(input, "_", "$", "$", ""); + }, + '_9': /^_([+\-]?[0-9]+|[^\\])/, + '_\\x{}{}': function _X(input) { + return mhchemParser.patterns.findObserveGroups(input, "_", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); + }, + '_\\x{}': function _X(input) { + return mhchemParser.patterns.findObserveGroups(input, "_", /^\\[a-zA-Z]+\{/, "}", ""); + }, + '_\\x': /^_(\\[a-zA-Z]+)\s*/, + '^_': /^(?:\^(?=_)|\_(?=\^)|[\^_]$)/, + '{}': /^\{\}/, + '{...}': function _(input) { + return mhchemParser.patterns.findObserveGroups(input, "", "{", "}", ""); + }, + '{(...)}': function _(input) { + return mhchemParser.patterns.findObserveGroups(input, "{", "", "", "}"); + }, + '$...$': function $$(input) { + return mhchemParser.patterns.findObserveGroups(input, "", "$", "$", ""); + }, + '${(...)}$': function $$(input) { + return mhchemParser.patterns.findObserveGroups(input, "${", "", "", "}$"); + }, + '$(...)$': function $$(input) { + return mhchemParser.patterns.findObserveGroups(input, "$", "", "", "$"); + }, + '=<>': /^[=<>]/, + '#': /^[#\u2261]/, + '+': /^\+/, + '-$': /^-(?=[\s_},;\]/]|$|\([a-z]+\))/, + // -space -, -; -] -/ -$ -state-of-aggregation + '-9': /^-(?=[0-9])/, + '- orbital overlap': /^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/, + '-': /^-/, + 'pm-operator': /^(?:\\pm|\$\\pm\$|\+-|\+\/-)/, + 'operator': /^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/, + 'arrowUpDown': /^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/, + '\\bond{(...)}': function bond(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\bond{", "", "", "}"); + }, + '->': /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/, + 'CMT': /^[CMT](?=\[)/, + '[(...)]': function _(input) { + return mhchemParser.patterns.findObserveGroups(input, "[", "", "", "]"); + }, + '1st-level escape': /^(&|\\\\|\\hline)\s*/, + '\\,': /^(?:\\[,\ ;:])/, + // \\x - but output no space before + '\\x{}{}': function x(input) { + return mhchemParser.patterns.findObserveGroups(input, "", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); + }, + '\\x{}': function x(input) { + return mhchemParser.patterns.findObserveGroups(input, "", /^\\[a-zA-Z]+\{/, "}", ""); + }, + '\\ca': /^\\ca(?:\s+|(?![a-zA-Z]))/, + '\\x': /^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/, + 'orbital': /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/, + // only those with numbers in front, because the others will be formatted correctly anyway + 'others': /^[\/~|]/, + '\\frac{(...)}': function frac(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\frac{", "", "", "}", "{", "", "", "}"); + }, + '\\overset{(...)}': function overset(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\overset{", "", "", "}", "{", "", "", "}"); + }, + '\\underset{(...)}': function underset(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\underset{", "", "", "}", "{", "", "", "}"); + }, + '\\underbrace{(...)}': function underbrace(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\underbrace{", "", "", "}_", "{", "", "", "}"); + }, + '\\color{(...)}0': function color0(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\color{", "", "", "}"); + }, + '\\color{(...)}{(...)}1': function color1(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\color{", "", "", "}", "{", "", "", "}"); + }, + '\\color(...){(...)}2': function color2(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\color", "\\", "", /^(?=\{)/, "{", "", "", "}"); + }, + '\\ce{(...)}': function ce(input) { + return mhchemParser.patterns.findObserveGroups(input, "\\ce{", "", "", "}"); + }, + 'oxidation$': /^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, + 'd-oxidation$': /^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, + // 0 could be oxidation or charge + 'roman numeral': /^[IVX]+/, + '1/2$': /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/, + 'amount': function amount(input) { + var match; // e.g. 2, 0.5, 1/2, -2, n/2, +; $a$ could be added later in parsing + + match = input.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/); + + if (match) { + return { + match_: match[0], + remainder: input.substr(match[0].length) + }; + } + + var a = mhchemParser.patterns.findObserveGroups(input, "", "$", "$", ""); + + if (a) { + // e.g. $2n-1$, $-$ + match = a.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/); + + if (match) { + return { + match_: match[0], + remainder: input.substr(match[0].length) + }; + } + } + + return null; + }, + 'amount2': function amount2(input) { + return this['amount'](input); + }, + '(KV letters),': /^(?:[A-Z][a-z]{0,2}|i)(?=,)/, + 'formula$': function formula$(input) { + if (input.match(/^\([a-z]+\)$/)) { + return null; + } // state of aggregation = no formula + + + var match = input.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/); + + if (match) { + return { + match_: match[0], + remainder: input.substr(match[0].length) + }; + } + + return null; + }, + 'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/, + '/': /^\s*(\/)\s*/, + '//': /^\s*(\/\/)\s*/, + '*': /^\s*[*.]\s*/ + }, + findObserveGroups: function findObserveGroups(input, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine) { + /** @type {{(input: string, pattern: string | RegExp): string | string[] | null;}} */ + var _match = function _match(input, pattern) { + if (typeof pattern === "string") { + if (input.indexOf(pattern) !== 0) { + return null; + } + + return pattern; + } else { + var match = input.match(pattern); + + if (!match) { + return null; + } + + return match[0]; + } + }; + /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */ + + + var _findObserveGroups = function _findObserveGroups(input, i, endChars) { + var braces = 0; + + while (i < input.length) { + var a = input.charAt(i); + + var match = _match(input.substr(i), endChars); + + if (match !== null && braces === 0) { + return { + endMatchBegin: i, + endMatchEnd: i + match.length + }; + } else if (a === "{") { + braces++; + } else if (a === "}") { + if (braces === 0) { + throw ["ExtraCloseMissingOpen", "Extra close brace or missing open brace"]; + } else { + braces--; + } + } + + i++; + } + + if (braces > 0) { + return null; + } + + return null; + }; + + var match = _match(input, begExcl); + + if (match === null) { + return null; + } + + input = input.substr(match.length); + match = _match(input, begIncl); + + if (match === null) { + return null; + } + + var e = _findObserveGroups(input, match.length, endIncl || endExcl); + + if (e === null) { + return null; + } + + var match1 = input.substring(0, endIncl ? e.endMatchEnd : e.endMatchBegin); + + if (!(beg2Excl || beg2Incl)) { + return { + match_: match1, + remainder: input.substr(e.endMatchEnd) + }; + } else { + var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl); + + if (group2 === null) { + return null; + } + /** @type {string[]} */ + + + var matchRet = [match1, group2.match_]; + return { + match_: combine ? matchRet.join("") : matchRet, + remainder: group2.remainder + }; + } + }, + // + // Matching function + // e.g. match("a", input) will look for the regexp called "a" and see if it matches + // returns null or {match_:"a", remainder:"bc"} + // + match_: function match_(m, input) { + var pattern = mhchemParser.patterns.patterns[m]; + + if (pattern === undefined) { + throw ["MhchemBugP", "mhchem bug P. Please report. (" + m + ")"]; // Trying to use non-existing pattern + } else if (typeof pattern === "function") { + return mhchemParser.patterns.patterns[m](input); // cannot use cached var pattern here, because some pattern functions need this===mhchemParser + } else { + // RegExp + var match = input.match(pattern); + + if (match) { + var mm; + + if (match[2]) { + mm = [match[1], match[2]]; + } else if (match[1]) { + mm = match[1]; + } else { + mm = match[0]; + } + + return { + match_: mm, + remainder: input.substr(match[0].length) + }; + } + + return null; + } + } + }, + // + // Generic state machine actions + // + actions: { + 'a=': function a(buffer, m) { + buffer.a = (buffer.a || "") + m; + }, + 'b=': function b(buffer, m) { + buffer.b = (buffer.b || "") + m; + }, + 'p=': function p(buffer, m) { + buffer.p = (buffer.p || "") + m; + }, + 'o=': function o(buffer, m) { + buffer.o = (buffer.o || "") + m; + }, + 'q=': function q(buffer, m) { + buffer.q = (buffer.q || "") + m; + }, + 'd=': function d(buffer, m) { + buffer.d = (buffer.d || "") + m; + }, + 'rm=': function rm(buffer, m) { + buffer.rm = (buffer.rm || "") + m; + }, + 'text=': function text(buffer, m) { + buffer.text_ = (buffer.text_ || "") + m; + }, + 'insert': function insert(buffer, m, a) { + return { + type_: a + }; + }, + 'insert+p1': function insertP1(buffer, m, a) { + return { + type_: a, + p1: m + }; + }, + 'insert+p1+p2': function insertP1P2(buffer, m, a) { + return { + type_: a, + p1: m[0], + p2: m[1] + }; + }, + 'copy': function copy(buffer, m) { + return m; + }, + 'rm': function rm(buffer, m) { + return { + type_: 'rm', + p1: m || "" + }; + }, + 'text': function text(buffer, m) { + return mhchemParser.go(m, 'text'); + }, + '{text}': function text(buffer, m) { + var ret = ["{"]; + mhchemParser.concatArray(ret, mhchemParser.go(m, 'text')); + ret.push("}"); + return ret; + }, + 'tex-math': function texMath(buffer, m) { + return mhchemParser.go(m, 'tex-math'); + }, + 'tex-math tight': function texMathTight(buffer, m) { + return mhchemParser.go(m, 'tex-math tight'); + }, + 'bond': function bond(buffer, m, k) { + return { + type_: 'bond', + kind_: k || m + }; + }, + 'color0-output': function color0Output(buffer, m) { + return { + type_: 'color0', + color: m[0] + }; + }, + 'ce': function ce(buffer, m) { + return mhchemParser.go(m); + }, + '1/2': function _(buffer, m) { + /** @type {ParserOutput[]} */ + var ret = []; + + if (m.match(/^[+\-]/)) { + ret.push(m.substr(0, 1)); + m = m.substr(1); + } + + var n = m.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/); + n[1] = n[1].replace(/\$/g, ""); + ret.push({ + type_: 'frac', + p1: n[1], + p2: n[2] + }); + + if (n[3]) { + n[3] = n[3].replace(/\$/g, ""); + ret.push({ + type_: 'tex-math', + p1: n[3] + }); + } + + return ret; + }, + '9,9': function _(buffer, m) { + return mhchemParser.go(m, '9,9'); + } + }, + // + // createTransitions + // convert { 'letter': { 'state': { action_: 'output' } } } to { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] } + // with expansion of 'a|b' to 'a' and 'b' (at 2 places) + // + createTransitions: function createTransitions(o) { + var pattern, state; + /** @type {string[]} */ + + var stateArray; + var i; // + // 1. Collect all states + // + + /** @type {Transitions} */ + + var transitions = {}; + + for (pattern in o) { + for (state in o[pattern]) { + stateArray = state.split("|"); + o[pattern][state].stateArray = stateArray; + + for (i = 0; i < stateArray.length; i++) { + transitions[stateArray[i]] = []; + } + } + } // + // 2. Fill states + // + + + for (pattern in o) { + for (state in o[pattern]) { + stateArray = o[pattern][state].stateArray || []; + + for (i = 0; i < stateArray.length; i++) { + // + // 2a. Normalize actions into array: 'text=' ==> [{type_:'text='}] + // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).) + // + + /** @type {any} */ + var p = o[pattern][state]; + + if (p.action_) { + p.action_ = [].concat(p.action_); + + for (var k = 0; k < p.action_.length; k++) { + if (typeof p.action_[k] === "string") { + p.action_[k] = { + type_: p.action_[k] + }; + } + } + } else { + p.action_ = []; + } // + // 2.b Multi-insert + // + + + var patternArray = pattern.split("|"); + + for (var j = 0; j < patternArray.length; j++) { + if (stateArray[i] === '*') { + // insert into all + for (var t in transitions) { + transitions[t].push({ + pattern: patternArray[j], + task: p + }); + } + } else { + transitions[stateArray[i]].push({ + pattern: patternArray[j], + task: p + }); + } + } + } + } + } + + return transitions; + }, + stateMachines: {} +}; // +// Definition of state machines +// + +mhchemParser.stateMachines = { + // + // \ce state machines + // + //#region ce + 'ce': { + // main parser + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + 'else': { + '0|1|2': { + action_: 'beginsWithBond=false', + revisit: true, + toContinue: true + } + }, + 'oxidation$': { + '0': { + action_: 'oxidation-output' + } + }, + 'CMT': { + 'r': { + action_: 'rdt=', + nextState: 'rt' + }, + 'rd': { + action_: 'rqt=', + nextState: 'rdt' + } + }, + 'arrowUpDown': { + '0|1|2|as': { + action_: ['sb=false', 'output', 'operator'], + nextState: '1' + } + }, + 'uprightEntities': { + '0|1|2': { + action_: ['o=', 'output'], + nextState: '1' + } + }, + 'orbital': { + '0|1|2|3': { + action_: 'o=', + nextState: 'o' + } + }, + '->': { + '0|1|2|3': { + action_: 'r=', + nextState: 'r' + }, + 'a|as': { + action_: ['output', 'r='], + nextState: 'r' + }, + '*': { + action_: ['output', 'r='], + nextState: 'r' + } + }, + '+': { + 'o': { + action_: 'd= kv', + nextState: 'd' + }, + 'd|D': { + action_: 'd=', + nextState: 'd' + }, + 'q': { + action_: 'd=', + nextState: 'qd' + }, + 'qd|qD': { + action_: 'd=', + nextState: 'qd' + }, + 'dq': { + action_: ['output', 'd='], + nextState: 'd' + }, + '3': { + action_: ['sb=false', 'output', 'operator'], + nextState: '0' + } + }, + 'amount': { + '0|2': { + action_: 'a=', + nextState: 'a' + } + }, + 'pm-operator': { + '0|1|2|a|as': { + action_: ['sb=false', 'output', { + type_: 'operator', + option: '\\pm' + }], + nextState: '0' + } + }, + 'operator': { + '0|1|2|a|as': { + action_: ['sb=false', 'output', 'operator'], + nextState: '0' + } + }, + '-$': { + 'o|q': { + action_: ['charge or bond', 'output'], + nextState: 'qd' + }, + 'd': { + action_: 'd=', + nextState: 'd' + }, + 'D': { + action_: ['output', { + type_: 'bond', + option: "-" + }], + nextState: '3' + }, + 'q': { + action_: 'd=', + nextState: 'qd' + }, + 'qd': { + action_: 'd=', + nextState: 'qd' + }, + 'qD|dq': { + action_: ['output', { + type_: 'bond', + option: "-" + }], + nextState: '3' + } + }, + '-9': { + '3|o': { + action_: ['output', { + type_: 'insert', + option: 'hyphen' + }], + nextState: '3' + } + }, + '- orbital overlap': { + 'o': { + action_: ['output', { + type_: 'insert', + option: 'hyphen' + }], + nextState: '2' + }, + 'd': { + action_: ['output', { + type_: 'insert', + option: 'hyphen' + }], + nextState: '2' + } + }, + '-': { + '0|1|2': { + action_: [{ + type_: 'output', + option: 1 + }, 'beginsWithBond=true', { + type_: 'bond', + option: "-" + }], + nextState: '3' + }, + '3': { + action_: { + type_: 'bond', + option: "-" + } + }, + 'a': { + action_: ['output', { + type_: 'insert', + option: 'hyphen' + }], + nextState: '2' + }, + 'as': { + action_: [{ + type_: 'output', + option: 2 + }, { + type_: 'bond', + option: "-" + }], + nextState: '3' + }, + 'b': { + action_: 'b=' + }, + 'o': { + action_: { + type_: '- after o/d', + option: false + }, + nextState: '2' + }, + 'q': { + action_: { + type_: '- after o/d', + option: false + }, + nextState: '2' + }, + 'd|qd|dq': { + action_: { + type_: '- after o/d', + option: true + }, + nextState: '2' + }, + 'D|qD|p': { + action_: ['output', { + type_: 'bond', + option: "-" + }], + nextState: '3' + } + }, + 'amount2': { + '1|3': { + action_: 'a=', + nextState: 'a' + } + }, + 'letters': { + '0|1|2|3|a|as|b|p|bp|o': { + action_: 'o=', + nextState: 'o' + }, + 'q|dq': { + action_: ['output', 'o='], + nextState: 'o' + }, + 'd|D|qd|qD': { + action_: 'o after d', + nextState: 'o' + } + }, + 'digits': { + 'o': { + action_: 'q=', + nextState: 'q' + }, + 'd|D': { + action_: 'q=', + nextState: 'dq' + }, + 'q': { + action_: ['output', 'o='], + nextState: 'o' + }, + 'a': { + action_: 'o=', + nextState: 'o' + } + }, + 'space A': { + 'b|p|bp': {} + }, + 'space': { + 'a': { + nextState: 'as' + }, + '0': { + action_: 'sb=false' + }, + '1|2': { + action_: 'sb=true' + }, + 'r|rt|rd|rdt|rdq': { + action_: 'output', + nextState: '0' + }, + '*': { + action_: ['output', 'sb=true'], + nextState: '1' + } + }, + '1st-level escape': { + '1|2': { + action_: ['output', { + type_: 'insert+p1', + option: '1st-level escape' + }] + }, + '*': { + action_: ['output', { + type_: 'insert+p1', + option: '1st-level escape' + }], + nextState: '0' + } + }, + '[(...)]': { + 'r|rt': { + action_: 'rd=', + nextState: 'rd' + }, + 'rd|rdt': { + action_: 'rq=', + nextState: 'rdq' + } + }, + '...': { + 'o|d|D|dq|qd|qD': { + action_: ['output', { + type_: 'bond', + option: "..." + }], + nextState: '3' + }, + '*': { + action_: [{ + type_: 'output', + option: 1 + }, { + type_: 'insert', + option: 'ellipsis' + }], + nextState: '1' + } + }, + '. |* ': { + '*': { + action_: ['output', { + type_: 'insert', + option: 'addition compound' + }], + nextState: '1' + } + }, + 'state of aggregation $': { + '*': { + action_: ['output', 'state of aggregation'], + nextState: '1' + } + }, + '{[(': { + 'a|as|o': { + action_: ['o=', 'output', 'parenthesisLevel++'], + nextState: '2' + }, + '0|1|2|3': { + action_: ['o=', 'output', 'parenthesisLevel++'], + nextState: '2' + }, + '*': { + action_: ['output', 'o=', 'output', 'parenthesisLevel++'], + nextState: '2' + } + }, + ')]}': { + '0|1|2|3|b|p|bp|o': { + action_: ['o=', 'parenthesisLevel--'], + nextState: 'o' + }, + 'a|as|d|D|q|qd|qD|dq': { + action_: ['output', 'o=', 'parenthesisLevel--'], + nextState: 'o' + } + }, + ', ': { + '*': { + action_: ['output', 'comma'], + nextState: '0' + } + }, + '^_': { + // ^ and _ without a sensible argument + '*': {} + }, + '^{(...)}|^($...$)': { + '0|1|2|as': { + action_: 'b=', + nextState: 'b' + }, + 'p': { + action_: 'b=', + nextState: 'bp' + }, + '3|o': { + action_: 'd= kv', + nextState: 'D' + }, + 'q': { + action_: 'd=', + nextState: 'qD' + }, + 'd|D|qd|qD|dq': { + action_: ['output', 'd='], + nextState: 'D' + } + }, + '^a|^\\x{}{}|^\\x{}|^\\x|\'': { + '0|1|2|as': { + action_: 'b=', + nextState: 'b' + }, + 'p': { + action_: 'b=', + nextState: 'bp' + }, + '3|o': { + action_: 'd= kv', + nextState: 'd' + }, + 'q': { + action_: 'd=', + nextState: 'qd' + }, + 'd|qd|D|qD': { + action_: 'd=' + }, + 'dq': { + action_: ['output', 'd='], + nextState: 'd' + } + }, + '_{(state of aggregation)}$': { + 'd|D|q|qd|qD|dq': { + action_: ['output', 'q='], + nextState: 'q' + } + }, + '_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x': { + '0|1|2|as': { + action_: 'p=', + nextState: 'p' + }, + 'b': { + action_: 'p=', + nextState: 'bp' + }, + '3|o': { + action_: 'q=', + nextState: 'q' + }, + 'd|D': { + action_: 'q=', + nextState: 'dq' + }, + 'q|qd|qD|dq': { + action_: ['output', 'q='], + nextState: 'q' + } + }, + '=<>': { + '0|1|2|3|a|as|o|q|d|D|qd|qD|dq': { + action_: [{ + type_: 'output', + option: 2 + }, 'bond'], + nextState: '3' + } + }, + '#': { + '0|1|2|3|a|as|o': { + action_: [{ + type_: 'output', + option: 2 + }, { + type_: 'bond', + option: "#" + }], + nextState: '3' + } + }, + '{}': { + '*': { + action_: { + type_: 'output', + option: 1 + }, + nextState: '1' + } + }, + '{...}': { + '0|1|2|3|a|as|b|p|bp': { + action_: 'o=', + nextState: 'o' + }, + 'o|d|D|q|qd|qD|dq': { + action_: ['output', 'o='], + nextState: 'o' + } + }, + '$...$': { + 'a': { + action_: 'a=' + }, + // 2$n$ + '0|1|2|3|as|b|p|bp|o': { + action_: 'o=', + nextState: 'o' + }, + // not 'amount' + 'as|o': { + action_: 'o=' + }, + 'q|d|D|qd|qD|dq': { + action_: ['output', 'o='], + nextState: 'o' + } + }, + '\\bond{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'bond'], + nextState: "3" + } + }, + '\\frac{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 1 + }, 'frac-output'], + nextState: '3' + } + }, + '\\overset{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'overset-output'], + nextState: '3' + } + }, + '\\underset{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'underset-output'], + nextState: '3' + } + }, + '\\underbrace{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'underbrace-output'], + nextState: '3' + } + }, + '\\color{(...)}{(...)}1|\\color(...){(...)}2': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'color-output'], + nextState: '3' + } + }, + '\\color{(...)}0': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'color0-output'] + } + }, + '\\ce{(...)}': { + '*': { + action_: [{ + type_: 'output', + option: 2 + }, 'ce'], + nextState: '3' + } + }, + '\\,': { + '*': { + action_: [{ + type_: 'output', + option: 1 + }, 'copy'], + nextState: '1' + } + }, + '\\x{}{}|\\x{}|\\x': { + '0|1|2|3|a|as|b|p|bp|o|c0': { + action_: ['o=', 'output'], + nextState: '3' + }, + '*': { + action_: ['output', 'o=', 'output'], + nextState: '3' + } + }, + 'others': { + '*': { + action_: [{ + type_: 'output', + option: 1 + }, 'copy'], + nextState: '3' + } + }, + 'else2': { + 'a': { + action_: 'a to o', + nextState: 'o', + revisit: true + }, + 'as': { + action_: ['output', 'sb=true'], + nextState: '1', + revisit: true + }, + 'r|rt|rd|rdt|rdq': { + action_: ['output'], + nextState: '0', + revisit: true + }, + '*': { + action_: ['output', 'copy'], + nextState: '3' + } + } + }), + actions: { + 'o after d': function oAfterD(buffer, m) { + var ret; + + if ((buffer.d || "").match(/^[0-9]+$/)) { + var tmp = buffer.d; + buffer.d = undefined; + ret = this['output'](buffer); + buffer.b = tmp; + } else { + ret = this['output'](buffer); + } + + mhchemParser.actions['o='](buffer, m); + return ret; + }, + 'd= kv': function dKv(buffer, m) { + buffer.d = m; + buffer.dType = 'kv'; + }, + 'charge or bond': function chargeOrBond(buffer, m) { + if (buffer['beginsWithBond']) { + /** @type {ParserOutput[]} */ + var ret = []; + mhchemParser.concatArray(ret, this['output'](buffer)); + mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, "-")); + return ret; + } else { + buffer.d = m; + } + }, + '- after o/d': function afterOD(buffer, m, isAfterD) { + var c1 = mhchemParser.patterns.match_('orbital', buffer.o || ""); + var c2 = mhchemParser.patterns.match_('one lowercase greek letter $', buffer.o || ""); + var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || ""); + var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || ""); + var hyphenFollows = m === "-" && (c1 && c1.remainder === "" || c2 || c3 || c4); + + if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) { + buffer.o = '$' + buffer.o + '$'; + } + /** @type {ParserOutput[]} */ + + + var ret = []; + + if (hyphenFollows) { + mhchemParser.concatArray(ret, this['output'](buffer)); + ret.push({ + type_: 'hyphen' + }); + } else { + c1 = mhchemParser.patterns.match_('digits', buffer.d || ""); + + if (isAfterD && c1 && c1.remainder === '') { + mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m)); + mhchemParser.concatArray(ret, this['output'](buffer)); + } else { + mhchemParser.concatArray(ret, this['output'](buffer)); + mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, "-")); + } + } + + return ret; + }, + 'a to o': function aToO(buffer) { + buffer.o = buffer.a; + buffer.a = undefined; + }, + 'sb=true': function sbTrue(buffer) { + buffer.sb = true; + }, + 'sb=false': function sbFalse(buffer) { + buffer.sb = false; + }, + 'beginsWithBond=true': function beginsWithBondTrue(buffer) { + buffer['beginsWithBond'] = true; + }, + 'beginsWithBond=false': function beginsWithBondFalse(buffer) { + buffer['beginsWithBond'] = false; + }, + 'parenthesisLevel++': function parenthesisLevel(buffer) { + buffer['parenthesisLevel']++; + }, + 'parenthesisLevel--': function parenthesisLevel(buffer) { + buffer['parenthesisLevel']--; + }, + 'state of aggregation': function stateOfAggregation(buffer, m) { + return { + type_: 'state of aggregation', + p1: mhchemParser.go(m, 'o') + }; + }, + 'comma': function comma(buffer, m) { + var a = m.replace(/\s*$/, ''); + var withSpace = a !== m; + + if (withSpace && buffer['parenthesisLevel'] === 0) { + return { + type_: 'comma enumeration L', + p1: a + }; + } else { + return { + type_: 'comma enumeration M', + p1: a + }; + } + }, + 'output': function output(buffer, m, entityFollows) { + // entityFollows: + // undefined = if we have nothing else to output, also ignore the just read space (buffer.sb) + // 1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1) + // 2 = 1 + the entity can have an amount, so output a\, instead of converting it to o (can only apply to states a|as) + + /** @type {ParserOutput | ParserOutput[]} */ + var ret; + + if (!buffer.r) { + ret = []; + + if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) ; else { + if (buffer.sb) { + ret.push({ + type_: 'entitySkip' + }); + } + + if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows !== 2) { + buffer.o = buffer.a; + buffer.a = undefined; + } else if (!buffer.o && !buffer.q && !buffer.d && (buffer.b || buffer.p)) { + buffer.o = buffer.a; + buffer.d = buffer.b; + buffer.q = buffer.p; + buffer.a = buffer.b = buffer.p = undefined; + } else { + if (buffer.o && buffer.dType === 'kv' && mhchemParser.patterns.match_('d-oxidation$', buffer.d || "")) { + buffer.dType = 'oxidation'; + } else if (buffer.o && buffer.dType === 'kv' && !buffer.q) { + buffer.dType = undefined; + } + } + + ret.push({ + type_: 'chemfive', + a: mhchemParser.go(buffer.a, 'a'), + b: mhchemParser.go(buffer.b, 'bd'), + p: mhchemParser.go(buffer.p, 'pq'), + o: mhchemParser.go(buffer.o, 'o'), + q: mhchemParser.go(buffer.q, 'pq'), + d: mhchemParser.go(buffer.d, buffer.dType === 'oxidation' ? 'oxidation' : 'bd'), + dType: buffer.dType + }); + } + } else { + // r + + /** @type {ParserOutput[]} */ + var rd; + + if (buffer.rdt === 'M') { + rd = mhchemParser.go(buffer.rd, 'tex-math'); + } else if (buffer.rdt === 'T') { + rd = [{ + type_: 'text', + p1: buffer.rd || "" + }]; + } else { + rd = mhchemParser.go(buffer.rd); + } + /** @type {ParserOutput[]} */ + + + var rq; + + if (buffer.rqt === 'M') { + rq = mhchemParser.go(buffer.rq, 'tex-math'); + } else if (buffer.rqt === 'T') { + rq = [{ + type_: 'text', + p1: buffer.rq || "" + }]; + } else { + rq = mhchemParser.go(buffer.rq); + } + + ret = { + type_: 'arrow', + r: buffer.r, + rd: rd, + rq: rq + }; + } + + for (var p in buffer) { + if (p !== 'parenthesisLevel' && p !== 'beginsWithBond') { + delete buffer[p]; + } + } + + return ret; + }, + 'oxidation-output': function oxidationOutput(buffer, m) { + var ret = ["{"]; + mhchemParser.concatArray(ret, mhchemParser.go(m, 'oxidation')); + ret.push("}"); + return ret; + }, + 'frac-output': function fracOutput(buffer, m) { + return { + type_: 'frac-ce', + p1: mhchemParser.go(m[0]), + p2: mhchemParser.go(m[1]) + }; + }, + 'overset-output': function oversetOutput(buffer, m) { + return { + type_: 'overset', + p1: mhchemParser.go(m[0]), + p2: mhchemParser.go(m[1]) + }; + }, + 'underset-output': function undersetOutput(buffer, m) { + return { + type_: 'underset', + p1: mhchemParser.go(m[0]), + p2: mhchemParser.go(m[1]) + }; + }, + 'underbrace-output': function underbraceOutput(buffer, m) { + return { + type_: 'underbrace', + p1: mhchemParser.go(m[0]), + p2: mhchemParser.go(m[1]) + }; + }, + 'color-output': function colorOutput(buffer, m) { + return { + type_: 'color', + color1: m[0], + color2: mhchemParser.go(m[1]) + }; + }, + 'r=': function r(buffer, m) { + buffer.r = m; + }, + 'rdt=': function rdt(buffer, m) { + buffer.rdt = m; + }, + 'rd=': function rd(buffer, m) { + buffer.rd = m; + }, + 'rqt=': function rqt(buffer, m) { + buffer.rqt = m; + }, + 'rq=': function rq(buffer, m) { + buffer.rq = m; + }, + 'operator': function operator(buffer, m, p1) { + return { + type_: 'operator', + kind_: p1 || m + }; + } + } + }, + 'a': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + '1/2$': { + '0': { + action_: '1/2' + } + }, + 'else': { + '0': { + nextState: '1', + revisit: true + } + }, + '$(...)$': { + '*': { + action_: 'tex-math tight', + nextState: '1' + } + }, + ',': { + '*': { + action_: { + type_: 'insert', + option: 'commaDecimal' + } + } + }, + 'else2': { + '*': { + action_: 'copy' + } + } + }), + actions: {} + }, + 'o': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + '1/2$': { + '0': { + action_: '1/2' + } + }, + 'else': { + '0': { + nextState: '1', + revisit: true + } + }, + 'letters': { + '*': { + action_: 'rm' + } + }, + '\\ca': { + '*': { + action_: { + type_: 'insert', + option: 'circa' + } + } + }, + '\\x{}{}|\\x{}|\\x': { + '*': { + action_: 'copy' + } + }, + '${(...)}$|$(...)$': { + '*': { + action_: 'tex-math' + } + }, + '{(...)}': { + '*': { + action_: '{text}' + } + }, + 'else2': { + '*': { + action_: 'copy' + } + } + }), + actions: {} + }, + 'text': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + '{...}': { + '*': { + action_: 'text=' + } + }, + '${(...)}$|$(...)$': { + '*': { + action_: 'tex-math' + } + }, + '\\greek': { + '*': { + action_: ['output', 'rm'] + } + }, + '\\,|\\x{}{}|\\x{}|\\x': { + '*': { + action_: ['output', 'copy'] + } + }, + 'else': { + '*': { + action_: 'text=' + } + } + }), + actions: { + 'output': function output(buffer) { + if (buffer.text_) { + /** @type {ParserOutput} */ + var ret = { + type_: 'text', + p1: buffer.text_ + }; + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } + } + }, + 'pq': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + 'state of aggregation $': { + '*': { + action_: 'state of aggregation' + } + }, + 'i$': { + '0': { + nextState: '!f', + revisit: true + } + }, + '(KV letters),': { + '0': { + action_: 'rm', + nextState: '0' + } + }, + 'formula$': { + '0': { + nextState: 'f', + revisit: true + } + }, + '1/2$': { + '0': { + action_: '1/2' + } + }, + 'else': { + '0': { + nextState: '!f', + revisit: true + } + }, + '${(...)}$|$(...)$': { + '*': { + action_: 'tex-math' + } + }, + '{(...)}': { + '*': { + action_: 'text' + } + }, + 'a-z': { + 'f': { + action_: 'tex-math' + } + }, + 'letters': { + '*': { + action_: 'rm' + } + }, + '-9.,9': { + '*': { + action_: '9,9' + } + }, + ',': { + '*': { + action_: { + type_: 'insert+p1', + option: 'comma enumeration S' + } + } + }, + '\\color{(...)}{(...)}1|\\color(...){(...)}2': { + '*': { + action_: 'color-output' + } + }, + '\\color{(...)}0': { + '*': { + action_: 'color0-output' + } + }, + '\\ce{(...)}': { + '*': { + action_: 'ce' + } + }, + '\\,|\\x{}{}|\\x{}|\\x': { + '*': { + action_: 'copy' + } + }, + 'else2': { + '*': { + action_: 'copy' + } + } + }), + actions: { + 'state of aggregation': function stateOfAggregation(buffer, m) { + return { + type_: 'state of aggregation subscript', + p1: mhchemParser.go(m, 'o') + }; + }, + 'color-output': function colorOutput(buffer, m) { + return { + type_: 'color', + color1: m[0], + color2: mhchemParser.go(m[1], 'pq') + }; + } + } + }, + 'bd': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + 'x$': { + '0': { + nextState: '!f', + revisit: true + } + }, + 'formula$': { + '0': { + nextState: 'f', + revisit: true + } + }, + 'else': { + '0': { + nextState: '!f', + revisit: true + } + }, + '-9.,9 no missing 0': { + '*': { + action_: '9,9' + } + }, + '.': { + '*': { + action_: { + type_: 'insert', + option: 'electron dot' + } + } + }, + 'a-z': { + 'f': { + action_: 'tex-math' + } + }, + 'x': { + '*': { + action_: { + type_: 'insert', + option: 'KV x' + } + } + }, + 'letters': { + '*': { + action_: 'rm' + } + }, + '\'': { + '*': { + action_: { + type_: 'insert', + option: 'prime' + } + } + }, + '${(...)}$|$(...)$': { + '*': { + action_: 'tex-math' + } + }, + '{(...)}': { + '*': { + action_: 'text' + } + }, + '\\color{(...)}{(...)}1|\\color(...){(...)}2': { + '*': { + action_: 'color-output' + } + }, + '\\color{(...)}0': { + '*': { + action_: 'color0-output' + } + }, + '\\ce{(...)}': { + '*': { + action_: 'ce' + } + }, + '\\,|\\x{}{}|\\x{}|\\x': { + '*': { + action_: 'copy' + } + }, + 'else2': { + '*': { + action_: 'copy' + } + } + }), + actions: { + 'color-output': function colorOutput(buffer, m) { + return { + type_: 'color', + color1: m[0], + color2: mhchemParser.go(m[1], 'bd') + }; + } + } + }, + 'oxidation': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + 'roman numeral': { + '*': { + action_: 'roman-numeral' + } + }, + '${(...)}$|$(...)$': { + '*': { + action_: 'tex-math' + } + }, + 'else': { + '*': { + action_: 'copy' + } + } + }), + actions: { + 'roman-numeral': function romanNumeral(buffer, m) { + return { + type_: 'roman numeral', + p1: m || "" + }; + } + } + }, + 'tex-math': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + '\\ce{(...)}': { + '*': { + action_: ['output', 'ce'] + } + }, + '{...}|\\,|\\x{}{}|\\x{}|\\x': { + '*': { + action_: 'o=' + } + }, + 'else': { + '*': { + action_: 'o=' + } + } + }), + actions: { + 'output': function output(buffer) { + if (buffer.o) { + /** @type {ParserOutput} */ + var ret = { + type_: 'tex-math', + p1: buffer.o + }; + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } + } + }, + 'tex-math tight': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + '\\ce{(...)}': { + '*': { + action_: ['output', 'ce'] + } + }, + '{...}|\\,|\\x{}{}|\\x{}|\\x': { + '*': { + action_: 'o=' + } + }, + '-|+': { + '*': { + action_: 'tight operator' + } + }, + 'else': { + '*': { + action_: 'o=' + } + } + }), + actions: { + 'tight operator': function tightOperator(buffer, m) { + buffer.o = (buffer.o || "") + "{" + m + "}"; + }, + 'output': function output(buffer) { + if (buffer.o) { + /** @type {ParserOutput} */ + var ret = { + type_: 'tex-math', + p1: buffer.o + }; + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } + } + }, + '9,9': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': {} + }, + ',': { + '*': { + action_: 'comma' + } + }, + 'else': { + '*': { + action_: 'copy' + } + } + }), + actions: { + 'comma': function comma() { + return { + type_: 'commaDecimal' + }; + } + } + }, + //#endregion + // + // \pu state machines + // + //#region pu + 'pu': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + 'space$': { + '*': { + action_: ['output', 'space'] + } + }, + '{[(|)]}': { + '0|a': { + action_: 'copy' + } + }, + '(-)(9)^(-9)': { + '0': { + action_: 'number^', + nextState: 'a' + } + }, + '(-)(9.,9)(e)(99)': { + '0': { + action_: 'enumber', + nextState: 'a' + } + }, + 'space': { + '0|a': {} + }, + 'pm-operator': { + '0|a': { + action_: { + type_: 'operator', + option: '\\pm' + }, + nextState: '0' + } + }, + 'operator': { + '0|a': { + action_: 'copy', + nextState: '0' + } + }, + '//': { + 'd': { + action_: 'o=', + nextState: '/' + } + }, + '/': { + 'd': { + action_: 'o=', + nextState: '/' + } + }, + '{...}|else': { + '0|d': { + action_: 'd=', + nextState: 'd' + }, + 'a': { + action_: ['space', 'd='], + nextState: 'd' + }, + '/|q': { + action_: 'q=', + nextState: 'q' + } + } + }), + actions: { + 'enumber': function enumber(buffer, m) { + /** @type {ParserOutput[]} */ + var ret = []; + + if (m[0] === "+-" || m[0] === "+/-") { + ret.push("\\pm "); + } else if (m[0]) { + ret.push(m[0]); + } + + if (m[1]) { + mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9')); + + if (m[2]) { + if (m[2].match(/[,.]/)) { + mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9')); + } else { + ret.push(m[2]); + } + } + + m[3] = m[4] || m[3]; + + if (m[3]) { + m[3] = m[3].trim(); + + if (m[3] === "e" || m[3].substr(0, 1) === "*") { + ret.push({ + type_: 'cdot' + }); + } else { + ret.push({ + type_: 'times' + }); + } + } + } + + if (m[3]) { + ret.push("10^{" + m[5] + "}"); + } + + return ret; + }, + 'number^': function number(buffer, m) { + /** @type {ParserOutput[]} */ + var ret = []; + + if (m[0] === "+-" || m[0] === "+/-") { + ret.push("\\pm "); + } else if (m[0]) { + ret.push(m[0]); + } + + mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9')); + ret.push("^{" + m[2] + "}"); + return ret; + }, + 'operator': function operator(buffer, m, p1) { + return { + type_: 'operator', + kind_: p1 || m + }; + }, + 'space': function space() { + return { + type_: 'pu-space-1' + }; + }, + 'output': function output(buffer) { + /** @type {ParserOutput | ParserOutput[]} */ + var ret; + var md = mhchemParser.patterns.match_('{(...)}', buffer.d || ""); + + if (md && md.remainder === '') { + buffer.d = md.match_; + } + + var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || ""); + + if (mq && mq.remainder === '') { + buffer.q = mq.match_; + } + + if (buffer.d) { + buffer.d = buffer.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"); + buffer.d = buffer.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F"); + } + + if (buffer.q) { + // fraction + buffer.q = buffer.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"); + buffer.q = buffer.q.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F"); + var b5 = { + d: mhchemParser.go(buffer.d, 'pu'), + q: mhchemParser.go(buffer.q, 'pu') + }; + + if (buffer.o === '//') { + ret = { + type_: 'pu-frac', + p1: b5.d, + p2: b5.q + }; + } else { + ret = b5.d; + + if (b5.d.length > 1 || b5.q.length > 1) { + ret.push({ + type_: ' / ' + }); + } else { + ret.push({ + type_: '/' + }); + } + + mhchemParser.concatArray(ret, b5.q); + } + } else { + // no fraction + ret = mhchemParser.go(buffer.d, 'pu-2'); + } + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } + }, + 'pu-2': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '*': { + action_: 'output' + } + }, + '*': { + '*': { + action_: ['output', 'cdot'], + nextState: '0' + } + }, + '\\x': { + '*': { + action_: 'rm=' + } + }, + 'space': { + '*': { + action_: ['output', 'space'], + nextState: '0' + } + }, + '^{(...)}|^(-1)': { + '1': { + action_: '^(-1)' + } + }, + '-9.,9': { + '0': { + action_: 'rm=', + nextState: '0' + }, + '1': { + action_: '^(-1)', + nextState: '0' + } + }, + '{...}|else': { + '*': { + action_: 'rm=', + nextState: '1' + } + } + }), + actions: { + 'cdot': function cdot() { + return { + type_: 'tight cdot' + }; + }, + '^(-1)': function _(buffer, m) { + buffer.rm += "^{" + m + "}"; + }, + 'space': function space() { + return { + type_: 'pu-space-2' + }; + }, + 'output': function output(buffer) { + /** @type {ParserOutput | ParserOutput[]} */ + var ret = []; + + if (buffer.rm) { + var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || ""); + + if (mrm && mrm.remainder === '') { + ret = mhchemParser.go(mrm.match_, 'pu'); + } else { + ret = { + type_: 'rm', + p1: buffer.rm + }; + } + } + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } + }, + 'pu-9,9': { + transitions: mhchemParser.createTransitions({ + 'empty': { + '0': { + action_: 'output-0' + }, + 'o': { + action_: 'output-o' + } + }, + ',': { + '0': { + action_: ['output-0', 'comma'], + nextState: 'o' + } + }, + '.': { + '0': { + action_: ['output-0', 'copy'], + nextState: 'o' + } + }, + 'else': { + '*': { + action_: 'text=' + } + } + }), + actions: { + 'comma': function comma() { + return { + type_: 'commaDecimal' + }; + }, + 'output-0': function output0(buffer) { + /** @type {ParserOutput[]} */ + var ret = []; + buffer.text_ = buffer.text_ || ""; + + if (buffer.text_.length > 4) { + var a = buffer.text_.length % 3; + + if (a === 0) { + a = 3; + } + + for (var i = buffer.text_.length - 3; i > 0; i -= 3) { + ret.push(buffer.text_.substr(i, 3)); + ret.push({ + type_: '1000 separator' + }); + } + + ret.push(buffer.text_.substr(0, a)); + ret.reverse(); + } else { + ret.push(buffer.text_); + } + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + }, + 'output-o': function outputO(buffer) { + /** @type {ParserOutput[]} */ + var ret = []; + buffer.text_ = buffer.text_ || ""; + + if (buffer.text_.length > 4) { + var a = buffer.text_.length - 3; + + for (var i = 0; i < a; i += 3) { + ret.push(buffer.text_.substr(i, 3)); + ret.push({ + type_: '1000 separator' + }); + } + + ret.push(buffer.text_.substr(i)); + } else { + ret.push(buffer.text_); + } + + for (var p in buffer) { + delete buffer[p]; + } + + return ret; + } + } //#endregion + + } +}; // +// texify: Take MhchemParser output and convert it to TeX +// + +/** @type {Texify} */ + +var texify = { + go: function go(input, isInner) { + // (recursive, max 4 levels) + if (!input) { + return ""; + } + + var res = ""; + var cee = false; + + for (var i = 0; i < input.length; i++) { + var inputi = input[i]; + + if (typeof inputi === "string") { + res += inputi; + } else { + res += texify._go2(inputi); + + if (inputi.type_ === '1st-level escape') { + cee = true; + } + } + } + + if (!isInner && !cee && res) { + res = "{" + res + "}"; + } + + return res; + }, + _goInner: function _goInner(input) { + if (!input) { + return input; + } + + return texify.go(input, true); + }, + _go2: function _go2(buf) { + /** @type {undefined | string} */ + var res; + + switch (buf.type_) { + case 'chemfive': + res = ""; + var b5 = { + a: texify._goInner(buf.a), + b: texify._goInner(buf.b), + p: texify._goInner(buf.p), + o: texify._goInner(buf.o), + q: texify._goInner(buf.q), + d: texify._goInner(buf.d) + }; // + // a + // + + if (b5.a) { + if (b5.a.match(/^[+\-]/)) { + b5.a = "{" + b5.a + "}"; + } + + res += b5.a + "\\,"; + } // + // b and p + // + + + if (b5.b || b5.p) { + res += "{\\vphantom{X}}"; + res += "^{\\hphantom{" + (b5.b || "") + "}}_{\\hphantom{" + (b5.p || "") + "}}"; + res += "{\\vphantom{X}}"; + res += "^{\\smash[t]{\\vphantom{2}}\\mathllap{" + (b5.b || "") + "}}"; + res += "_{\\vphantom{2}\\mathllap{\\smash[t]{" + (b5.p || "") + "}}}"; + } // + // o + // + + + if (b5.o) { + if (b5.o.match(/^[+\-]/)) { + b5.o = "{" + b5.o + "}"; + } + + res += b5.o; + } // + // q and d + // + + + if (buf.dType === 'kv') { + if (b5.d || b5.q) { + res += "{\\vphantom{X}}"; + } + + if (b5.d) { + res += "^{" + b5.d + "}"; + } + + if (b5.q) { + res += "_{\\smash[t]{" + b5.q + "}}"; + } + } else if (buf.dType === 'oxidation') { + if (b5.d) { + res += "{\\vphantom{X}}"; + res += "^{" + b5.d + "}"; + } + + if (b5.q) { + res += "{\\vphantom{X}}"; + res += "_{\\smash[t]{" + b5.q + "}}"; + } + } else { + if (b5.q) { + res += "{\\vphantom{X}}"; + res += "_{\\smash[t]{" + b5.q + "}}"; + } + + if (b5.d) { + res += "{\\vphantom{X}}"; + res += "^{" + b5.d + "}"; + } + } + + break; + + case 'rm': + res = "\\mathrm{" + buf.p1 + "}"; + break; + + case 'text': + if (buf.p1.match(/[\^_]/)) { + buf.p1 = buf.p1.replace(" ", "~").replace("-", "\\text{-}"); + res = "\\mathrm{" + buf.p1 + "}"; + } else { + res = "\\text{" + buf.p1 + "}"; + } + + break; + + case 'roman numeral': + res = "\\mathrm{" + buf.p1 + "}"; + break; + + case 'state of aggregation': + res = "\\mskip2mu " + texify._goInner(buf.p1); + break; + + case 'state of aggregation subscript': + res = "\\mskip1mu " + texify._goInner(buf.p1); + break; + + case 'bond': + res = texify._getBond(buf.kind_); + + if (!res) { + throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + buf.kind_ + ")"]; + } + + break; + + case 'frac': + var c = "\\frac{" + buf.p1 + "}{" + buf.p2 + "}"; + res = "\\mathchoice{\\textstyle" + c + "}{" + c + "}{" + c + "}{" + c + "}"; + break; + + case 'pu-frac': + var d = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}"; + res = "\\mathchoice{\\textstyle" + d + "}{" + d + "}{" + d + "}{" + d + "}"; + break; + + case 'tex-math': + res = buf.p1 + " "; + break; + + case 'frac-ce': + res = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}"; + break; + + case 'overset': + res = "\\overset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}"; + break; + + case 'underset': + res = "\\underset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}"; + break; + + case 'underbrace': + res = "\\underbrace{" + texify._goInner(buf.p1) + "}_{" + texify._goInner(buf.p2) + "}"; + break; + + case 'color': + res = "{\\color{" + buf.color1 + "}{" + texify._goInner(buf.color2) + "}}"; + break; + + case 'color0': + res = "\\color{" + buf.color + "}"; + break; + + case 'arrow': + var b6 = { + rd: texify._goInner(buf.rd), + rq: texify._goInner(buf.rq) + }; + + var arrow = "\\x" + texify._getArrow(buf.r); + + if (b6.rq) { + arrow += "[{" + b6.rq + "}]"; + } + + if (b6.rd) { + arrow += "{" + b6.rd + "}"; + } else { + arrow += "{}"; + } + + res = arrow; + break; + + case 'operator': + res = texify._getOperator(buf.kind_); + break; + + case '1st-level escape': + res = buf.p1 + " "; // &, \\\\, \\hlin + + break; + + case 'space': + res = " "; + break; + + case 'entitySkip': + res = "~"; + break; + + case 'pu-space-1': + res = "~"; + break; + + case 'pu-space-2': + res = "\\mkern3mu "; + break; + + case '1000 separator': + res = "\\mkern2mu "; + break; + + case 'commaDecimal': + res = "{,}"; + break; + + case 'comma enumeration L': + res = "{" + buf.p1 + "}\\mkern6mu "; + break; + + case 'comma enumeration M': + res = "{" + buf.p1 + "}\\mkern3mu "; + break; + + case 'comma enumeration S': + res = "{" + buf.p1 + "}\\mkern1mu "; + break; + + case 'hyphen': + res = "\\text{-}"; + break; + + case 'addition compound': + res = "\\,{\\cdot}\\,"; + break; + + case 'electron dot': + res = "\\mkern1mu \\bullet\\mkern1mu "; + break; + + case 'KV x': + res = "{\\times}"; + break; + + case 'prime': + res = "\\prime "; + break; + + case 'cdot': + res = "\\cdot "; + break; + + case 'tight cdot': + res = "\\mkern1mu{\\cdot}\\mkern1mu "; + break; + + case 'times': + res = "\\times "; + break; + + case 'circa': + res = "{\\sim}"; + break; + + case '^': + res = "uparrow"; + break; + + case 'v': + res = "downarrow"; + break; + + case 'ellipsis': + res = "\\ldots "; + break; + + case '/': + res = "/"; + break; + + case ' / ': + res = "\\,/\\,"; + break; + + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + // Missing texify rule or unknown MhchemParser output + } + return res; + }, + _getArrow: function _getArrow(a) { + switch (a) { + case "->": + return "rightarrow"; + + case "\u2192": + return "rightarrow"; + + case "\u27F6": + return "rightarrow"; + + case "<-": + return "leftarrow"; + + case "<->": + return "leftrightarrow"; + + case "<-->": + return "rightleftarrows"; + + case "<=>": + return "rightleftharpoons"; + + case "\u21CC": + return "rightleftharpoons"; + + case "<=>>": + return "rightequilibrium"; + + case "<<=>": + return "leftequilibrium"; + + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } + }, + _getBond: function _getBond(a) { + switch (a) { + case "-": + return "{-}"; + + case "1": + return "{-}"; + + case "=": + return "{=}"; + + case "2": + return "{=}"; + + case "#": + return "{\\equiv}"; + + case "3": + return "{\\equiv}"; + + case "~": + return "{\\tripledash}"; + + case "~-": + return "{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}"; + + case "~=": + return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}"; + + case "~--": + return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}"; + + case "-~-": + return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}"; + + case "...": + return "{{\\cdot}{\\cdot}{\\cdot}}"; + + case "....": + return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}"; + + case "->": + return "{\\rightarrow}"; + + case "<-": + return "{\\leftarrow}"; + + case "<": + return "{<}"; + + case ">": + return "{>}"; + + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } + }, + _getOperator: function _getOperator(a) { + switch (a) { + case "+": + return " {}+{} "; + + case "-": + return " {}-{} "; + + case "=": + return " {}={} "; + + case "<": + return " {}<{} "; + + case ">": + return " {}>{} "; + + case "<<": + return " {}\\ll{} "; + + case ">>": + return " {}\\gg{} "; + + case "\\pm": + return " {}\\pm{} "; + + case "\\approx": + return " {}\\approx{} "; + + case "$\\approx$": + return " {}\\approx{} "; + + case "v": + return " \\downarrow{} "; + + case "(v)": + return " \\downarrow{} "; + + case "^": + return " \\uparrow{} "; + + case "(^)": + return " \\uparrow{} "; + + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } + } +}; // diff --git a/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js new file mode 100644 index 0000000..0dcac27 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js @@ -0,0 +1 @@ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],r);else{var t="object"==typeof exports?r(require("katex")):r(e.katex);for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}("undefined"!=typeof self?self:this,function(e){return function(e){var r={};function t(a){if(r[a])return r[a].exports;var o=r[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(a,o,function(r){return e[r]}.bind(null,o));return a},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=1)}([function(r,t){r.exports=e},function(e,r,t){"use strict";t.r(r);var a=t(0),o=t.n(a),n={"(":"left parenthesis",")":"right parenthesis","[":"open bracket","]":"close bracket","\\{":"left brace","\\}":"right brace","\\lvert":"open vertical bar","\\rvert":"close vertical bar","|":"vertical bar","\\uparrow":"up arrow","\\Uparrow":"up arrow","\\downarrow":"down arrow","\\Downarrow":"down arrow","\\updownarrow":"up down arrow","\\leftarrow":"left arrow","\\Leftarrow":"left arrow","\\rightarrow":"right arrow","\\Rightarrow":"right arrow","\\langle":"open angle","\\rangle":"close angle","\\lfloor":"open floor","\\rfloor":"close floor","\\int":"integral","\\intop":"integral","\\lim":"limit","\\ln":"natural log","\\log":"log","\\sin":"sine","\\cos":"cosine","\\tan":"tangent","\\cot":"cotangent","\\sum":"sum","/":"slash",",":"comma",".":"point","-":"negative","+":"plus","~":"tilde",":":"colon","?":"question mark","'":"apostrophe","\\%":"percent"," ":"space","\\ ":"space","\\$":"dollar sign","\\angle":"angle","\\degree":"degree","\\circ":"circle","\\vec":"vector","\\triangle":"triangle","\\pi":"pi","\\prime":"prime","\\infty":"infinity","\\alpha":"alpha","\\beta":"beta","\\gamma":"gamma","\\omega":"omega","\\theta":"theta","\\sigma":"sigma","\\lambda":"lambda","\\tau":"tau","\\Delta":"delta","\\delta":"delta","\\mu":"mu","\\rho":"rho","\\nabla":"del","\\ell":"ell","\\ldots":"dots","\\hat":"hat","\\acute":"acute"},s={prime:"prime",degree:"degrees",circle:"degrees",2:"squared",3:"cubed"},i={"|":"open vertical bar",".":""},l={"|":"close vertical bar",".":""},c={"+":"plus","-":"minus","\\pm":"plus minus","\\cdot":"dot","*":"times","/":"divided by","\\times":"times","\\div":"divided by","\\circ":"circle","\\bullet":"bullet"},u={"=":"equals","\\approx":"approximately equals","\u2260":"does not equal","\\geq":"is greater than or equal to","\\ge":"is greater than or equal to","\\leq":"is less than or equal to","\\le":"is less than or equal to",">":"is greater than","<":"is less than","\\leftarrow":"left arrow","\\Leftarrow":"left arrow","\\rightarrow":"right arrow","\\Rightarrow":"right arrow",":":"colon"},p={"\\underleftarrow":"left arrow","\\underrightarrow":"right arrow","\\underleftrightarrow":"left-right arrow","\\undergroup":"group","\\underlinesegment":"line segment","\\utilde":"tilde"},d=function(e,r,t){var a;e&&(/^\d+$/.test(a="open"===r?e in i?i[e]:n[e]||e:"close"===r?e in l?l[e]:n[e]||e:"bin"===r?c[e]||e:"rel"===r?u[e]||e:n[e]||e)&&t.length>0&&/^\d+$/.test(t[t.length-1])?t[t.length-1]+=a:a&&t.push(a))},b=function(e,r){var t=[];e.push(t),r(t)},h=function(e,r,t){switch(e.type){case"accent":b(r,function(r){f(e.base,r,t),r.push("with"),d(e.label,"normal",r),r.push("on top")});break;case"accentUnder":b(r,function(r){f(e.base,r,t),r.push("with"),d(p[e.label],"normal",r),r.push("underneath")});break;case"accent-token":break;case"atom":var a=e.text;switch(e.family){case"bin":d(a,"bin",r);break;case"close":d(a,"close",r);break;case"inner":d(e.text,"inner",r);break;case"open":d(a,"open",r);break;case"punct":d(a,"punct",r);break;case"rel":d(a,"rel",r);break;default:throw e.family,new Error('"'+e.family+'" is not a valid atom type')}break;case"color":var o=e.color.replace(/katex-/,"");b(r,function(r){r.push("start color "+o),f(e.body,r,t),r.push("end color "+o)});break;case"color-token":break;case"delimsizing":e.delim&&"."!==e.delim&&d(e.delim,"normal",r);break;case"genfrac":b(r,function(r){var a=e.leftDelim,o=e.rightDelim;e.hasBarLine?(r.push("start fraction"),a&&d(a,"open",r),f(e.numer,r,t),r.push("divided by"),f(e.denom,r,t),o&&d(o,"close",r),r.push("end fraction")):(r.push("start binomial"),a&&d(a,"open",r),f(e.numer,r,t),r.push("over"),f(e.denom,r,t),o&&d(o,"close",r),r.push("end binomial"))});break;case"kern":break;case"leftright":b(r,function(r){d(e.left,"open",r),f(e.body,r,t),d(e.right,"close",r)});break;case"leftright-right":break;case"lap":f(e.body,r,t);break;case"mathord":d(e.text,"normal",r);break;case"op":var n=e.body,i=e.name;n?f(n,r,t):i&&d(i,"normal",r);break;case"op-token":d(e.text,t,r);break;case"ordgroup":f(e.body,r,t);break;case"overline":b(r,function(r){r.push("start overline"),f(e.body,r,t),r.push("end overline")});break;case"phantom":r.push("empty space");break;case"raisebox":f(e.body,r,t);break;case"rule":r.push("rectangle");break;case"sizing":f(e.body,r,t);break;case"spacing":r.push("space");break;case"styling":f(e.body,r,t);break;case"sqrt":b(r,function(r){var a=e.body,o=e.index;if(o)return"3"===m(f(o,[],t)).join(",")?(r.push("cube root of"),f(a,r,t),void r.push("end cube root")):(r.push("root"),r.push("start index"),f(o,r,t),void r.push("end index"));r.push("square root of"),f(a,r,t),r.push("end square root")});break;case"supsub":var l=e.base,c=e.sub,u=e.sup,h=!1;if(l&&(f(l,r,t),h="op"===l.type&&"\\log"===l.name),c){var y=h?"base":"subscript";b(r,function(e){e.push("start "+y),f(c,e,t),e.push("end "+y)})}u&&b(r,function(e){var r=m(f(u,[],t)).join(",");r in s?e.push(s[r]):(e.push("start superscript"),f(u,e,t),e.push("end superscript"))});break;case"text":if("\\textbf"===e.font){b(r,function(r){r.push("start bold text"),f(e.body,r,t),r.push("end bold text")});break}b(r,function(r){r.push("start text"),f(e.body,r,t),r.push("end text")});break;case"textord":d(e.text,t,r);break;case"smash":f(e.body,r,t);break;case"enclose":if(/cancel/.test(e.label)){b(r,function(r){r.push("start cancel"),f(e.body,r,t),r.push("end cancel")});break}if(/box/.test(e.label)){b(r,function(r){r.push("start box"),f(e.body,r,t),r.push("end box")});break}if(/sout/.test(e.label)){b(r,function(r){r.push("start strikeout"),f(e.body,r,t),r.push("end strikeout")});break}throw new Error("KaTeX-a11y: enclose node with "+e.label+" not supported yet");case"vphantom":throw new Error("KaTeX-a11y: vphantom not implemented yet");case"hphantom":throw new Error("KaTeX-a11y: hphantom not implemented yet");case"operatorname":f(e.body,r,t);break;case"array":throw new Error("KaTeX-a11y: array not implemented yet");case"raw":throw new Error("KaTeX-a11y: raw not implemented yet");case"size":break;case"url":throw new Error("KaTeX-a11y: url not implemented yet");case"tag":throw new Error("KaTeX-a11y: tag not implemented yet");case"verb":d("start verbatim","normal",r),d(e.body,"normal",r),d("end verbatim","normal",r);break;case"environment":throw new Error("KaTeX-a11y: environment not implemented yet");case"horizBrace":d("start "+e.label.slice(1),"normal",r),f(e.base,r,t),d("end "+e.label.slice(1),"normal",r);break;case"infix":break;case"includegraphics":throw new Error("KaTeX-a11y: includegraphics not implemented yet");case"font":f(e.body,r,t);break;case"href":throw new Error("KaTeX-a11y: href not implemented yet");case"cr":throw new Error("KaTeX-a11y: cr not implemented yet");case"underline":b(r,function(r){r.push("start underline"),f(e.body,r,t),r.push("end underline")});break;case"xArrow":throw new Error("KaTeX-a11y: xArrow not implemented yet");case"mclass":var g=e.mclass.slice(1);f(e.body,r,g);break;case"mathchoice":f(e.text,r,t);break;case"htmlmathml":f(e.mathml,r,t);break;case"middle":d(e.delim,t,r);break;default:throw e.type,new Error("KaTeX a11y un-recognized type: "+e.type)}},f=function e(r,t,a){if(void 0===t&&(t=[]),r instanceof Array)for(var o=0;o<r.length;o++)e(r[o],t,a);else h(r,t,a);return t},m=function e(r){var t=[];return r.forEach(function(r){r instanceof Array?t=t.concat(e(r)):t.push(r)}),t};r.default=function(e,r){var t=o.a.__parse(e,r),a=f(t,[],"normal");return m(a).join(", ")}}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs new file mode 100644 index 0000000..fc63bfc --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs @@ -0,0 +1,741 @@ +import katex from '../katex.mjs'; + +/** + * renderA11yString returns a readable string. + * + * In some cases the string will have the proper semantic math + * meaning,: + * renderA11yString("\\frac{1}{2}"") + * -> "start fraction, 1, divided by, 2, end fraction" + * + * However, other cases do not: + * renderA11yString("f(x) = x^2") + * -> "f, left parenthesis, x, right parenthesis, equals, x, squared" + * + * The commas in the string aim to increase ease of understanding + * when read by a screenreader. + */ +const stringMap = { + "(": "left parenthesis", + ")": "right parenthesis", + "[": "open bracket", + "]": "close bracket", + "\\{": "left brace", + "\\}": "right brace", + "\\lvert": "open vertical bar", + "\\rvert": "close vertical bar", + "|": "vertical bar", + "\\uparrow": "up arrow", + "\\Uparrow": "up arrow", + "\\downarrow": "down arrow", + "\\Downarrow": "down arrow", + "\\updownarrow": "up down arrow", + "\\leftarrow": "left arrow", + "\\Leftarrow": "left arrow", + "\\rightarrow": "right arrow", + "\\Rightarrow": "right arrow", + "\\langle": "open angle", + "\\rangle": "close angle", + "\\lfloor": "open floor", + "\\rfloor": "close floor", + "\\int": "integral", + "\\intop": "integral", + "\\lim": "limit", + "\\ln": "natural log", + "\\log": "log", + "\\sin": "sine", + "\\cos": "cosine", + "\\tan": "tangent", + "\\cot": "cotangent", + "\\sum": "sum", + "/": "slash", + ",": "comma", + ".": "point", + "-": "negative", + "+": "plus", + "~": "tilde", + ":": "colon", + "?": "question mark", + "'": "apostrophe", + "\\%": "percent", + " ": "space", + "\\ ": "space", + "\\$": "dollar sign", + "\\angle": "angle", + "\\degree": "degree", + "\\circ": "circle", + "\\vec": "vector", + "\\triangle": "triangle", + "\\pi": "pi", + "\\prime": "prime", + "\\infty": "infinity", + "\\alpha": "alpha", + "\\beta": "beta", + "\\gamma": "gamma", + "\\omega": "omega", + "\\theta": "theta", + "\\sigma": "sigma", + "\\lambda": "lambda", + "\\tau": "tau", + "\\Delta": "delta", + "\\delta": "delta", + "\\mu": "mu", + "\\rho": "rho", + "\\nabla": "del", + "\\ell": "ell", + "\\ldots": "dots", + // TODO: add entries for all accents + "\\hat": "hat", + "\\acute": "acute" +}; +const powerMap = { + "prime": "prime", + "degree": "degrees", + "circle": "degrees", + "2": "squared", + "3": "cubed" +}; +const openMap = { + "|": "open vertical bar", + ".": "" +}; +const closeMap = { + "|": "close vertical bar", + ".": "" +}; +const binMap = { + "+": "plus", + "-": "minus", + "\\pm": "plus minus", + "\\cdot": "dot", + "*": "times", + "/": "divided by", + "\\times": "times", + "\\div": "divided by", + "\\circ": "circle", + "\\bullet": "bullet" +}; +const relMap = { + "=": "equals", + "\\approx": "approximately equals", + "≠": "does not equal", + "\\geq": "is greater than or equal to", + "\\ge": "is greater than or equal to", + "\\leq": "is less than or equal to", + "\\le": "is less than or equal to", + ">": "is greater than", + "<": "is less than", + "\\leftarrow": "left arrow", + "\\Leftarrow": "left arrow", + "\\rightarrow": "right arrow", + "\\Rightarrow": "right arrow", + ":": "colon" +}; +const accentUnderMap = { + "\\underleftarrow": "left arrow", + "\\underrightarrow": "right arrow", + "\\underleftrightarrow": "left-right arrow", + "\\undergroup": "group", + "\\underlinesegment": "line segment", + "\\utilde": "tilde" +}; + +const buildString = (str, type, a11yStrings) => { + if (!str) { + return; + } + + let ret; + + if (type === "open") { + ret = str in openMap ? openMap[str] : stringMap[str] || str; + } else if (type === "close") { + ret = str in closeMap ? closeMap[str] : stringMap[str] || str; + } else if (type === "bin") { + ret = binMap[str] || str; + } else if (type === "rel") { + ret = relMap[str] || str; + } else { + ret = stringMap[str] || str; + } // If the text to add is a number and there is already a string + // in the list and the last string is a number then we should + // combine them into a single number + + + if (/^\d+$/.test(ret) && a11yStrings.length > 0 && // TODO(kevinb): check that the last item in a11yStrings is a string + // I think we might be able to drop the nested arrays, which would make + // this easier to type - $FlowFixMe + /^\d+$/.test(a11yStrings[a11yStrings.length - 1])) { + a11yStrings[a11yStrings.length - 1] += ret; + } else if (ret) { + a11yStrings.push(ret); + } +}; + +const buildRegion = (a11yStrings, callback) => { + const regionStrings = []; + a11yStrings.push(regionStrings); + callback(regionStrings); +}; + +const handleObject = (tree, a11yStrings, atomType) => { + // Everything else is assumed to be an object... + switch (tree.type) { + case "accent": + { + buildRegion(a11yStrings, a11yStrings => { + buildA11yStrings(tree.base, a11yStrings, atomType); + a11yStrings.push("with"); + buildString(tree.label, "normal", a11yStrings); + a11yStrings.push("on top"); + }); + break; + } + + case "accentUnder": + { + buildRegion(a11yStrings, a11yStrings => { + buildA11yStrings(tree.base, a11yStrings, atomType); + a11yStrings.push("with"); + buildString(accentUnderMap[tree.label], "normal", a11yStrings); + a11yStrings.push("underneath"); + }); + break; + } + + case "accent-token": + { + // Used internally by accent symbols. + break; + } + + case "atom": + { + const text = tree.text; + + switch (tree.family) { + case "bin": + { + buildString(text, "bin", a11yStrings); + break; + } + + case "close": + { + buildString(text, "close", a11yStrings); + break; + } + // TODO(kevinb): figure out what should be done for inner + + case "inner": + { + buildString(tree.text, "inner", a11yStrings); + break; + } + + case "open": + { + buildString(text, "open", a11yStrings); + break; + } + + case "punct": + { + buildString(text, "punct", a11yStrings); + break; + } + + case "rel": + { + buildString(text, "rel", a11yStrings); + break; + } + + default: + { + tree.family; + throw new Error(`"${tree.family}" is not a valid atom type`); + } + } + + break; + } + + case "color": + { + const color = tree.color.replace(/katex-/, ""); + buildRegion(a11yStrings, regionStrings => { + regionStrings.push("start color " + color); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end color " + color); + }); + break; + } + + case "color-token": + { + // Used by \color, \colorbox, and \fcolorbox but not directly rendered. + // It's a leaf node and has no children so just break. + break; + } + + case "delimsizing": + { + if (tree.delim && tree.delim !== ".") { + buildString(tree.delim, "normal", a11yStrings); + } + + break; + } + + case "genfrac": + { + buildRegion(a11yStrings, regionStrings => { + // genfrac can have unbalanced delimiters + const leftDelim = tree.leftDelim, + rightDelim = tree.rightDelim; // NOTE: Not sure if this is a safe assumption + // hasBarLine true -> fraction, false -> binomial + + if (tree.hasBarLine) { + regionStrings.push("start fraction"); + leftDelim && buildString(leftDelim, "open", regionStrings); + buildA11yStrings(tree.numer, regionStrings, atomType); + regionStrings.push("divided by"); + buildA11yStrings(tree.denom, regionStrings, atomType); + rightDelim && buildString(rightDelim, "close", regionStrings); + regionStrings.push("end fraction"); + } else { + regionStrings.push("start binomial"); + leftDelim && buildString(leftDelim, "open", regionStrings); + buildA11yStrings(tree.numer, regionStrings, atomType); + regionStrings.push("over"); + buildA11yStrings(tree.denom, regionStrings, atomType); + rightDelim && buildString(rightDelim, "close", regionStrings); + regionStrings.push("end binomial"); + } + }); + break; + } + + case "kern": + { + // No op: we don't attempt to present kerning information + // to the screen reader. + break; + } + + case "leftright": + { + buildRegion(a11yStrings, regionStrings => { + buildString(tree.left, "open", regionStrings); + buildA11yStrings(tree.body, regionStrings, atomType); + buildString(tree.right, "close", regionStrings); + }); + break; + } + + case "leftright-right": + { + // TODO: double check that this is a no-op + break; + } + + case "lap": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "mathord": + { + buildString(tree.text, "normal", a11yStrings); + break; + } + + case "op": + { + const body = tree.body, + name = tree.name; + + if (body) { + buildA11yStrings(body, a11yStrings, atomType); + } else if (name) { + buildString(name, "normal", a11yStrings); + } + + break; + } + + case "op-token": + { + // Used internally by operator symbols. + buildString(tree.text, atomType, a11yStrings); + break; + } + + case "ordgroup": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "overline": + { + buildRegion(a11yStrings, function (a11yStrings) { + a11yStrings.push("start overline"); + buildA11yStrings(tree.body, a11yStrings, atomType); + a11yStrings.push("end overline"); + }); + break; + } + + case "phantom": + { + a11yStrings.push("empty space"); + break; + } + + case "raisebox": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "rule": + { + a11yStrings.push("rectangle"); + break; + } + + case "sizing": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "spacing": + { + a11yStrings.push("space"); + break; + } + + case "styling": + { + // We ignore the styling and just pass through the contents + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "sqrt": + { + buildRegion(a11yStrings, regionStrings => { + const body = tree.body, + index = tree.index; + + if (index) { + const indexString = flatten(buildA11yStrings(index, [], atomType)).join(","); + + if (indexString === "3") { + regionStrings.push("cube root of"); + buildA11yStrings(body, regionStrings, atomType); + regionStrings.push("end cube root"); + return; + } + + regionStrings.push("root"); + regionStrings.push("start index"); + buildA11yStrings(index, regionStrings, atomType); + regionStrings.push("end index"); + return; + } + + regionStrings.push("square root of"); + buildA11yStrings(body, regionStrings, atomType); + regionStrings.push("end square root"); + }); + break; + } + + case "supsub": + { + const base = tree.base, + sub = tree.sub, + sup = tree.sup; + let isLog = false; + + if (base) { + buildA11yStrings(base, a11yStrings, atomType); + isLog = base.type === "op" && base.name === "\\log"; + } + + if (sub) { + const regionName = isLog ? "base" : "subscript"; + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push(`start ${regionName}`); + buildA11yStrings(sub, regionStrings, atomType); + regionStrings.push(`end ${regionName}`); + }); + } + + if (sup) { + buildRegion(a11yStrings, function (regionStrings) { + const supString = flatten(buildA11yStrings(sup, [], atomType)).join(","); + + if (supString in powerMap) { + regionStrings.push(powerMap[supString]); + return; + } + + regionStrings.push("start superscript"); + buildA11yStrings(sup, regionStrings, atomType); + regionStrings.push("end superscript"); + }); + } + + break; + } + + case "text": + { + // TODO: handle other fonts + if (tree.font === "\\textbf") { + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push("start bold text"); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end bold text"); + }); + break; + } + + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push("start text"); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end text"); + }); + break; + } + + case "textord": + { + buildString(tree.text, atomType, a11yStrings); + break; + } + + case "smash": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "enclose": + { + // TODO: create a map for these. + // TODO: differentiate between a body with a single atom, e.g. + // "cancel a" instead of "start cancel, a, end cancel" + if (/cancel/.test(tree.label)) { + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push("start cancel"); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end cancel"); + }); + break; + } else if (/box/.test(tree.label)) { + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push("start box"); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end box"); + }); + break; + } else if (/sout/.test(tree.label)) { + buildRegion(a11yStrings, function (regionStrings) { + regionStrings.push("start strikeout"); + buildA11yStrings(tree.body, regionStrings, atomType); + regionStrings.push("end strikeout"); + }); + break; + } + + throw new Error(`KaTeX-a11y: enclose node with ${tree.label} not supported yet`); + } + + case "vphantom": + { + throw new Error("KaTeX-a11y: vphantom not implemented yet"); + } + + case "hphantom": + { + throw new Error("KaTeX-a11y: hphantom not implemented yet"); + } + + case "operatorname": + { + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "array": + { + throw new Error("KaTeX-a11y: array not implemented yet"); + } + + case "raw": + { + throw new Error("KaTeX-a11y: raw not implemented yet"); + } + + case "size": + { + // Although there are nodes of type "size" in the parse tree, they have + // no semantic meaning and should be ignored. + break; + } + + case "url": + { + throw new Error("KaTeX-a11y: url not implemented yet"); + } + + case "tag": + { + throw new Error("KaTeX-a11y: tag not implemented yet"); + } + + case "verb": + { + buildString(`start verbatim`, "normal", a11yStrings); + buildString(tree.body, "normal", a11yStrings); + buildString(`end verbatim`, "normal", a11yStrings); + break; + } + + case "environment": + { + throw new Error("KaTeX-a11y: environment not implemented yet"); + } + + case "horizBrace": + { + buildString(`start ${tree.label.slice(1)}`, "normal", a11yStrings); + buildA11yStrings(tree.base, a11yStrings, atomType); + buildString(`end ${tree.label.slice(1)}`, "normal", a11yStrings); + break; + } + + case "infix": + { + // All infix nodes are replace with other nodes. + break; + } + + case "includegraphics": + { + throw new Error("KaTeX-a11y: includegraphics not implemented yet"); + } + + case "font": + { + // TODO: callout the start/end of specific fonts + // TODO: map \BBb{N} to "the naturals" or something like that + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "href": + { + throw new Error("KaTeX-a11y: href not implemented yet"); + } + + case "cr": + { + // This is used by environments. + throw new Error("KaTeX-a11y: cr not implemented yet"); + } + + case "underline": + { + buildRegion(a11yStrings, function (a11yStrings) { + a11yStrings.push("start underline"); + buildA11yStrings(tree.body, a11yStrings, atomType); + a11yStrings.push("end underline"); + }); + break; + } + + case "xArrow": + { + throw new Error("KaTeX-a11y: xArrow not implemented yet"); + } + + case "mclass": + { + // \neq and \ne are macros so we let "htmlmathml" render the mathmal + // side of things and extract the text from that. + const atomType = tree.mclass.slice(1); // $FlowFixMe: drop the leading "m" from the values in mclass + + buildA11yStrings(tree.body, a11yStrings, atomType); + break; + } + + case "mathchoice": + { + // TODO: track which which style we're using, e.g. dispaly, text, etc. + // default to text style if even that may not be the correct style + buildA11yStrings(tree.text, a11yStrings, atomType); + break; + } + + case "htmlmathml": + { + buildA11yStrings(tree.mathml, a11yStrings, atomType); + break; + } + + case "middle": + { + buildString(tree.delim, atomType, a11yStrings); + break; + } + + default: + tree.type; + throw new Error("KaTeX a11y un-recognized type: " + tree.type); + } +}; + +const buildA11yStrings = function buildA11yStrings(tree, a11yStrings, atomType) { + if (a11yStrings === void 0) { + a11yStrings = []; + } + + if (tree instanceof Array) { + for (let i = 0; i < tree.length; i++) { + buildA11yStrings(tree[i], a11yStrings, atomType); + } + } else { + handleObject(tree, a11yStrings, atomType); + } + + return a11yStrings; +}; + +const flatten = function flatten(array) { + let result = []; + array.forEach(function (item) { + if (item instanceof Array) { + result = result.concat(flatten(item)); + } else { + result.push(item); + } + }); + return result; +}; + +const renderA11yString = function renderA11yString(text, settings) { + const tree = katex.__parse(text, settings); + + const a11yStrings = buildA11yStrings(tree, [], "normal"); + return flatten(a11yStrings).join(", "); +}; + +export default renderA11yString; diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..afcd2eb4d1488b6eb04b00302eaa6e223812b012 GIT binary patch literal 70972 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Ũ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 LMxXrG{U84UTIJEb literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4f575152f2d92dfe48ed316b668e5558c6102c93 GIT binary patch literal 38868 zcmV)!K#;$8Pew)n0RR910GHGN4gdfE0Tny|0RR91000000000000000000000000_ zQ!g?A0EqYi002?|003Y{ep(7+ZDDW#0EtWh00LS700e5-(mj!5c61;B0Fkr+001BW z001rr#Rs2eaA$1*0E?&q00oNx01KDc6x;A;VRLW*0GG@F000O8000O8000nYY<Xq? z00Be*0E2n}0PJuEI{6Q1Wnp9h0EX}Y001@s001@+gLLy~Xk}pl0EpNC001BW001Ne zM+g&WZFG150EZ|500FK500bQU93<3iZ)0Hq0EFNG00IyI00IzcPoyesVR&!=0EEB* z001BW001BYOALT+VQpmq0Fl%H00O!I00z&?&Di#EZ*z120F;mb00TS#00}==i_r9N za%FG;0Fg8R004ae004@QiQ&h1+T6PbeA`x%2mEGULm>cy06|hzBPo%TWJ$ItlCClx z$4zptQREU^PLC5OPMqpgJDc0ycXPSk`{ld6?Y&+v+k5Z*dN=*yfu!tc?e%`WnEL5Q z;LU(C=0E>8^B<5PnIMGxIVK4ul4x%h3<xeAskjxlRB;OvuRlI9fywjVpMd{`Fydag zfbYe3lRDW<c9TQomm2YHpt0-s@1q2&fP_xZJYU{<U89$11c(Ml31f*FU2<x0LU2w1 zqK#X#GtZAiR!n2}bWDHJ>ZcmGxOH~6kp*&aZuibrD<{T>hYI=buB0agsYBfq{>b1& ztvXpM6{JY|sa{O_QWWx~Vs)}snW)ukUZOUU3cN%rs7wTxEY^KlDHRc`dF2-_m&ULp zg{(}-VyPOwk*P`%Ugj+6*1v?N%agX?$8TcNly;wHop?~Q8NBH6SgKbVg1zxs)XZCA zFBayx2O;mg%B8a~TGRdE%&}wt$*ARm%%rj4ncds6iP6Dfn{rK)k};u4Ght;R4>gTJ z^V7}GCYPF06AZbbnK{qa;xGhhn4>b+eEZ(mb8zPwcjX<|zfI<P`bwaqAVd%|jMyFc z`(z1OPBxNRau<0NetG73BfR?_0ZOKqqfTuwWF638(_vuDa4CqEK%>h+*E*|Qt(LCj zcqO0N+1b{|jS!tms>_oxki<Y~9MuG)l#)3@h&5w!M1(m4;KJ7SpRtT+RHvGLlIY6w z&IM1w@QRM5|Lvbu{@?dmKZ}p^LZ8|2U!!-$ibo$geb26)TQ;xQxMJhFwbjY-vEg!m zUspPBiR6ekS+4}C@TD**Wu@~@$U+FudaY6m!5c3Xi=_~+sd^z5#6zo6$xYQ1-iw92 z6e5}QiiJ`tP_7g8&_S(ulf`gZ`kjjx{7Sf1nk?mug+ekssZzl--}`~|oxP^+Z8YFi zN@Dl#W#933lj+&+1P}jt*&fNhByZ=8@!KV<Z&^L%CIa82Z%^o<lQpOhOeQU1t=zIA z0U&J=^ht*C^1f&0XxS<v<F=VTgU?D6nZL8IFYDKbMCnLkAZFj&%hA*XlgNz(_9hGo zlBF#@asKZUnq}d{dAWMi&E2{s^EW*NCPS-hV#&;8yr&TKddbzz-79Bou0GQppV~R< zfH%DLY@9yxlqsbkgp$&QAL1Y2d&pX{mmDVVY&ZkJaX)Bu-yjmLLtbSah$b{5PKGWT zq1rs*9OoDyCT1iE5k=F34viHT>_Zd6Df0P_;|r`COMa>$fH=^x7qBA)N(RW>?ADo8 zD<;Ns{oP$@-_XfgSZhSo76nj9kyk({hOnsBCu$WH!6@97iBu{nMXA_&6<VP1JIhcj zh=>-IgR)Rp7_5qdC=|kT`18`V)3d|ZJlZ&LGR}GM+yk_1E}y9P#H54N(F9{wOi(R8 zv3Yn%Us4<%O%6R3ln(E5o444sx@;fset5u?VqJn#4}Oy|!*VPiUt<W}?q6jGLGQUE z!M(wKuXd0o1I9g%%a2OQg`G)n$oa+M8|M#fe4R|pxbUTfH@^S%BfZbA@ugh*itMA= zGh#I|J79#7c*t+hhx}F|E67Y3)8`ucwQE*anMR=<%{<X4QVmb)mr{US$V$5v$17Mm zi!85d6eW4XTeWh>_H~VwGplA&lbPa@WrpY)@#^6|6J}(p6S_j7)Jo_nyqM6FsmVei zjEmb&>O>f>ymZ5$ETnOm$SSGB_bPH@SWuUgzxm9@zFW?D==8tw4(ktpTXL?a97m^= zvUre@{EOA)oKk*5GNdq@PqA2Ux$m9?nwi^zKiln$JYFacu4bkLF1O)tGpYqo9(8Nm zm)>w+44D*MN}xjOxKuX;N*?P%aAM8xHotE>mIYmqv}i1Q{_jPcnZtiqj883n$%t%z z=3Te;?R(RPx#Cb4GAhMk!bvQQ+2di%_K{=cR&t7*0k6?B0Yc6n-AOfZI~dws0LE=V z;r<&Ci3lSZ3*)nzXu=Sh5vC;&pyZ?j1jC;@i4h(eaMUt&DukRRQd%={JH{Czn<b3d ztV8qv`>)}K*ZAM$?ksXwxEQ+kULg0Lx%ZJ9j~_aCVE?9&{A<;vVd;|3WiwvFj!8lG z!9G`Ics>esi<Ub%9VCU2GS`Mpv<<XCQ?KWORMHPin0CU4o(f~hXtPk(E!5HWZcz-8 zRp(U&v=ohM8uc+=c%6Jy;J}+*yXR0E5#!4?EPJ?@y3)jM!Op)=;VLu4ITz(@_+H|e zM!BVFj23)1KUrHT4T|pMN;hs=k}>(w+gSMTHbl;0W7Ui~57{x>mU=?}9nOGe`kcNG zht=6i`SdfIZaKpT(w4+O5Ud3`YHK)QSXA<uWK`Qboi^j8d{T2w;KtxB5Apu~p)QY7 zgZ;v@T)+o)`~08VnvfPw#QH~3a;N#Rowg-4&Me;iJal#Oz|oPg2!)$N6mBPn$UM1& z{7oZ3All)B2;|lqQ<PCS4oF#>Mn(w*1d1n3T~b1{*%)Y=HAC8IAD=M<GR9{K=QfWR z<w{P@6`lUK*t=ZeDMiQ)M-J@Uxr1yc+f#u*m@JNsS)zLcf)@KL3@Q503#neodJ7Jf ziFN_d0hzCODLi=vaHZO?nWz?vRZjtD0XN|rTthXf#lm=(-P&x<;yNNaOY2TNVQ@rY zxcQ!Ie59%305eU|e10*8J|1DDT9JqxrfOyeAJGjb5l>S5eXjjJGo*0+v{TZu$aSGT z`Vg}ITz@WQXs>&{(EX+P9{I#G(ltPu_T_+6Xu*Ox+dd7+5Es(N=Et_{hGFUsB`m57 zei+sTJIGOTJ2^w%+X&)7$vo(A%tfI;aB6OtG2X$#5CNhK(C3LT4M{l@Y9ps)4uO!w z3}H;0Bbw%E9UPR@0tG_nFXwrQd1J{>x70Ltpl#1IRU-H&?zrR3i8Hs{R37wG<tabk zh>4yNxLPHk;vKEmtCOuDhXkS^AzG^uST0r;sf*P@DzvXwFDVtgLR3vACu+6uY6@Pk z@2A%a`^&j{ygchm=`6Q}X$n{^xv3QrCTcfszP1v7=vM+&a`dzciR>f3-VpGXP7N{o zVj0sIWOKqnZc2RT<tvEoAA8;Qbpi9m^g6E)lSTv#&Bz5?*Q1^DDB7<+9aSK!+V#a7 z*6Gxm{b1q``&!jS^R2qwWp14@VkjHSdlH(eAnlMf{wrjS>&Z>zKJvkafk1Q(OoDA} z3=@+uFxk<N{0)s0qR%EQ)OBmdbtI=80B0}lg0Jl1T*l*PHg0vtc|uOzbK;KqV}}lg ze{tBRZ=Kn2ZDVan6v?EYOeZ~sl@<{QDcpD%$%q&f3A8AnT8+5j%G97>qug7YO^a>{ zZA8h1-lQ0ZN#(n6j6XKH$d)CdEO$w6Ha{RuQ%?_b{;!-5WprJa;i*M50aMa2WVV;b z5dRf`=^%Q$LO=Ntb_ZiD{Dts(&`zk%<OB=3LmHAvYKi98o8RCzm0X>$O-b$8qvy^& zsoC@jgu!e>QpS4jdhD?vKczMU1)wE*i$^qx8=GI;_<D1N*EvB5692*lxI4tgC|N-s zd&@8);hiG1OE4sa&uYNAH6tmiIFSVuEV6JGSzK|k73BmWs)z_bceETN(}TLmEQ;zS zVO?k--F678iry~`)J-ZfBZ4vJbw#0hyJSqyba_k&F_H}r<R`=1%Q-v2@rCzTY8+cP znQM|u<eC8)=+Z4JS-7TdVC?*dV$ls$*(5H!3BDBGv2oHMyUF!$sl^dw=bm*FLL?BW zn2-ZMA{ZjlSwg9$?#Y#xo$#(SVjI?b%LBiZ$!p>NraoEgY<Vr(Q~&!*d9Qu1P{BB? zp+Mab*Oj70p<bL$7Tdhpi&b?>lyh-sC~4a?T`?sxuh64F3o{XD%Yq~NNB6`w9)g4F zW=V+%n^Q=C6xeP|B$%l)1Fhb^VVNrQq&<p#CX7KvcV4iG#bV7LH@|1ByN0jAS7}<R z`S;BaSuqGDHAsVV{!LcGl2*p0ItMe3E+LEr7cNi|-qR!DPIj6+Lw>Ch-??Qe<>G-; zYZGw}yu(!emZ?j|xd>q;gf$Zq3PTP+<|q(ilNK@;+c}r9yNZcR6iPEspS|<MEjJ%K zdg$QZ-P>pUAY`H5WZnsjl|f&2bh%nBL}f|JWDs1Lb*e9*on)%j7ZuxfmCiO6MvFw+ z9$W(NT=+ixY*h%+(qy!&Eo*IH;VLD@)91Kw%owM+1IOYPVvO~5*od)<Y{XcHjRrK1 zc>7JZ?Yq8Yk3AMMwUJ%H&qG(d%a+FZf4WFb^ZriB(W2>fFOJ8$;l>*?k6O&pC6iJ! zfXm@qPg(Ze$GSLe(UQuc4lT74DB>keOy2bL&4)cVmFT9_5t3=TG}n8t25deb?~36q zm+(~Fgn&6FCYvXI4IC@Q0q=dJU<-#4y3mPDk_}`RdG5^(z=giK(5XcYDJTG$jrwL? z<Mahh)yNf0oyDeCw`#RWe!aSDXV}7TsBcIGndFe~nqdNaoq%`tDFugxmMH08c5_Nq zFLpaL9@@iXh!b^*@SH25ssfk}T!tvk<y*#U+l{Et$#Su{&-vmlQ4|pwrGRiyP>lrx zmTHt$Oi&oI`Tgei%(%crYDYP3N%<xU+E4B+J$#`>fdINB#?JqdC^4WCgQV8d*y%5| z^Y?M`BJwK@|IEo-Z`wXpP6=)hfa!BUU`s1VeKC_!0Gy+MXw6u<<ctt8YiKBhEusJ| zHghgx_R}p~p#l@!fA3v)sPw&Vf3NS2_^YZZ*A_h?w^nK)p)RDRV%lCz`R(en(oR%K zqm4-IMGFOn@>`8XDX=AEnYdu1GC!0@pcIDC^FqV$eJG5$Dt3OQQc~IOg&zR<WcW!{ zHyE{KJnnT15bX3R4qJ|9fgL@{`F*FQu2W~!Vu&;qV?N86&A(`$699c@ZU8Mt@zFDg zEC|=Rsq+2LC4)`J59suf2TU`N20U1)NXc+&N|;EIYxMj!t}{0wyG&e)l$pq-U<`iy z>+A6w-{q(>Tg&Lp|7re@G*TQGc!p$gU4{<8HeS2G09%`%|1vT}7>3~sq<Nub*W!N- zUiAZ$HNV>YPSCR~Jo*Hlf1eX$3{A)B`A0D97(M^Hj6zg*`~cq*B4!iWO<vzf!~t;U z<`rEgColnGLDuZkIgLWhBCJSI4JOevdxi+%wXm|-%(;wNqmKwpoVtRUt0}D5Gt>T1 zQ1nL%*@O{cBq};o*%1LHgh>k}sp{myMqKIiq*AzUga=Bce<>OUiwX`TRiCV;?S$|# zpy;H#)8<|GAPns-{tD7`Um$f|zE?74Xybx18RPUzpQe<i`ckUd_;bmz`WtV5AP(?; zz_=+9K~I|?!h<xAa~q*{V%bN3>krJNi=xHDI%flB^KY6Tlbj=DA^7I^v~*|nZ6EtL zAJ2anY-2?2zxlA2{8l(4%a9t`N$w^$zGZ#|QtZ%bk|2^f67`9cE>e=c@H|q2^Or6) z(ihJH&;#u?swCpKEa@4}F_9jDsJ>BqsuZn3Rx1}n-6y=eveUh_n?m)PR3<#s7KOC2 zWuO*I#mIB8r5YrYsRg-GCfg|;g$%Y0B#v#n=0Myu(`%0Y%C8=s_9;znnf^|ndCf@8 zqtvUVa!!Ar+aJ_C#=Kg#`Bi5H9o1OO<tu&d*DOTr?KUaAk#z|R0s5Q_YJI%`Xf4a` z?{g;c?X28?Vsr7u#lx$PAD_NIv8<9fy=9xnp<FxLxBi;mr)$2=nB!GnR6aR;uA2Fq zle;ql4Tr5dQZ9XBr=&x>HuP@Z@*#An1b~sHo1fentlKvP05aQk@RhUc``5NL<b7fO z)W`;MUC6qxdh5Y$8>qfeyyu8c0Ckwx1ajUHkQd5Ln?~WgyrHwm@M<<LjnZfL&QdCw zDf$_u9QSmT<5nc10JjyJMK#hQA-R50M=rW<s#q+vkdW-eu^w)Wt&6HtQDBquw_mcQ zw_MyE?_OD0<xi~ypa$^1v~HR*<juvZ@~7kpr7GXf*+=BaWKs(xEsx5oC0Ej%BT_va z^r1aPHxiV!<kI7#J+<D1$sbDQRwo&>DxJ%z%Y)W}x~$odhVH#<$C-$;7rz+oYqCq7 z+t6l-k<B-aNR}Ahxn{^Agon8|6Xo70*+S;S-Sf5N^9}nxVAKK5UI79W7xsja8X&-h zfLn+lDDVbCX(uO@ye6R|;za|5jx7t%1LH>*J4Nvy4lT<aOF}3kbp8?#L~(!!fd`fA z&TL~ynQ{;(uWCE1YN98fc-c#yc<qy~U9)QGcyD*o%V{Fn%K1*p3mH+R3S%m0Q@}WO zCOhHD77HvQfz~uZzK{f}OFP2P;20_vxX1xw!K+9M;mSoFNx76@Te|P)wr6sR6MFZQ zt#oGFa6032D^^>*=Apg$G)qjcXc5KCw})Fik*L3rC%QjN+bppnsr_0U6i3iFoTHA# zZ2;)EBbq>ID3*v<KEIMtEKco?b!D`eJ#cNpRJ?J`Yl<%(JiNMZT;sB@XHZb8b-VuF z{E|3Jt(bnmJsvX2j-)Ivf2!|n@44kI9;v;kyu3bqu9kLKi$_)*EtfvN%V4O8<dwOT zlVC{H=;-*Sry?R@D6-kPkVkTB&;Jr48=tZO5bb&{L3qR~?+<xp1=&dUliSDxz-FEw z3vm)BAjtf68>t~2K!Z+aUwFz4PtCT#H%N?_iAW7Rs!J52%|4dKDWx#WU}1oDC1d9@ z#$!L5u^SC7iD{r=;>pk+u4W#Mw@=@9&)p~Q+Ouox%r)y)ud3I^$I7KbzB`*v<?Tzx z+if;mm_`>u02Qv(_br-rD>@6O)(X>YI;+)77YQ=yx9E&2#>>k>cv0nJzW)R1M@B7f z6>d%3wRgaay;aU1D=zeSixnsK1$kGicVl1KNed;<pz)EV%W}TYEIT|OXTZ8|c%lk| zx^}wvf!;$_wKdjGZ|zCsCb~BTT>FK)b#CjLeD)2Go#^KDa)J{}TkU==BDynY0&dB{ zJ6|NMRevi@XCggR?jB4s4o2^hqs?ERMmqNPF=rKFr2E3ZU>x5QqU#trM_vchjl>$@ z?B3(YwoP$ebAUvQXGM=hNXg~|Fcy-WrtvwVlqjO>t<mO8Tfgo!{<*8VxQks{%D7H| z=rDg-*F_GIG9KCxsWCa<@$8s8i_Ir~R&!TL5(7VJNy9}-jx2bnN>u^Yd-W?1ADY>+ zYDKMD86Pirc_S>S2HUf=LW@gFoe^48WL;7Rg+FSkGkb68?TcqGEjRT;CksL$QsIBF zzM#ankSp7JaOb4}to$Q1tDdKb@i*RC=<e&zr{lUNIb+f?^Ri^uM=Ci#u1jnC^o<9z zBlln-HeOB*Dl0CTf-84!SZ2%dbtt#*-Etrs>_*NE!?Y4iHs8ZAv7|h-XLf&F)0oH( zJ6>05-&FY;PxK(8fD|ArbPL`09=@F!rikfG-hB@<C=H5LbI2G-=sl@ykQ`XmzvRf; z)yp=!NNt^22AA)bx^4jV$M@=3ALB;<id^5?iBWi@2a!7ou4m(kq3Mb8(7@oeW646^ zv$LhOBYlOSR7eNq(L}PZDUh?3AZ+TZ`Z^b~>cbJMt|eQ@4)UuFpA!^hdd&*KK;ZO< zkD}8b=Q)4~5AkF~T5S<STU@(c!O~e|c~zr!^|p1!Px|8n{`g=bs@`hRa8}`{jR`e< zjbA!(>u9pBVy}q6BGA?Ag;1yhx6m%)ylC#0qZ(eTQD!h<#%0kNt(ua0J=uuDo)@Mm zyL)`j%!#E=Q97n3B-?4NaCGRKQ<^RN!b;26@mDlTwYNwX)4H<Gu$E!i{CxBChQTqS zDBG0C4I6SWh%BQGJDF}h#^vkuieol^48zS&HNTP4v;?LrdfX(G#KXSl!(m)Dl0)Q1 z^3<De1Wp#DTs?YjjSxC(NTf8R0?rrpK8tOf7uYm1gcIO!WU&>AG$S<z-Lg6S?2X+c zevnyFP?`}0Z5^;vGq=)e^0FeLzfc!lEODZE)p=A#ciN|*(oW6rba<3Z;oD=THt6dN zkhzoVA2J`F8j5jbvXIs|m#{*brpS)6a9zf$@nU5#zC=$*06Ea5nX%?S@>@Bgnd|P7 zxzH<XB0S^_>!2b2z7{tt>DtTR=IyAh7VCyrC%*o9JH~|MLaGP}7UQda_syGn*ZVvn zm-yw1{VTs58?VHqrY+IIF+ck0*v5fwgPT$xxHkTy@0wW~9V!SVB-9N4E{xV1vXfj- z?roTR_iWv=ydvmA%mPie?ljDC0EpPz>!i!#Rj0Gs2nZ$g)S}fWNcQ#DZCLM52Ib;_ zr>pQxcKZH_pfh@u)W%lric#fRj09b^8Vw)=FK9moGdMX}o2=Cr#G%l7Fo=}kdLbXO zpXX4+5I670axk^Pk3Z3~sUIYlls)}&GssF)vS;5Yc&69Z?FWq{rxTR~Z@w8hyfhY^ zeo8mp^po8JZqcY|>LQ)S?L8SL42Mw-sf_t{^UpT^_IBVLp$zqS(X<6)LMDVAa&Yrs z{R!>tqjSksnl3?Nyxjb+=2ydJt_s=XLEXvq^kglQFv2hVkbW(iCf-IK4z<2lHQYg< z<m@B&9h=*+eYpm-Bi3gOT{ER%l2S6u5fzPHOrOgdI5QV>2PmBSNrQ;3x(Rvg(YsC@ zKBOjuTc<Z}Xsn%BI$ZASO~zD@5v4$-Q&^#rWyY`&iKyy5jdJ1A7)D!~S4${CzMVn2 zPIQw&sux?O8J}zgZ=${94Ti`0a9zc-RxOrrFjV`Z7FQ|td1)B$6v7K^?K7O&Ozhtc z*=6Zt9AnzIV@Z$8CvNQLU`WT-^T*)HA>n7GVM4EI3g0*7e(4%WGuNI!#qZPf<2OSo zyEhq!7inu7i1uB#U_S2N2h%}D0teKYjnBjck1<WnnA2V7f0Hw&f9<od@~#zMqsZ`~ zG)G4h3JpxrrJ201`DK71WXEG=Q_~f`thjU<KX4~9TR$?pKEwTZy!nmhw`P%T{>L4) z9>=1{g68L%|BOfI$WmCdhuS<NGZ`&U2wUhK=E<257q29L&~PRI@TF&;x@&j0Ake`@ z-i`?tjeX~MB<nerp-WDPHWxQh(`>B`kj0kH<t(pi)Kd3)33<iKAAjuB-8bJz=E?k_ zgWI+iMh5&be=uEe!woN0oUFA<q*C$HERML=j|!-WV#6g>J4J)JmNX%fYBi+c<Rv4a zHj-L}efwE$NvnmZc1kE`^<c`R>QxmDC|pJJ9Vn{DwPj_pJ7nmt<$vJN$rl&Bq%;J7 z!yAM`MnM|BaV_7@49|&k_Ai{d$=uRfb|?RX-o7r|HGbhaF6?Aw&k!K1uSGo_*9<20 z#_II4?-WL$u@<Gp%U>K^4XdpwhTH<bc@7w4(^H_uW7YR2#PmnYLBtNWA(@0=Fn;%q zwwv_26DBf-X2J~C<!+<;`SNI&r%a@waou>?Dp<SGumV3D)0oEaaUFp5Ueo-oH8V+p z2&j9q23ywL5SXTPVlhaZ|5KWvRys`yp%H%G7vg6Nxq;kFUfnQnKDei^+Yn@7zSCo9 zf-_3ltSON(YerX`0JE1q61mvOS!DFn)?H{npfrE%x&vEh$QH6?!?goRg_D@*Y7eMe zx}pNaLM7BfPBmnig&nw_Ya^tsHnjHV_U@scMe>!BoD@-wRIP?93I%@19r$L`k9mG+ z+jfe)?y7lD^BwAUqAG#jkXn`l)3Q}z1E%0X7e#Z^4vOc1()gf5mE`rK(|V98dB-T@ z_i%CG0F!VozRX04zb|zcY2dAR@XYB4X`0)Xs<e3;Z#wq-!`H1q*D#~%TZ)7fJo)5H zKTY+xtM_YCci5O|L2+zT?)h78H!aJ(^VGAyWLi7{uC!GC_q40r3Rz2L$X;^xEp-QB zVRIfP5E=nHNf-@(?vw%v!C9ghz|=KLDW5eUdP*$&Q;eO(#<PvCty>A%x_9fI=}qe! zwJNEQWy$5slf{_GjHIG(M|ka2&6ny^Sgo}ut~Ql^yLyT;R7fduG^}5RXe|s*DnFuz zH(ofnX+1kuGS)u!-m#l2hh4@KrjCMAhX4KFu?=_Jd|2OkYkB1kn>*6%L5a=p{cfTL z2mpE<es$?2V)HekQhDd!GVXivL?0N`yyI`7?hnj(y1maENdq!8B;NbSzx%9>mcM^x z*5uk>Q;GPf8K(|1X}ieT`9IbXmNx&sw-^0{X=3|(E<v;}pC(U{SCMx&><u8bSG@Q| zyS8v39r7&^!_tv}LFP@6GJ1+DWZ;NH1pv<Six2u-!Q8o=`OjwAdiW!E_UzeLoqg3K z51l-5_~7hydv;$NYA&@&rMdXtkQ-OCfv9+rLQ!jrS)(*l!7E1HNVH|QiB&CDTl5|8 z?BA70XKc;cqugts4!El%z=?>`<I={Y3UxJVa=cn8A1;O~ex;U}ES2(7w&(09gVNEQ zrHPlth78yEf||v-RO0}Yo}g54Dttw=AC=6MzCcum=FWPTMuC=%#HdHXlZN?zv-!*A zK|ln?)bAxD5OO$jYWjeH+1kMako3)&US}NM>9PY^ONcky)%F+;002>HFF{J#%GI(E ziyCT!Nwc7#tqsI9gA0I9eY#-8hXaRc-O<KA2RRDJG-jXwn#D8~2?U^y1xFDm7-;&< z$JyO?xe4pwl7ue^L1Geus?Iw{UP1o5k$m}Wy_E43P^JS?I(^+9)Hb)iB~x`w6scsq z^}wGCECCc5ows8KRY0(GR2cIBk<11@&;|A7f1k6`N`5v!XOW)*-`LMRO~}))__<e* zbL8CFCm%U|;`Uo^JbL8d^#}It-Zi~>?V8oAc9n_)!+UdXE*%yIIkk-!s_h5MhUplq z79#?whA@oemWV#ok=pV@%OJ#Fy^<_M(seKPVWnP+3IesZuq1pn{1QTj2g!<hFMXR0 zW1-L%s4Gbtf;OpCmm1RenTO+MZk0wq5OZx^QWZbO>7!@tN&9R*hU#G344j~voh|tK z*nyST>PDiZQJ;HhSy<Z`8)w~~t|jL8$E33(OAozK-MaYn{%q~cqm)OJbSib*jeP*A z?TiOo$3|nO85^N=3`{n&H3A=S3$ZVlO(9qBfc`1fLIcDxFeoc%y+h^-*uFJJ?KqBw z3w)40i-?v1u;lu_@C}dXFx(TE@`Kj{cwWNWqV|ve3%lrR@WZ5+tP3&s8}M8s`P_E2 z#c?q0XSN~NU$FrV#->}SyN2i{H+6oJ*u>Or^C+PNC>*&stF%A}IY*?7&%}UpHb)q< zm9%Hf5yS8d1;MWW-B)rKT}gqtv2Z0By4X@2z2YUWcpb&MQw!H21SP@wD_!pjS81%i z`UNy%P|cYCi3_pT7ruIa<(Hm)&C6f%^ivN%aL?U$-f`XjeY>}8x_158*l5nVbat!Q z(U+n#zHQBKYpF01+N#i{@?-Q0ZIme#Ra&*SUpJcBsH021Y9hmT7X^;i{@nSlKuZ-V zgvrs$6mL=;=kta3tT6f@cv)t6nST1s%X$qiy8h)i|KPEc8NvO{6EFR9ebn8%?z+=) zj_yZZ63gderw;XWPdmunbvHHt%Y2Wi*`9C>!C5ROJo~Aa2cz4454DwpI+uOvm~F=V zehxCNWqc>gJbENS0nJfStpYRM(B+B35>|<&r52;Gyy0hD58o@mIeT>VRJJ=g*8A)y zPTlyr-mzr1`_y$)djgRC!@qbWo%IU#i$CZhTGQ#=+$p=@Wz#qAdh+}Ol$HU60k4pZ z0hE~->dE%UMPEgU`pNO?`gmg05M0lUs9hqqUOQ|K+X!>l8&S7^|FV(}0Mx*P*8>-> zrx<?t!uR1k{*W9dcay(ur1s1R%7q4uZ(xKHwtgjszo%Qe`Y4fvP)X(qBN5Mr{+f=_ z*UZEm5h9^P_C@m82oWTr=PNp2;?h`pb!!0qK-));zHJuVdB^ejx!GMirZ+XFme&Rg zsbtPj5<pA;jxe+^Vu>&s_5SUWFI=cAERLbfE5M1iX0ED=RIMIW>(NY6$>Vk95}`gx zl~W|rwQ3NBwJ+(GAH#A{w`x7Z7N<S0O$;pS8{O%K6uNS-I6kyF5Y+VhMKTWH55@Pg zZXr4K0*Q^uM14{-OaNx@-;)je@}NXLP5JdZjII?K*My*ZO=*qP@PyC@i|MScFBx8U zjlX)m|Cupvy8D+Fmo6!dY!8z8j6oC2Rt`$f1gqPq0r1sR$YX`#P<T!;{3K%0wBqS3 zP+Z$w{>Gf3J>J;H!P|1>@j{Uh2vPCRIDu~^w?ndF_W@E3Ncb`qp2?{a-PBB7JIMhA z5DDZsk;K%cIZvY52_l^%lv*uHib03jhOg@EEI2!hokt>PM%g`AzQPrp8xvRa(?V0t zII`f6(NNI8?UuROo!d8W7%B&oxnQ7Fu+(Egp3(q1D5_T{+ZAU-IjU5RdWTf2E>-oV zuTHly*nS*ERi_<DwgFk4?8v@0wikvUF|tJ-V<KK$lF$Q3H<51JXeT_neVcCU`tuIc zxmlSSU1!RPl%4cEM-RN1S(=WSy;Xy`m2!8#H)@K0&DFsWZs4Z7;6E5J-PWW*k+L`< zlVXT5Doxy`aiQC$Db_oML})ZP(3|oqFKc*q+8YTpqw9u%_Gd!ItGu|fEUu5G<l{Z- z2dPctNdg!C376@^bQ|d>@rH#!HW5N@?d<{Kk3j1`n;$F=sL2wOOv&1<J2p5_nc#X} zQzi8Icb#p1^wof`Z2r{~=ih}wP&=jZERLb$B5uLcF?0v;P;yy1HIY1o12J1L0Cvmq z+XxWEd-V)`imV{N+A0vbIKzeSr69rqq9h`MfIHgX)$SvNF>(_J7Md}7{4!>xt6b=+ z*HA!m2q7!Tis52^?}lYU1Pi-ow0rdrPGJZKRsTsL*#b?eYO<f(SjdO9WnJy712nGX z*Vm>F@4exkUHvXF_==H=futJdQg3U1_Y(sfH)J=>?>>BLcfT7x#Mj?h&3o^Jjr0ki zT5oZ<kK=2oV2rQfBBj-5GL-7QgBMRvaov;4X9<CS`y?(S*5zaBT`i{k|6oYf=YJFL zz3@N(Kac5u{`3E>F(vg2zaLIf4v}FZ-qh>D(l9$G0`*GyQmCq}^$oj3LebVlSa?-} zsPrmG>BEt9uFJA9hI;IdySr+--d)?f52*p&qszAx-n6#<h7Syu!3N60A9mt%oN55O zVLNgFL@p73={Y0>$l!(l!Y{#}kbU7_F-)SrA|gl!6#-Tvnrv~T=#Xu_9w`DXvR#X+ z%q*$NbY!58TCA&V!UAxhUc)!JT@Kr{K~K5D;E-MKGQUSp%q=ZBI@S8E?ML3M^>@Y7 z>9w15Q@48Qz?8+49^;_72P*@P&a6xf8c@*t;ZJNkX7RBRKffYg@X=(ZbPD4+Cop3Z ztNNBr-Hq|M>G<VQC!X&AUz__5z&4I6?VUGmI~E-T2$CoS!QKgql33IwQdIBNvMt$? z<rdqKtKyc6o$eCHC5i1zZ@v__l*`5G)fYSMnlJ57F1<OqToOY6%q##x#W^{DjbdW4 zJJ@~io0&In-hA_R7XhqON=1?WbU2(0b@iv9<8k6h&26nydmj3<h!&i5<%!ERgf48$ zfM`Qur9&thQEGy(_k>AWU3y8<<Cwe;LDqyGXfey<oEVg#zvCv&d8~fqzCvKSEhjK7 z4T-py518~_YV@h>DI*r=B}u{?sFGV)WaO_NvyLLN7#m@vBRtr}39tafnP*mpF2`}8 zxih>z;+W*pOVW(K$k7X<zYj%B3@&p6)bXOaLFxvukwJnCm&b#a%W-QKT?UxGm_bZn z*mdG3@VD?@ZI{5X+Y%V&2P#|EeK#<sg1Rz_n-g=ET)lT$b1*CDsC7L7Ojev1SJWxL zjrxnXDDuu7p;S91uy+sOTsj6=w>a1ly#Utel!F;dr7vC_?d*t79BoQ5Myw^H78LY| z4cyW(#L^*$!=AkaSg|pfxoBtax^1^DO%aOmyL1cZMiD}Y6!u&;5lR(;%^h9KER5|X z-5t%rTp}@k`JMuiB}Q}Da;G<PN+CUa!>*a0oytm_K))7kDI{=U2=)2qEyy#%9nJ)E zY6%p5!DYJbl=nLhy7f22aoDfmU9LNKuH)$*%5cjugkSKJ6F-GV;7{6sxKpF->AVNa zwpYrid0<<v3Yfr0Ho0c-efD^8&=1KPh+!P+nL=L$gBag_HfY%iU|hN|y7i5x#aEk= zrB=9SG76M1Oe1|$U;HBV1GA1;>d$v^W;g*#K%TIJ&fE#dpwXU5CEYjB+u+YyNl2HJ zdWI_m#i}jIvS>Uajw`jRnmo@{R2U3aroE%K9-utN{@Iv_Cp-!?l7v7w;4ue5SMQIc z2EpE`FQ2#1YqSac!VSe4Ky;`j5&_`N#p~aEcqY@F8A#yv-ii+WljuFn%mo(7RylIw z8}KqA<*<-4J1?aGNqp2M%svrKHPMQ+;@|K*z9ZwD*(T+>{jdLO6@oNGQzl1%xEJJs zkf~!`zyi;HC1^Tv1n@f^HyL5nXf|R^VeTP^#OdmNhu1C{TNt*8u_pcd-vPl+d?Xoc zag|N~F-*ZHwdF#}(RL|iM99<#F&2x&1k=cmwAUC$%3joZMSVxg$-bp_`wzzc(|$8X z%s|cSH?^-l5~ehA>+WddhE*QnPGn+Pw5huzKY39TAsu%X#s?Y$g*aQ{a_31KWoh6Y zfnZSQ7>J3ThMRUa31e{RHixts4iE4=Beqf8`1-`qVB+!BVHY8UoF)q~$Cj8+YLn>g z=uxd#Xp;wp`N-h>5W~4LkP#(rP5KJzYSQ=>ZUo&pvuM0sh_G*6LJqBob^8GG_Bge0 zV;bwUbF=GiMi03Rm}MA?`V9&|jgbG*zsN8whJZNd_38<|S4cG`q<W|#l~><hl_<Uu zt}{PbC5jZh%Fg;SY7~Nq=LQ0sJ1HkZiZe-=Y6zkaBP^e6#Ejna90KSJ5;hNI4Nsyq zsx89r7ji8Uat#?mE-k_{YFL<G4ig>*%eB?;5%N`&Lx`p^<PSL!@nsOd-!1POv6}*j zQr+q8Eq~XE4G<&I5Qx$25?vo0i3J)G1{sVx54;H<!j$V)Pxog(jWpZc80wB9Y#V&# zN-w!JXktjW>D^t_rkSzsW?}}nBs>880HRiC>2grLt0Mc9kiDd<akDg7D%A<3n8HH> z#X6(|AQT%>FrTDoPB<g>v(JtURm58P+Ldl>02_&v6VJ7@xNdtq7k5$#0aC=qwETrS zML+vl`;WQ}v+J-g9e53!gC=S2EH*`%%hK^eR~oPx*cf*it<w~AzYaFxze5jc1JxEQ zWUGwXd{7>%qfAR&YQR}0qZ+NEu=>qcu#H9!w#VXLs*_)D%%pn4sWt-@P$xl*AyWQE z`JaupRJbQKV_eTWQ(ipQ{>Mc}5afpYbiQx{&kc7PqG(8zH9CiLe8WPn_YLO&9g!o7 zknWLs=~@}DjEbck7su)-)1o3SrIAcVwbwyu<NTH@mhA8&hx751#S?6VZ}{S&PE<Hq zym<bP6BnF?co$UABV5Q=lq10@=w)i?MQfO4PR9(MsY+FqW3K0ga4MdT&^jSOQ=J6$ z2xV#r4cBnV)Nmn9Rb1wJP89*3c_A!{r=bAa=!tLPPs4<ep(HZv4Rodga556r_*jHV ziGnQK7Mw?-b*PfHBdUU8HDJ)UQmyCi-nMjAZtWmX@^X6x6(}!WJ~_$>YTdUz8m(cJ zd(H6lh8@%EZH~$(To<7VM&DR5F*cDM?~gU6q^vn1>mx$ePHmx(b+9XogskBq-*Ju3 zqZ5m>Iv|76LJo@&yp;7BbaEv}E!{l0dA%h>_2CN6_V&&O6{u2PCqM@$H?GP&JUP}e z(6yr#1ws=#y8GSBX1mwreDMZ$G&b%S@HG%(dnb^SU-9JR)Pga~>_5~w>L3k?DdQ$O zDC&5JsN>#hE30<U5w*Kax#iLUQciii(gE5;jSDS&t1iDQhf~<4tol$VxIYxdrIB55 zsMteNqx`zIHlmxjZ=@knT2Lgq0c&Rx4I_Qn)Ja?0b$m2Mdb-X%*scmMTTW;;*P35T zOoQAFZ@`90*5+GtSxS~KlSSik+V#ir3(ckDda(^CMg1cU$<kOm!WgYxn`{{AN0dTa zQ6FDwUc6x8MY143F4x*Riz!3*-isK;v#qVU9Dpo??0t2kheBnLNN;oK?5*#M8D`K= z51p-9KHKpJd15d*3v+!|1Czo+Lmz`@v~2>5<-Xrh>wWQsebPS;dTOU(FqreLk<xW! zYHyopuIYmLDumP`oBvUNP=8#1Vkbt30822Kvx*JD9-1BtwGikZJA@!N+HQ%f2obSa z_*dArvG_vluE7FwmiGmsSlM<BeN@O?5Hd&9Y+g22`LANMa#fMNlB$tP-$dPo3kdD# zX!K}Lu%T$pDH#YNiDR!a3u!M7&s;Epacn48a8O~e%a%J+l?Wb+5-Ak2+DCJMG^F+* zKZd@dtq?M}wHZs*Ay(Y>s^2LD^XI}Nb?%(+x+%H*UN<~4EQ_FWEIimeGd-AW?_;jR z`SEi{#xL5ta9T%zy>!m$VuWJL+SO|i#A#`JkOJY>(!mhHR_<NsOTdCd9i5}EUl!!9 zOPa6!R3SEAyk;du$V~<HD4~f4;G|={2gaTPqmW8aAdQ_KCk>&-3vQSFqetlWP4s1L zrO+*1ubZ!&T3S1K8mgvNN)=TwKA%xZma4gk=q9siG`4g}&-%C<WA4CGi&IR49n%e5 z2x0W@iUDEB>1}F_K;TW6G_;)i*8VQeT*e2prS0fTh+6s7=HBG$uwi$k3D86eC=0FV zGyps6J1l5OP?8RaiRzIzN63Ze9N6P<@xQ>4^Ol!3s-A!1eeew2uC142p7I-qYKtv# z#`*lLpnivFow`*XNQIJ_i}*hg`u2kOKf0{ZYH`i}HVZns+Z<zba6bgr6?;}~80ec_ zv=3SPS2{d^Av~O&+_>pw*S^Oq98PgeQx?bAqA?sEA}%x+36OA`<@CmM66-&7OU%7u zQz4NLG>jd*HO;sGO`ZdFDJ52O$A*JfZQ1dzYr6+79SMM8^z<e%LKtytOE*CkjlU)| z-XJudQXYIsO?PEYMRLAvlg3K*o5FCFLRizWu8mgbAGM@MCDpaw-N{%-kLk8pjZJRE zZnklZS{QRHMKMnuE_nAG<;iQ`W4LPvB7g(jS-Q_5B>cn;jqywGa}f%x8yq#9PPpEo ztQZoS7g5CPELj{$O_IGmh5><*OS=bO^0zj6*R}cl*tsc-Pyqn&mY1!Kt%_ao77}{P z6?}|ev8g{s^n|SGkDVAtFNMdnn9w_{^bYz4JsR-`w2F!NScG>>M`H*wV_gQ&Bn1TM z!}fH+X7RWgYd6X_m2V`rO~gIhPmF6nsN9qJSPs^Vqu*qPWhedukElBtU1J$Q&4q>V zZo52Fo{_gf$I%T&d(4c-^@g@H$|<cxFjxteMSZIl^#1;&8@BL>xTi(RH<oX#-EE<b zK8!wmx}3Fp`j&fm$nT?-d)Djk-*dV=Q>Q<=0Ug&s+Fbm1aKDz;#)S7%$}|87yHMxo zw5TSLsq=%-h#X3)vjEkB)FdD-eYbhvx_oW<T4iK!MYmR+p+7&-GaC|@8#+vM3%V6t zlZay180~3S_;Kj@s&A<bc-0>&-;>%g0J)(a3z2}$!0cI&L5J&PZ}eqv7P8lmb4ofT zT+OpoiVX?*E1C`0RFj(398D>ktW+V}brl~I2c=$2hqRb1TvNUVEEj}kx0oFbLbD=z zzUp<V7E<vv%fDQ5KDc30>NJ5m0fMZap&VT3$Iss<WM8R`in<)gsIjgFWD`VVb?DNJ zGSNBdohfFq`V?xam??f(f+!?1`WgXaFdO>}^m6oaV!Gn&wJl97fqKF#IxTZoI~c_+ zrq#J3+yime)Pf#0Et7-UKSd0RXl$zA1a3MUwe*`qcwlpqvC;EMc;^sf$;|_J$n0+s zl5aXO0Y8VwRIDpe@hsH%sKUE-9g*e40ahJI`cbu0)h@N^$RZ$J>(g#}eK!^G(WZqR zrfy)HBXejxN*Sl)L#AnBLpR$Owh#nuZ5L3wrqlB}*O-Tj(oHEEe}3L}Wqld_NmJ^d z>^J`WpRSE<qpit{pMrFQF69-mN41C|efqc*Cayji	J?X{~D)rMlKq3ShGi&)vmS z@RTh+U=oSGs0<~Is0>**#6%C;#yqTJ=bj8J;*MVtF^Z@`R7GeC>v4tkkdQr7iPOa5 zLEl6x_aZ3HjKu5AiWFKUvYfXFKeSBU5|C2K#TAeuZd-=gv9O7vBa3MFd<~G6h3zK1 z%R$bce=qP<%}L-Xd$2tByirWc#(v1GuY;yGLj!^GZv@JqMYS%`7n|aqnnj)76-5Rq zE})Hyll3-6ApR*Fk6Y1p106@lRp*;2PuqL;VDu<@)ZUYmS7Sv(T1H}{KL~U)qZP{@ z;X^+ae+JJr0p&~bq+@G!G9|QLAya$Ok}@ID(|txzJbIFGL&K-p3)x8ExA8be25z0T zg$12f7VTx|xX~W9=9UTBKCEPw_PQ9eMA6`~PSC)DC|%pdBg&8&U89-u1J$vklt*Cp z%_e*a{|&z%V%i#QyO40}Og|G6wnlhHjmI*AQHiODZ`H|&s(aB26t1-ZlYrTUXhwbt zwx6FVCMGwMh(o1pri9<;l;7B#a!u}}o1eD3TTE_Z<nVKzYGBBWeQG~<BFIb*+V|a) zY0{a_oD6exL|pf_SD}`c_q@j`f8ZT&4X<r>16}P7a+>d9&g?|eF;}m22N#7Y!(ctR zh%=q@MNc|}(s2K{3o~nUZgDo_WrE1onG0xo8l1O-*W>9t-egQm&VJ^^zu->`9CnEu z6jy8J<5ymC!JZu*Sk#u#P%16AO85-0>NY`^m1iXnTPW$nHLUvTu!4+>>%N;)rS8hH z($8QoXN3bXu6|cRN8p%|5iGxe_zCRn-n+}{XaNdM*v;NN9m3R{xhd=7CUL4Uh@#%{ zn`05z;*N~XK3Og5<ZhY{V{S~}lyg+kmJaL2n+FKBz4Ko4+E{GZAT-+^yXvY0x_2rZ z`<X!^o;cs01#&lbhE`aVFw(gC>L%(?(scFeB;}M?r4+<sI?PTqIuu2U!Ns;GiW17P zEGqB?QM3sdq1K8a2ctI=Vt)pL;T)q7%7tL2GZ<|27WK<7_3du0wp+BjP3s1^Xm=rD z7w20Oug1#;sxxMPzFZ$l@<Eq%AQyB5dsWs)N#IJ`GO7j2g5oZtHoBlW%P6B>y7{YC zUy~UE<dFkUg>7WUK6x(j5QNOch*kc_Y|2zEkGj14XUDnyRW!+i272#%;C`q4yG--j z-{us0(vH`Iwz&4}EE6!HwJY6`1z~D9PcEXmYJC<MG~B(!on2+B#uvy2k>ff*R|ML_ z2n=I-7L0TvVDN;7w3!pH7k1)Y6?KkTe#9(OVGSxP(AMU6I_31Zm`5|R`(;k|fHE-= zI(6rsMTkN?6v<}EwohA>eP%1kW+S0E!T<=mUF6L@p)Xu(pv%x@#Ii{FwdL0u>lWy+ z${VpbfKCd<L9m{?nqzY8-z^v{7Jy-l5Vvg8TsOvnIW`5pc*Zp42q)yfU&ucp<j*Di z$a6+YU1#446(>hZ$$aB0t8p9;&%1c4T3bbJ!4IS~<$o>zD|Q@=VklNsD2FQw;ap9j z@=wY?QRVU|FSRParu-WFkESWbQ}*vKD5S1SjSyG!I6u0pYGT2u(cP>JPN_zj<u2qZ zjZY1PLM!$80%6`uF2!3OF?6<hD-?8@@CbAVaPOdDw0G|;t#3DU=;=BwzzJ*KgfXmL zi}E~bf~^Cio!yk?I@Wcq%~6Vq#ahG@%XJ>|eYK)e(k6rj8y_1P$OC@y>peu&ow%OK zS3Y0F`p+g8^#uaue?)gy4$gK(Xnm5453c?ST{c&A;aWiH(h_t{CUqG(MYh%#xoWie zQ~|*{>vg1`*U9+Rvs_YA^W>kRkKtKuMDkR^vTwu`)v{CxYN$0&DQVF2>713N(5SD= za5dm@n?BWE7&kFCQ_(Q8E_mPq6F^@v8Vb8@`mGTpxR54B4AL`gljf0lG7)A|<9aH+ zY&jpEoEYI~1P$}fg(gMOeSG=SrWBu?0uwTE;Rj&RgLk4|<K5bnu*h2l;_GHbjweI5 z9)As~W|h^j9uEc}S8<|8<nUKerTn4L-;*l82&0VTE)~V9h=%1MgUDdXy7lED+tLx{ zPQV)-=8W)LUmgq-YJ{6hBaXFbQHFcQmTe~EA5Qb2aYA#@9X;Jh5Ar5-|Hh4I@(OsX zVZe-t<RY8XmCJ$gxpO&DD^8);BJ6k;yehk@6=7STYuuJy-HM1;eg-uG%C1Sj8i@?U zD1&kN$Hdou4*n6QwZ+;-?Lwjbft}M6O&V5go(OmGU?f%-zo~?+rSfth&ka><TWtk6 zE<Z<jHAWZpw^eE~JTEe*h&A`D7LC+xd54ec4rk%^1|SsrNN{5L9(%^#J>>S~TpqEz zIx%68u@DL_-hHegwPlfr<uU|+j0}fD%Px#rIKbir&^2yz`i*&D7;yP-I#OMc9xt@< zn1x~5@;D8)CJ-~onk~u1&Z!kagu+8sN3#{-c56{y7#bDN+&Q_MnPYab8})H;_AL<$ zG#Rge)?zmt{^iUV;e?>_2SHDTB*Wv_#(=b$2L;FC^XLiH!rNukG@h+x#Hxh(D{Z1w zdq;|2qJGt%-PaQF+#WX_AdBO4%T`K6Puj7aVicY!idmQ)=v&a1x*$zy_==fEq=zHY zfJjU%f&wh$GH@FjqI^Y@(PHXmmNp-9iXEZl2SP+c!lL{TJ%n713mF-pc}r5Y2!8L@ zKwEI)Z{ZmzYlhY=Jd>2iK>6&#UsG90H1WG(C3#T&-d{OFo6=&}b~xHp{-KLHkZCv^ zb%@)3Q?3$y6TT8jHx--G<&h-6{{bgZ{*ri9`Ae>gh9!Qx1mEC&=>1wy$Yz0>ABy`^ zQgORm^KFG)4reHa8i2c;iQ(=)fTR1k^VMfDXWV)E8O-IHm(~c+pl^#2V2O}?L0=px zU*6wp&?XSBk36bTKrPZJ>QpT{r{3FCpF1TUgJ%-`I~$WWj)znG`__$%&Hk~*gUbeY zHK}urJNpyq)%}C#txlJh%^tEtYkFCF&7r}zal0?loo&vW!-;J7U~^Yr-$38UirSe- z2<X7b>b2*|9In&(=B~v$I<jW<NV^T1AB%_k#LTlnprXrGHK+tfT5Yny5mnQTl^&QV zj+$(&TNtglZL0hmWFpIvL}L~}<7hRp3`WuVH?Jvw2^p5deGl|!;{IP0oX~cGR$H!7 zhw3x5s<C65KQ$i|HJwxIZ2|x{K*+y8#-s-?9?D^qG2jlS<&P3%&IZvx1p?oq0go7o z#m(0=-FCYaz=XG8kk2RO;}kjjuXjb|M?A9W{8jna=8@^k@)aRVo0ix5ge+affNXPA zRz9j2mVC|r*21M~;vgyfSrQ@AlE8ho?#w+C0F1##+dkb)xozBn5JtJ2_=C{R#;ckc zl<z<nBVxx|bPL5fqdH~uy?X<eZm}g8bh7<p+ldYsO)(VMuqE(e_;AM(zm;k?qxY*G zM60ns+4^@mt|Cf3<T&Lmj^qZO_}K}9+Tj;kUX+biq6T8N8~2s)*Iap!<=Xt{j8Eb# zU1b>#hv8AK+g5wnE_uu*FgiwbJ2W{8-*pIo@Xh`GwvMRP8npW79uj9z8a4L!AzSCc zu_1-zkI^)GMANmfK+-cQf{LWF`ZDs7!IBiF<hr({Qx8StV+dz17tV@Z-e5WMwvTYi zxzdCI6Pk2O&%CC!*y$rbM7{WRqErbot{xIp9nDwiW`WJhE#lAkBxNEujiWnk%Sy@l z8Sf5@Gs%Hzp_nuG!xh`nbppTlE?SISYOR```v-?JNN!(IzQu9S#zkErhw;X~SvguI zPP`v(M&Hs5VKI_ow2Fm1n*)|sO06{t;|lVRuvtX>Rp(GJmrUex1G$^BLz(Ol`mOkz zY{;VflUZ>xSH5W|n;ps?%gPV=jCk!CVXaX-BM}Mu&j{C^(K`RM>QmyChoI*x2X9r6 z$y6WHP<dLH{~XoJZ-J-LQLRhH@-*okDQCN$OeLGPk95_5725n%7i@JX;d!mS#A%6j z9he*lga(UwCX*!5-K&H8;L4Q~t@@(2f^kc+cQ_r&nuuC6118Dk2h%K(nmG*i@JNPq zw0D>><@?_%?B^v~r(B(4LKdXR#6rQ!s8#bY=hrQ2`@x_vyOS_%8p-xmndX*>$y{4L z+uXIlq>M7KR}OTvH}+5DbLf)GH#Tq<w7c6U0)f#5!H^d}Zz6>WWhL4((Gcof5Dfar zv<PIL)iw%g#=`Z;NMHu47*(jPu{xldAgUzgQq&x;<EIS|RhJIu;p<q$CpN_i;3d-r zVD7A$j;3|-gEomI;~3$n6B32Sw?qlKgX-L#Vt7WB5zFaKPNbmw;1>Br0Pxz~(jhZ; zY^EsS;b2w(&3Vvu``c2HA|LnQJ=EaFdQLVmRUp73?d<}56-&>;Kcc5Ku3}{^rW$uc zl~I~T{Hm`>pQ|zMn(*L2rL~kCxWRSjZi3tPFKtM5FItgpZyM>yi&_aFr?Y=Nw{qda z6}izF1{Ng*eb{we+x_C&iw$>RVK7w8k7aPq)0g#iXZr`TYe%z`E6(Ei!Z&=Cc7dpe zC9)pE%I#AFXcN@C#=_B4qR727RqA4!94w>;)lVsWm0%@?V&ykioMsuUsOl(6tq2UY z<=R_UPDDCWD48q~%5`UW5I2@)C{CcIB`47s3oJ_CdynmwpByOs<JZLJnvNo8o>eH! z&T?vhxTE{#mpj&-uUnFhkg?T8FEO|o13I4Vn~4O|9d6P^J-z!0wM3Qe#CW2sIfist zur+`wy<iAz*WEb*wr8(eMY+Yv@+lyk8McUBc#K<c`2rgX-8P-<ZuV<%K(yHJYDH~> zsKI3eF#z9Q)OD1>(!k(=a%<`;Q+<y|st$F1`2pDhPcB{BGuyg+;gW@ION$Ah213Z) zx1w#y)L5devpp9GH5klm7XK|><TQ(dQ;Rw#MM09lfzX!z)~O}q5n0ZOG@unrw?jiN zA1lUEX;fIbC6UkSp2xz8m=${33Ke7q1W4xc(PA{!l<mkCdPHgFc_h*xZRFsIe}Zqo zQeiK)X@`W3+_QZ}PafeqE~C;xn#Ou2tG{|(VN#FCmYpk{;X<jlH0~$e5MPmMH`Ra- z%YD@I((%lW{UyG<BS{Tvk9Mcp8={4c2TE4QYL{c%v8*L9an1@oM_V`T8#6lBRL^!= zv6gUQb7`_godnyRyTl?KEk`TB<Ye=2VS;eJV3PJGyLGpDWH#(Dvot|_@@^pA)R-=e z&8^%^K_4CGJ^7F&Pqi)3i71m#lis`$Y%bsAaDx)yCg%hx|5O+D^=HDbo)Yb2EE}NU z&o6y%bWmxfz^GZ<Tp=p1*AD}gNJg%Tr=YF5kMMPiOY7Jp0h1j#*8x@vB}?fr2IteB z_i6P#HQXe>pL>9rfk&(r>CD>hAbrF|!ml1(zIuo|HpMJ7*{ByAazRc%6rl6pFtZ#! zn{lU-S>MaP)z?C;GjyD_7MUh2u4Mijap5||F%Hb#{Fh`y6m#Nmt`QMkxC@?vb2LMX zXc^HGok_Dj-y9Fw9Ec<#j8xvpK!pJQQeM3*q;?%m6<Vh9%`N3;UAR8rmY*s=b&@cK ze;Jj>TlwPV{BiMg$I?-~G+*~GX+o;NiTmM?utVcoNZ`~VrD|<SM?I5CsY3o_DjPqu zOv-gq7BwK9g#mU(iQp{*xok3(0V2!fUVa9Fel7fsOiQXkO5~onPf1jVQ&HihE1W71 zWG{dduTB5pCgIPB2hQDjMyWcoL(<F1NvZOQhBJ!wXsRV6N@*I@JdT`@NVKJbZ!wh! zsu3xIYo*0!)DWRar8!Y?Z8;W+4~|MHOm^&Qo=EVkk1<mU;r&W}`<3v>yVrGhuagZ) zH6kNDn>JKymNY>1jo!3Bo!+082q{_MYnrV!2*15wBGlWKZ45i6L<mJHj*mow`Ex|y z2|F`l=r`lNxm2Waa_7`tvrU~WIb@>pAI@Bp=k-j4oPoyP@yW}Ziz60lXR)^Lo&mV3 zl+WT_T2xDmab{RbIoMffNyaUW2<Vhopmu!uJCGD|BL4|QT80Z}mh>Njn0*`w0fIP# zk2CCDwI010jpxe(+#7_rpH$*r?~8kri@rx)$}F@B2rwu=VKHj+58YP&1)%X?oKb2l zR#7*=WAJM&C6MhABSm{_wke?D>TWT@V{zh}H96TI9#K<JRPlWZ@j_cga(Gy`dHMT) zy7U#Oh2Rh?f2aH$aAfPyMakUb0a)q<=057WF7o6d{MzL@d&NtKr(QuB4Z$mJ18Q4L zC<-t)Vi`Qi`4?0~-*irrGcIPu9YW65OjFXSdHsZ_i6^DL^VM2vErd^(ag)h()QXxA z=TLsG{2dm;1hxEO?msv>O}>9)?rpar8liC8D<C9fe8p8K_}s?RBm-?@`Frpv{7SUV z&7!AFW<oyGLK__LMN$ANOQuP$DyUYH25WQXK?SZ0>Zp#<U+;&Fh@-+*4pW#r1ec#L z|L)kG$fU%feC`wC16|YG4?uN0pP!wzoKJ|=tk`?rWjW<n^q7q<5Ug7{afK7-sg<k6 z1@vu-!j4PW^*4^Kyq+=29TcX7v+^wU1_zOCutFZ>95gsF7{i9aygoDSB5({|XvNCi zTR#K5PWz;`MQA^jH4*q;hNfynt2p?rt%bJy|C0JU<YZ-v5klua!Kp(ivXFV~j`H*5 z#p@40=H;JL;u2c^xx*>r*WI{a)%A=peQx~40U!`qbAq9F!7oJZpDz&Dy`{^N2vq0= zbu%IPPr3^cVXoEwwCWNEtFn!2(;@j!ZHOxj`3y<l_YPO$U$yr(ToBfI-=Jf)wq=C! zUQ0s@$6#IQBII6a0p{X_XY0H<(_!0wnP5J0YMDqr`1+TeOHIUg1z;@F1pgc+jXk!N zO-5|pGNX}{L9p}6$4R4?B2T>1!Nf>KqNb(WkyvZ3ScB&mdxE6AM)J5{%xf_J{OrA- z_`sdaLDtm|g)+BY-r1)5%!yvnYCbJiP*w@dmQUrZYE(&BL_d&SUBIe_1t*{irO;g* zs@}x~jJydXj;&0tr;<nv9(Abx(8I8PRwp`eqaij{x=6m3ntkLWQ;SW4b@#%KmSwI( z$o~DY9WmOmvG^t|))`T$F@?%MdT)e!v(s;WgF%qR?e?BaFB$C92_rh&x%I~DOmH~< z8lbS3ksYYJyX)_|AW{s?0(pWQDV5+>vaVjkMcRzeaOGr+2^Cu<{KZg(dCi#bKq?np zML{ci`#ZOMtw(bHJ2?uuf=f7;{&!)cL)qK@7ClI%HtUP6sDJD{gXoVx33y3=j1!^u z5wvPGr&7rSQ;n_Y!8Zm7`tlY)nCY%-jTY>GwF{sNRo9}06dd>d4Qm^cy#{gh9oz6t z``d)_?CW`7$=(}B*P^v6Z1SBVqE;Z;6g?VZhgn4R|F6MgIHPS+tK~bltceRf<7&oO z<NB&Og8W;Vi&m5m;JOabLuJkLOeLv9Why!{EP6gFWkt2dhKDvf*H4ba*s`lFLP8(? zd?MA)iR*M0uLtfBV`lyM_~h)X88ukocBeJb81yhfix;7X9qXU}Inzv-?T(HPTWEbB zls|Xm@O9L?_dZBxMl8Y^b+?{_N>f)c;&6TceljNXHnPP#?rttj8k{nFDGOPS&JlY3 z>pW_5m|4w5QFJ>3j{b1{8(^ppVXY32wTiW}W&MH%fyYQ~HMXQMQ9<;06%kzJPpg&N zGh^V-!G~Rp#0sx$HX<47A=@Cv@f*j}dw0Hr3SlT(oL#aK3rJqkJ-E-L`fIc63JAte zL%_LycsM`P-GSb{8Wr*gzMUDd8K-=F{B>)(+t*WZhkLw--v;8Ito+ePqRS<W>dU;= z5W3?vr)qCf@5Y;u*BT3>MH#$p8#)L<waZ0B{NZ1PU$I8ukZTNR@Zb0p*<qn;<uy@t zD^T?_)Om9GUv@X%>1<wXT46gm($X}NXzNG>+eZOxcf%qU8t7~psGKWdfPZ~qKjhDo zNqyZ>6EJH^rh453b7p#TEo(2aQ7YW6zE2OfXmz^AwG~3w=7a<A!hQ*UQF?AN_zSo! z?%C`31?HUY%lvuwS!&mH0>g9gE-j%}0P-nYYNztx=l$ND_Xju{Bhm~jwUyRHjb=jS zywC@pvvoXo6*qMkZXvpD&AsDIXu(a$nwzzB47YR3;&WGF-7;avo64WN37L;_=a)oO z24%u`wb;Ked`TZ-C3%v?82RP=IU(aFA>(60#-uhZ*=#9Q10gwuq!n36&X=`Rl8%U< zE``QpM0p+Ad{vdw$R^v6q5CZ29EtaA{R<7*7_pmfe(CGWf55OZ%JJN<Zn*^!Y=xL$ zfqWNn3&Vg8@M_P7mtHGjM%P>eL5HDBN~M9tm*DcPVT<DDMn^B^RtT=S265e{=oc7i zO7cTO@?~PiFfJq??eJH|R5NI;CBYF*B(FRPu|nbEYR08FkJNH?se*n~1|HMh0Ev}< zeCXydwJZ`@w;I_SQw)bgY{Bje#<||s_Qs(wy*Og&U=0sHd1V7No5oi?E7I`=6OZ+T zFmX(ddBZhr!wDQ_W4p%-HXz;Uzp$g@EiuzuJu<uqV{S(5+;s!K4hNME9V&V<*qN-g ze<=@*RcRfSe@Z#!<P<7?jj#c=cO{7G@Jq2x4i90YcmO3A^@JH0kBofklCQ_WB-A4i zXg)Z3snq5D9nOs*ec6@2CJCCL#A*1`;b9957~ocFqVG~slr!o0<8<kPFvVWDdw(e( zmkKSov3+i}Ae%0`!bV6ZT(^*Ucw}|JuItl9ZJW@kuRU3}VyXTK9qLj($f}W2SE}Yk z8nee_Rp@P7ezkUK8!=7Nwsh^UwzTPB*de`l_G44oSlh7{KKJ^w?(%;ZH@(HZhY}nC zk8waeaj183z{b&aqk9SgOZOHXO_aBsg#oBTqC?xE_A92Hnk8pB!kJGus8wgJA^QIY z{tClxk+$*=uiYO2-HQ17C$q;gdWbMnqV((OWoB&dZD$PzdfGBA4s3et0?&;52pEBd z7iR-8Ov64*Xm0J<pn-&6*C+hCPm1xKeW-;<78dYY0uZ@~p%^Dh#o+;==0L^SiTX^- z%49(4%_6?{H;+Lfhi>|u0Xi`EyaTg`^J&LPPi#+afkPKyqyu;M@3E{cJ6&v;+zAwK zUm5_@SUP@F5P;h{BRKf-)U^49^5ur~Qa|$)!3J|&M+XOe>8k*a`@}~ug{D0#BCf*| z-ABg~9tmWZ-y9+q<Dsh;TCq9}<?fk0RXd?VN)08r+6ttMW-T#E4S;Zo`%y*p)t~x^ zSzM)2%<rc{x8~pN>vQ0|z_zQTmP6+@Z-AcB_*eod^&gNgi@Ga_F*780_uWe!N~keo zJeVeq&c(62cl#j9uR<F@sER)Kah-xA7cYh8c-JLem-QlXo}s}h>WtkG)S01s_pD49 zRst`3WzaNif|D!vHie}15+2*5I3wn7=ZW@x?$()P#e)^~RZC_k|M^o8H3RWE#NsFb zIVqn2CpIvs*5V7fHg*OVu7IkUTq1t@`a|}GcCYPBpC^=z4v)_?<yP&=W(g716<}$> zH6nrqbwOe{X&NoX;f8lu&bxMPVNI<kIdj`=^oEt2^Q#Vtn*_E_2F|;d2GW-|(#A`t zqq%%|!@}{1fdOXMgLK!zh2V0zJVFWl*Vs+t2qDXJ0G91O*{5^iX=;QIt_Us*PVSGh z-&DNX4=Jzq9D&jH4Lxopvg}WC6+o2<eU$>B5*=lHi0W~u%;#$^?T~sQ8TBoIyg@CI z_eSS|w_5q4Lkk({=P$KFYg-(r;j)z-i;Jx(^csQC*PgBbal~=1Z%ysnFI0H?z=09x zJ@4QI{hY*fg3-RcslYj}i(wpu^O*<K;Rfv3#H4roV1qNTv+bhdvhzaL-tmC+)aG&U zbZ_rC5XzbNtDg~SV-R1q&=AM;JKurJwt2a1aE%=QHlGNH9&@eMu2z>;42I?SmzO=H zP?rr+Sc8)~PBm-ipbY-0jmS0jNNqtbCzr4NK!}*uK5)Z$YV~CeuG{!GThP#^!h?=; z-^13LE5w<GE7n*K-#7R74zdbHB8Y>G+kmW)p1bCl<&?i)Tw-v?O6M-Qgp+lygZ1!v z%fuL5oIPv-lKlpo+olTry=_z5O#DyG%jxj|b^|)Y$nbbGh=!6McU&jc421gg+W>q> z=v+`U`0*YOsx3n3RM!TSF|5x@B2ES8$<&cLU6r;<Sy}bR$I~k>YjB+OE4Ep0eZbfB zO7XqnN~x*ipmZ@2!&G;=LRVZSRQ%6k7s%OgSLnLyIe|mO!$#=5WyOoygpSy8m4<D- zeM&=TF2}r{R19plKO&Xu?FYvlj0ok_&XR8le<r1Q!UEcrT|7RcO8qUg;Z4MbWr4ul z*P&B}4XJ^^vWa9=+2RjaD6I0Ei2Ho8avvQ~Wz9GqWPZe4+-}l^qg>ayh}nCvaqhk7 zk4cWrxo?`1e@M~uGOoNp@EyJeD+Je}N6ara$hh+C>cxGnX%ETh_nBy>Rmz|L8jX6w zl#I;P)laQ#e5fFc$W>yL>@F4cgR@(sgalX29Es(-^Lt+rlwV38x%$0RUgL&?*T|2x zJx$55+rH2MFcx*P0_$8P4&CR*HjXW7>l}sQAPOv*zEW&fJa_fFFfrnH>{rKQb02;0 z)dx35<5QIn!EO<E=&+NvxC27sX5w(gzRuBw#m>=1nubrp;N>Fvdt|XxAHQhzu^NTq zK5KnIE$6!6$5iTjUu-@uCrU~ar+BcUkCy6){Uv{RID5QiBQ9fCVN5W@kdEyzLYN_F zOfSTgJ5duld!w;jZUW4RYhb*nu~C*q;l@fq(RcMg*r*jVUIfH9coDp{P$;y94TOT0 z*}NnsCKH_q$6UvRSj;rNU^AFbAOff}8kHq2&-2S|!VvacqgKi|xkeNZdO_b`StCB( zZ$1m%*~8h3?>UyEjM3b&HxT<pU{L}@Scnk>#I-f5_<Ya62Q)_uYEco#PiuimJCzi@ zB@}R(MkV>KO>8EsbY6;s8TGIFxzZ+xb2x5du*#o|iuIQ1@-K`22eHu_w8kK!j~}H5 zLPt?!`3Lg9@<&m+{C)YKhEJA2py@vtpZZ`V9)?bPAj;1@3e$6sp8lxXW3)OgZSjn_ zmeo3?mhFXxL@XL`PS+BNgLr626Qnd6<Syo%#knGD#xtdg0M|>~RetKeOXhw~|D*h8 ziec5wk<R7@&e1Kwi(~dJx891(TdHyi!*-#G(Nzy!PRm~hWYf8S!5CU!5$$YAavg3f zz9eS7@^28T$D_t0J0l*g0*ic=;dMGFXwv6+odQe|&Y645@9KD78gvRaXS~Y4Eio>r za&j_S*~=n6qKs$usZ}4_;^^Zp^2*E5$2{bgmj=Wac!N0nmb`wSETBP+BWh?3lI>?R zfciU!Ye#ZSsk`@6wTB!I1j=uy-F)tX>QVXgJjs2G@RWK&Sj!2Fk}>%deEL)V;`1Im z?EoDT55BkV!7n6&1}DC7;skWS<JzFMSn_&@TZ}5FaZt{UYsn(3nGPk{C|XGz%^06g zH8~`6@=MQe)V19^Z+{iBO-|G2UVm(Vjsj)nAMReQoYaCDVT@tJ2@Z7KJv<6@I3W|_ zl|T2em^U(=@$|7*Qml&-oE+S8qhl32y3Cl)!7^xcZ0J2OwP<m(0InwaLcvI0BhXv5 zd}47CVPE>_;QSJmcwTLpiuqKj7t#Xf<PUjCDpMMfn*8X%IYNBhBC(#(#`PO5=hLxW z@plMczWn;3<Y@{$+wke}&eHA3bSz71^{vY;Lzd1cY8Z;`1DA29;ZPD>(_552O|$1y z4-788523Ub(2&yZUZLF*$$LkrqE%exfma(l{N$fP!J50N*50@z%?`_qpFAp$IICr` z6cyvzkUZ2N_bC#%`x8X2MM807%iVY1E%bT6Wl0|^*D)i##FD`sqdDRfgc|mVxrPG` z=%DM~|K`^`8E`2otZ#aaT3oY?^0yu5`0;FUwQ%5<CPp33tfq*Q*EFc<utu8|ZENjx zKZ4Wrki4{0>dCJr9?d9~qA#ov%0*97>gd6Xbx-FGG?Ze84jizYpG7xB0A1jSouOw^ z4fQO^oTT2j&bdhUTpbgX91-<pc}{qJI1-ZH^*^6cOO%_E?6jJ{DQun4G#qjj$C~-! z@fzzp4qle1bo?OtY9-?BQ0USbc6brW)^*qY36d_7F>KSJ7;yrDxfAGLe~uO|d?~7b zQb21IPl`o|Cg-}sruqxEDkw^kbb7L$od1>z=Ud#c2n-pnAAm;A@a;`a0Pv^luDi4y zxzOsBe@~fX%HT4(w_(Z+l=JAN3m1;~tM*rk=Ut~X%ZpytoRZp!Ue@};+R@5-J>!2# z&$(~<EA_}-`GOk%zG~9yB$1jIgd~}?)LvT4zob2?$?_L*DDSTdGkOL@0&WG7xgXX9 zQX|A}(v03H_zVN0E{Yjd>&VZst7NIYi($C73vqa)mQu@~C5y}OKa5RdQMa^4cc;2| zbn#{rQ29gU52|g4vuG`PW8YL)E)?xpXtCjThEjuTz}~dDA>KKrqgBHu0)HbS+P8F2 zmXT$9#to!tNO*Z&=y~*r+UXFG(Jty@mAD}1M?VLfKm|I`I3cEEG+Jn8x+z6J@%N@- zHO<UCrgMulAro1`sn>zApp~+b29+`Q%fi!Ym1_zu(fNpRC_YagX4Uv$4`>lTG3uzL zTjajQSItBam!0-X!fnDB#aCR6ej6xvdLH@)JgHl}{0}et-Gd#7n~eX*ZwwEEW&G+# za~CIcBWBb|U}y!&>9x3$KzSDONk}~x&u`ot3DxbPLN1ccuiWLK=dowA!H1<h)N}~O z-v!DDH7Q(q1$@Nfs>bI;c;P~{Ny%doW}<I06EKJ0J@5M;+H=~+HCJHFHKcr;;mSUC zxmjKMHJFoEO21|~vDdFB9CZE`Y9N1q*w+OIIHN_h)!JUsuD4DP#O--MylxMr>}p&> zEH$XTjmtNas>P`ht!{^a!dv+6;WOO{U99VI*KDLD7R%<Nk%;>_m(k4hk)s#t+-Y3C z9|c^u{OkS88y&7+c=X70hH@vpd|&z3j)MaGmZ$%<_WO7y7mGwZXa-JFR>(>xW3gDK zB^+4H+?MGhM~*n0HZMO%X2LzNyjk2voSJS?Cl5HTbI$VS^8LVR$_!aeNg=2BsV8dq z4o!zE1RJtR%ZeJ#Hb?yNqh5c`<0t9eCRc~<5O;1}dF1FJlRJlx969W8<ARF(#rG|^ z0{y#_U8PRz;_nedh;#U`5NGs#V^^H?)Vyq0&8})!b+E^SC*dq7ktis4%*;R6uxig# zcRzwYQtaQn4Skze9$g-(Jd_(pgox$q(XL|ewyl2dl%ELC`7xCz%&F|y619i4ctoly zYEP@9n#gtek|LUv9M3{%3=IQvJc`Qy2JEi8Fw?n%;GQ?W@g6`bGLOpdEq{n1j0}qc zT7c<;4+66cae_bm*0(;)5w4S=UC3a`79FcR3u!e9ho5*VGEaYDGLE|0a}c0mA%|tm zKUqM{@LhMAuglD|#?-?YT8lO#tM0){BnA&YXgrYL*yeM3^Y9G%N3Bz>2@duoWc{N^ z-Fid)risCUIwr5*;8BG(mMOq90TUz34s<Mt>V3;*((Rowv70+!0kq0fy(`u<7uBh` zLmpf$LPEE=D3xiBCnLckm_rK!5pYD?ZR#x+!5Efb?Q_cC4p8pcI#&^=pTb*ViP~$D z@oTLXE{_k${&q5vsG4BRS4AvYBKwIc#4$#0>5h2ZMuy$^(#gd{t^SC}@YuFS=+SLx z{5fuR954pH(x+pv^$-r;c;k;-v1yX<Q0s4xu5_@H<|j&;ej!b$Zr7y0Ph)5tDoM8M z`AdF`KUaCJ@&)4g+r|W0AAkbGHUqMF;#i}UGakRA<RXkYntH;HNfDftM}ITe#W@86 zVByxE9KR`uLqb}t_kCr+0LN*@KW_v-()w+93}nn<y{OYg{cTLns)Vr;Y4is~0KRVZ zuohsIf7FFaAc9tolty(SSzgUm8Qc8OOHjDEZ6I-fz<J9%gNSdq*g?pgDP_`;{OxaX z0{6a&pMP(d!ht|}I$RuH(AdNud`lqk;6r@WL+vg6p$7wheCeBQ#2wQ>2qP3Zx?WEu z^@(#D1B@cI(GQs~+Y{d)9nTfLt6QTO>9%EnyO0E1`*kpsw<ffGRA}3+v|T(LsKr=M z4zc<iIq|PP&Z<IJilZ)oDJi0EeL%M2Jc#d`s_M}2edp;9+*{GPrKL1&0+`dKT%*$3 zxhp>%Pju(TN^Rja<$$ZSg$|`H=u)BMdlD<+dv4N&-l}IJ-EBND?uEkMctvq!yiQz6 z7FPGJa2QW=p|9>peSMEew7YX*tFRj@<w|2m+!6Z5qys-J<*h8A&2K>;f?=s<rShVx zWUWxtcm4g0KjP~4Bu4}p&4sI1ZM-FuBC2x0Y;Hb0c6?=)p*zKOYE5?bEn~ptapIx` zMN#+Z=KhzvfZFmM1B(XR+u2vX5O9{G$nxGywrx#o5B<{TUH5&r_c*zp1x5XR?{nSv zyt2#c?zXyK`JQ^6irR9uj_fENjGTf+rO<4C3yHsVHyW>PFcEpxvb9b4wd)Z-o0PZ; z>nua5)O!7j*_UUNvSFFx6u5u0MXAK^6A1I=yO(oN`+h4r!PY=csm}hz1BD*`<u5qS z(_b~0uJttv1m5>Py?t~+JAdSTPM}U9q>U<lzN0M`wjt=-2H~v;aVrZP6)8n88W@PF z?K1UMQE2n?+2&Nflqj1KLV?}6;$o~*goTi{4hRuKVe#Q~(xR#&+)LM3;=mf}+7<<5 z!~%~$VU}`ZIzs0hZ~~u1h<0XDZIO?C&~-oX+CH~?oR&kbD+m_BrWNMnk2`9$;#;C8 zrL~0CAxGtg;F&nOHHvPl@`ma&Hf&|E6u3iZ`S*%@YvU^S7Ja6vI~lVg(uMM3fG9(u zd1ftfC9#$=z8bnS@pgm8!}(k^z@c6y#jtNnTNO{Co;o|voDEl&(Cgf=jY0&NqBTY= zLAGMV{*IDO*|=`RoyLIhu9{<39~jK7F<z_UUB^lJ56MmgxRthIt)V!LYZ?|c{Bbe| zql!zjUU-x%Mmy7<oU;+%(o3$4nzfZ;gGv^p#s9iXaNO3ZVTh!sWxyCio)U~*hUZQI zMriq8d$H(Qgx>QSBDF=GfDm<chRZ)H{}06es!PhxuAtH={Pm3zm9dT%PtG6Xs+Ld> z@mDklNR4oWgmYK-)gMEVVnem6;oZNeYI^?Cv~Dv5(aXMcWMd;@u1-)AHDgMNn05Yy zpynXPh@+fq+iv-vPiQ(<#qTZu>>y@n#5AahPy!`^5Ipx;J;VUQ?=1g#Gq9zW#}G;_ zx@ff1Lriz+-S;9IqHy1xa4?9`?e}p#rt>%7Y8hOX+jz&YbpLF6=NkyMDJy?HVo*R0 zJMZiQs^<3P8{lDlm7Gtj6@a0Rd~-nU^{sHj6vroDb6Y4;Y@nJ`#pMJtM*Q|nL>sA5 z#U8eFWA2+kF#&FaA#~7f1Ih*(zc)#oxeo@QSGZVDyT~GpKpQnVo_hwuV4(lXmjCco zWT21h_BVidj9~hC1`anFeDc~c6WCWRL-|~fxdfwUFtbdGzY%ijQ_lJ85v|iIA!ZHZ zLaY8<OG@pB2>bP?L=;E9=u&cC(}-3SRYbUG9YIcja8S1#jDF+GXA2}d2<IY-k*X>K z3v@>+c{9>3qXvYCP>GueIVh?FdY7$R3_c;HWTtMTuVYE)`^F;`bsn;Hsp8;)PM~f` zKxbME9XgDW^ddA(_)O1f5f!6tk9kJLi>N0q`Gm7m31;y#^3XO_C|0^1)-yvtx+6|7 zjGf9ZL%I{hr;*Um#|+D-SmDUT@a!IoUU3@5%sPdHrq$^XQaW@;Z8XoZSKeL4t><S? zI{Q>OgstJje`;`=CRTiXbMex%W}CqmqN&v*hfTu{3kKZyzO&((Nqb-6ne0(KlXLd2 zGW}h|g99~Q33p*|pi(Whmo-J=r?G^x>`XLa<=WMDQs-I)_l8Ge8=drPZV|8ckYmwI zBo{`|W9|+645E%VCb@1G`fv5B1S0p`_^biZuHeRco{6GYY}{BJ3G7{vMtub1Y#42D zoh1M4XNhDUKia#cFV02|`Mjdb#w^ccU?*1HB$-7ld}x8w(sxPmll43k#jp7MCoIG{ zGF+V-h-w<D@uznR|6*ews&L80l;gB|EY0(ZDz7oEFsfCyzu2Jk<dtX7Rn-18ur}G( zuMc-c!RhGmiAFXD2;Q`0w!w10GweCsG_bpOXXgOlyvY#YZ3%ZoLy>i>Bwgvi!O-q? z&wkCe=Ml06_2$#vhX*Lp!(%suII~FT=H)q$6X?CWy^%X^L=cW#9e?G^LVx!&eFp~- z7>?_>@V&=D^k2P>fulUf^1bjh{Ijq``$c<M*A<@kS)!+JEW&CC@kw^|JMd*oQS(}L zqAt&KTcnmpQB4H0>cUnI6O=m?%D*lD{@5MJ#?*IoY!U!{_tcU#oKrw_V1!_zyP2UF zi%gY<+FNyOJ75eqwS|I{Yht5?7}xF5QkPR~FD{jt*wIsR%MsUc#WTXX+H+*i?QLeE z_2*47hJo%o0Lao|>YRe(4Ye01vn?#Nxj(DZsURF!k#*dI7eLlXbhpQIxjKXz6f0?c z_g~(7H1xj-qV1eWw~JEccG(0Y8(GKhEdLg$^}mJ@JS(>)VGj!@&1Ia>8w6B0P~!c0 z`CkiC9ZGH5B?6_r3mdJ9{TB+K6jtE#^Z7!Rs`I}Ivkh+gsoQq!b>z|<cf8^6CM@SW zBc8)89Xoq>-1b!3{a?fmJ<i;YroF2gFm-ri`(1sELhoI&-#L+0dz(7UxkLXOFf3>n z3k>&+rKIgf6)IOPlvi()B$R$M0sZfR5I*cQe)<*L_c}zErn~g-3c`TH9n74)+i&|+ zqceBM|00HuF-Kw;aikT$yN46#yQ@3F9f}(yhR)p9zZyea;gvq6byTweF6in^GT~X# zY-_~>843*-YTLc)_6zxOQ_f@}8}1U}df}lg5%H%Hc*rO})mRv6Fg<d6@%<Jd<|7|m zFltcS?(HvhZAHu_w0Zi#7?0XEMSvQANXox^tF@#3p5<Gv>hTyFh2SQgFskdDHs5^Q zpeD199EDJ<;Ld%6lR@-cq5DR!FV$$nt>_{+j@Hvp)@w5))>x;7HmjE{9LcM!bOWN^ z2WqvfQnb~j*sl;>WQ)l8he7o!@2psp6)VU?aesH;K>i@w`Hm&9bU7tDbC!m}F#{bv zUrzEK`yd(XhzfoCV@cH3wpr(<`^alB!cgqpJT~@?M-0|p1mr-fW48I;dnq?q;I592 zp%@zOH5p|L?c7L=W9PPc#^Jt+aJbEZPWRg7KmAoG)^X#F=+I^-wrLL>*KoyS$tu>_ z9--szO{-QejN{6fEIf@KT&=3QBz&S5RD#?+ppxp<#$I3X(vW2MwW_LwXe?H#N=1s@ zXsupV8jZZ-kWR=ye8Qj|O{P%a&K1_=Tbavr_m#P&1$5~1pLMLSJ>3{}%>ZpkOipnE z3%869TWJUX;j^Ut%}g;qqi4FWH7vO24aA%p(78~2_x6<elHDd3HGJNMDB}f14ck+p z77s!BN5uC{7B+bL)N%kye~zB(NWZpuT@Jw&=sI{U@*-vdd)L-*$!N<3XLzT;WyjX( z)!kNwJD~Ik`E&J(Nv&?}g6NsSP!q=q$g18S7GXO@g-|}ukZ2n`HnP#RU)_BTNk{fF zq6Y!S7WEGAu?eYc@j7@qAOgs~UVivu$6()ntrG!s@nx74il4ZHPr<k0sJk>a2F@a+ z=_Ekk`fw!GWe}IBJzf$FI28?DKzZZM!$UUu&=TGF)h~ud5IK4j?Oy$N=%8A|x(1#> z*Jv5xwV5hcQpF(F2Q5w}`mZ&dVEfqC3yjdn;Ol02h*74uwC}q*pIv@st9gxO@TOHg zD-9IvzsIE^zz`g3-)965tPZK?y;eQ1MdmH9#LMe)ag2k4x$b?DCC9LgRQABF=Wm*5 zqr}!jZs*I_Hs$h78}G;ybkML+s5^ULVfU1&8xUfN75f5|dKa&fYsdPD4fqE5jF!@R zwPV`PCL6~Qfl0*3)B>PvCo=T?h#PdxUc}LA{|(+Fnox&P{ZdUgm~LDw?t(CqufNuI znMl(@(;8!Bmqv&u-|EhHX`F|7^)1{(r~F#}0*D6ZR&I0V-%bv^;Li+=V}qaeb2cMh zvzr3#=#fL`Z{NCl<+3HE!LE*Mv*&6lNLli|(zT_(dNlp2MMG*TlJjHj{)%*~jK$Yp z<}N;?T#k+Ne7{(2#m&Fn@K7}f@4tPcGCM1vcX}JA&VNHoq9u3Zmf6i)X13m#Yx&^l znnmcjOP;)lMaZka>B2AH_WEx$+jAdXw*VZnqML;b6A3w)>$1ef#i4$CZ1HGA<BsK9 z`t(p(UO@z0hizNgHk67v3rl*}V)#rXbLV->S8rXn<z?BXrtHhMtlRqBt(}QTdF7=a zxd2&TdVOQy-9P@&@xBMgHtDF1Mr{+Z_X?F?-cuM%P}gqEb@hlbkR`&1ZCMrr#Ms30 zq4s3A%^i!l>tt(11L$L7JuD$t(dXYNsPbsk0*wVv0I>{z=z}t6`a9l^2ose^5uzAA z?61(j<CZqL(%pfQ9Tc>>`$nq04$07JWn+?>6nWz2=$)4F_IF^%5%<<X-jSh!09vc= zNq}~gf7n4;W$h4s3|*{6tM>~FL+(qeM63uoWAnGaLrVF<4`G7+8(thJf2fkr7<>uq z@2DiSYH!u?<ziJy2hm-Ir7K-Q7xxsB3jOy5m@gU-bz^Zi?ZjfdTj(2<eCqjiDNSh` zVMyaFOx+Ot+e(Kr_k8g(y`xU>Q!eEp_|r<uaSxZjRNiBIb$1F^^I8V|zyZ=?ez;N- zQ!1D0!G3fJ>O9|N)FI`MmoHczg1@D%*I&M={H4RLV-Ylq-nlZQp*qH*U=eEQRHov| z<it}5iQ=axF&_0tCEF2BXFHyW`FSRCqs%HQa!6he6N-Dz6;=YOP{}vPA^HB}a|1U{ zO>#@;=%$+k5yPUW;r3VB6qSEm{ywz~4eIV8c}a-~*We8IX&ZtzuHMLh(jD{9iPsOq zcfWV~o!bHZoAKM<fNH}vMv{<|Xy|k{(y7FoQ#nUU*PjbHCl&T)jb|T?0H}7mIRIAR z=9>`LEe@HOAp|Oazx-oFZ4K&v8xuN40w%zzzYh-y?<^z?TK$cl|L*thTO|}c>3)y~ zRQ}+7zx_>}W~#NifX>M1Is?J!R05aUfp;C8E4V66T2ZbPWI}2syOQQDUSX{>>2LWr z4~2#x2g2UQ2hcd@x_(1?Sr$>sZoCc?m*DGeWP~`s{nL-pk6&^Xg3oaFxvq<bz#!D% zU;Y#Tz^A^<xlD|Vt}pKsu0#3Var)uMgiie;oBDClZx+<@5Q?@iq^OeNxRfXAOA}RQ zzCN$Tu$s-(#*RUB$v#8~B5W_Z?^rtmAU7O~CVNdx=+)O;b2TN{?Crh!dIA7}&~fxi zgmQ?00E;3b{sAGox1pu$U(0oX9pZlgI)Ck*X!|ZgK;9UscJUni9G+4<1XtO|+B6HF zoO8BfF9+p}IMgb>!oLPFOKg~V-xyd<N5H0d<qAw=jg8FBb|Qo@dI<_P$8~thBFu^` z-u{o}=YzHz(eZWH=$P1nNNj8d3rNw}*OR`r?mO`l9D*;a_px^as%2Ahu|(RR2gXH5 zZ>vte)%to9t|V9*$D+V+#d-3l4YB!GEB4?|G4u#S1ax@Pz%4@$Znq3#QN;UiJ<t@x z#AtmT7#OqihFYP_z}91(0&r$qCl`XJ2xA0`1A>k|9W=7{M+{tEZ%|}yJl7$?k=$#x zAPN+pTr9MAt;^8g*%7}`{xzFrAq~~FU%@9p=r6b3ztm#?a#K~SG;e`U+^sm#eZn(O z`?*2unO)J^k&5UmT9@)rL%v@EZK{FPbG&Lt5$65?C?h6e6n@|`omZG>I8|YKJy!Xg z+h{Tq{R>ksx-nU~Rea@W(x;?p8r1lRDXm}T*Gm8Q`4Qxb1Bo}0`SX7{3Bo6JV5mhd zKZ;MNU4`pjIO9RN2hb~S28;-%q;koumo~1o{r4FT&_KNIj5hMZX_sJK2&(5C0{uE% zaHh0N<(ZJ}pRgGq)6a`8lz9gJs5J-%_byS>Ysb5bfqCAWT7`+9ythAGWvciAmAXBt ze$ahrAXryI9G!L@?g!#9-4Q7O5a`qj)@1;g*teo<aPg8w7i=boS-J>;bPU4v3x_&Z zc?N2nzX-N_@+J5$WCaZT9QqevPDtbqK;j7${bKH_m3tB`J^4lbVQz+XXZh{~TAOdr zc;R&U57kTQOx@{vT$0)%ZMVQ>cA}@<#n?|k_5$e;(El<pJ9+fvqzOT*mNWsb{Hu}q z7B|B4ITcW-mQ!KwjV~S>&^A`~X{H1=f?tveVcF-#;mj<6(g>FO6qTlmC12U6sC-V9 z>JD8ub^j_<my%1-0@&Oq1isX8P<pW2q{PO^4D#mRI8OP8Lp>oI<+8tX(65_UXI-0- z<2No?d7M^w0zwE<PU}v8A2A%cdo$y>PJh3pW8lqsr(TB!^<KBWX1ks>5Iv1H5d3dc z*yvQUYDuZ7&;&V(L-1Qn{-XSFkOf4nnlZ|JMgcwkvayxN37KnsVevs*P`)0%3jZZ$ zLT?k&Ke)THrjb9xnug>&RJc8=?bU*)bZD?XTW}pqV^HN6XacdaS-+nz;ztE)*>BZs zE1Kmz5<B^dx?7EmSfNN((ymb~s2_hg_Bv!@>esRT2X7*p$xo=1y|g#DB-1?roG?sK zDbr>56xB7Gh--FJv6}{6(mrKGOcV+gfO6f*=@A1(db0V<VjU;Y?v>pGRsc1oS4I2t zEv@R@aJt{KGO^4|(F+=33yGh(pt0Y|g%p0tC4-ADqjDkTw@eH;b~u!pY+@`v*&A(a zKo~FrbSp-&BufMvCz=_LP4))75CTAU7j;-`?+&0A*SCgxV~85zU}{n&*<Er@17m2( zQqp6_f~l$IxHz}EH{}4=dsD@(NOuEJOXpf$eKu%s7xnqj9;><nQyCS=$ty7bUsULJ z0|+c-lu|Jw{+lTma7?5hdtLeWnEv|zQI-CN|CV77v#YOB>pqu>n!SXRz@K;gU$0am z7!dvN82+i2Qn^1@$^FKo-5rH&Q&1zd#2?~cj8tMdh3WvSRZ=dp$|s-achJg!BmPwg z6!5TNS!mT~{=^ag6Bv$8<~~DBox|AN6D}+dsBDb>C(!}JLS}M7OD_LA4XK~u@^AkO z4E$4vTMVUE?ZxNp0cPnIdRF=~6n}m0rAf|{{G;mc1Av~v#4#8;dKf}BmA^peieH$v zR;RPv7ul<=kvcE#>uzmHIvSa$ekeWbI4k`0tetf%kc#_Jneh!s637L*V-VnT{{@z$ zfJ|U+vboPDq?)eqf}Zm{ScW*pQg@iuZG(uS9IOy6|9ko05H}GDp(Ym~Efi(s6aOGo zRb&umI0QfQ$Qg2cJ~Ur41c#3zYTESRVT$U#x}eGz+!E4jK4_i$CMG2V@fUDPl?PgL z;287+!y(}1AN=`@E-74R85WU_T+rcwOaxDfsyMSNS}&icbu0O-datu4O5AshWAT&Z zRz_#I&iAa!VpZK@7on=?rZe#gWXe3C6$g~-N*ex7<qzu=h*fbwDR0_&!wG7eb-6FQ zv_nF^O+#^jTEbpsd7_aDLq!NyrE9lV__~U$i~ibdnDFWVWp4DVGd896%>J=)i`y<I z-t4jR4@Mnl)SWaw{>8}L7hZg7%zrW+H}J0IF~G5wk)>M#+!gnwu??jSrgVJ~puo`s zb9?{FJfStLGHzuBl~u{w3ZjakA0AR>TS2M9#&j_D*JJglGwMz7kAEpbxZ`kZd~E-W zLx?l;)u_v8fP`j_p~g{X?oBTmEc9jOfC3~&)x85-mX5T<FvOO>E8se2Y}3$2!zr(Q zabU^a_2qwtuZVHATVxTuS$Of6?^>}q@8Wsh);JrCt43B`x39G_^-uVw^@;3jgQ^5q zm95Xh6g{cv3zbzxH###vIsDQn0t7-}>~bUT^(@@dV7WU=U7@_e9T!;ir5FBm#(``1 ztjMn!U!M+TvVl$hsJUds%@v%s>6OJ`HsiJR5NtZTm$y!jPiJMRVh;w3`o)S?X2WE! zEVe-xrO@xV!#ese2a|BXh;wI2cOqL1F$$q#Q)BlMhdUO;F7NN)R{8p6`<mPPEkYXC zG&3F<-4-C21bTY|gg7I)boBR2_cyoqI+QxY`6k99;;jOdV5h$;Oh{@b9jmW_Ho^A1 zUev%vTP90s6Ia@-!d<o3Ix3QEu%cEfl(g{wkqUrE-RYlRcy(AuuETh1sB3In!V;OV zdc0O1agZLq`pA!`-NgT1=yjWS3|tmRmH>IYzp<$p;sk>2*+l<%ilX>s10BpQU;Mua zy7DF;QQl;?njKuVDDT3HXz{o@DXm|9ulkC0&Z6`c74_l_USwN#eqYwm8EekpFjap^ z^obuGJ+)7icBnql9aMb+Q@>9%>|B+LcaFDG$h0C%c%V5`tBwTPvtpm&1VWj}cz*@_ z1lqNH$$=u^Of;k$R<^n5*QlzhWg}juN6<ON52kwRYFc%b&c0K+N+F`UN^`P%slzP; z$1d*^U1jc%OZPFaBSxo|A!KvBY>If5`a&F*?Q0+erE^nGcaYNLj5@jWoF#EG)s?b! zd!Z`bINc=bd%-q`;+PJybdN`=Y6W$5+NQll)aj)oX%o)A5261@RqFS$V-XIjmj%03 zFWWXY-^-5vXxg2-<^M``s_xf!c^nLjI}`oMX4U<|ZME*#-^tv$pZ=e%NDYf<db`TN z-lL5uX7u6(!~JdC&%j<9gORh`e&wAqNjTfhR;SDf(9>tN!K%EXZW5qa>lH1!wP9_s z&|=Z(P+tJ>i``chIz@}K-9&{>Q3L+%Y&TBLHP>sRJgVdHC=O@^ZI8?_-5ok5>sVdV zu^LgWnsQ9}QWbtxq?R_J=1KV-W~5Y?r|s->kiFYMmkf?l&xY>emW`J4`OfWcR~avc z^9@|LP*=ysEu2^f&zl~7`#U)Kfy_o$P1I#0^(taZ<RaTI6LmrPhs;|vNo^ey*4qn~ z=L{VLi!*P$v%%x2G+5!LY+4C~)}zv@@=>qo^3;0XS>+|eFB+7y&Q<ne0D<Q#`Pteo zQt8<wATo7XpG?kX!JmKiVh~a9iTknkEA)P?S**TzwOk-Iin+>Uq7s=@IgIkHdBrA& zac6kcBi!joixaIjFUj}lT~TbY9BPb}%8v7FSCeg1-sb3I>N)>`?m>@eqvAQmx;N{I zRjbN=(Rdx#H0b9~Ve0w4FwEyUl%uxpa5%IRbW^7s;tiY$K+<`|Nt${Y*t$!gA<3By zB%4PMxs)F~I62teWmB^;6L15J3j8AFryT3fy9=|sb_f|~XFb<rgpgRo=Ow%co`yYI zhmf@?s8$9CV)9=+;wLWjque3I;}U&nV9?(Zmg78v_9Ze&#|0Y<`=ZN|BZkp9vUv+& z6E${^uFidEqIAzwtwrP_Ob{mI=syc-5ZZ`lfg%JTG=ewZ4^oQO6Mux~&<E9uV24_t ztdaiZP5?1^tTIDuF)@{ZY(8y{dN;sO^^HURzJd9qJ96_4d?=U<kd@1gc#xSCrIrRs zByEIt^|b{IthYF``ySO>l3pS)vC^;%rwQlB9U2W2iuB;_!F<3VPJ@jmQO;;VVuPLS z(4Njnc7d0RfJH1G$n|CdG0PrU*xWyU8F-!*h!nd6UZQ0e0jyI>MUnn=IGhZ1^{1fY zapL&B^aqu9W=zSQtsVc(J2RxU9nKWwUqu-4wTvpu>;F|d3^OnMiVS3<Q27^*gF=K* zK!_V01stdRYyYp~S><26;9D`~ZguSk9M|dXp#*WGv&+*x`F)pV?5Wo#sorin-uah# z=x49a3%~N>tn_)|w_N=B$`@8h>9Y$S!}n+})ov2{+;r`x3{)9?<1k!(8-<#j%jm4k zbF0jzi={hNS=3bySv5s!-F_7pYAGh_$&WRoDjp%*Gg1y&RNUtrW)S_&Z@>#-^LdY% z#NnvxP-p+v0W>nkiQI28&;qT!vj(Nc%dU(hd*AaeoAST=0EY;Tpt}Vx@>wvWMq|KY z?ovK3sgWy}r;_LF7Y7#}?9k&TS~T-Ffbilz1EYBSy*A@SpI!<015oVWqKijFdc%qK zIC|)voH#VL;tl6TA_apo!ug^SESk9$Y=dzEak?Nds*DtC8f)B=aVY*wh*Zq+%q$S9 zn-*Ntuq-WnE0n>FNko=Sq58K5?C|#n?Oyz1-x|Q;)n%*z)L!E^B1ipPg-$&Vf6dzi z@H$xi@$(6H2>R+5d;1x)-L^IaB)Qr0h&er5)FZ}U`6_{rKxSv3;}UfK-YZ|CivqB3 zKR6xKBh1XT?urb>PkXCC4X15tPt4vOYZJ0%4#b2H|Ds+up`3kQ{i?ppMyG%a54B0G zTdQxKIEcjiAbQW{wG-|uZ_!bw^}!DUu{ap-dk;a)xg}I!_VT^w5eF^xUp(>7t}aAg zde(2Am|A)uwRsC+gxed}uiW}3Sr9Fw#X%v&7wg|VQR%gpXx9mBuDon}Tw+t{QY!SQ z8dE(r9ctKsXccwvv}Ip(=S7mn9hatH95%|HWyGvIZj2K`zWz1T-YO~fUX}^YxiZiz zmzPqFP+ESqz>T|CT?579+4o!YCQ^Rye<HiVv>NQJ>{E>sEwFklKx{@1op;5hI&mnR z7wc<4{Q^yz$vix}Io-UFQO4~BW0$|=tUD}h!EXUB7t!cNSLLRgnr5;-#*Yb%7is&n z%jInLoK>>@waR&bLP&nbPhohEL)}X>)uB2Xu4Tnk{8v>e()-{MpKzJuE~p&SScF2w zt?DvIkHClR@>eo>bj)$eR}~w7{3F}`&97o1M-P%9H7H6qJI?y%X1aQf<Gdr2$BC5} zONU)Jr^haFJi-l!+EzTqxHEM$wV)Bb=Joc~2a}~7tdeeg{L<yd(M$fG2G-9woOt^e z_?y%E+oB;>Fk%h@=@hPBO^M?=>(^o~Qwd*O5Y9U^=Yit@q*Bs>aelw>_!J^803c-U zm?-Woj&C>NKmVw9`F$836C>t@!t>b>^LP1WMoMbF{(=dU{mDyAf>r;<f8R-0pLOV0 z+{q!4D4~M+NY!0O>xaAd?$wv&_vcQT#%#GZjB#MyqL#_+yRwM@*WJd3Lcwtkc8wl9 zXgU9*Wy#y#YTF<DU?y+r4r)m4-X)yi;AHUr2RPx(+q8;$(bD;qyvhhk_`tkqy|=<! zw5K7!2a6F~C%pyf(ogQFxb6zv!9_O5fZ98dyq3Hm353?SxAV0tM0-1YXn|Xu&BRsU zqSkC=W2xm_6&CG9wnqVte<oB?8%%SwkcFr)74@mO7cL37P6Lz8C(T`s0)ugxy1etH z<Ds)}j6ZX%<2Sy1NwL3S;@bPre+J-Vj=l8;0lNd=a2;TIi=>)I8OH&AVIUJk+#A>y zT@l%^uzT>V+T)Bzbqi3(-7PkUeSz|B0PD#5U^eHCs&@Aw<*8jN+TFQ}RJ*G+jNy|H z#qc?ACS#}06;+Y?Jh!=8hpmU*PvKnyeUm+7wVNxKbK*Q;6|GB-a$;R|RU~NZEZ`9V z7S6RSyC7DZI7-wnn;D8pnD@LYmF7Vmeex**^pQx%&wgw<<)%o3%N>`P0_U{-c@prO z4rgBSP*NH)%Ygo3#9>C>OxQB6uw`+pp95Q=2JX7CjSAlV(}9i%0!L@n`DFiu?Y7Ea zfvdQbNFaBOwn=7`<N`UWv{U-YVWl3yTGsOy4nR}}A<j;kXTzgT`OcnBj)`FdWHV|* z?Bmfbv0_)IKIl;2Th}k_-`d+%`3=rwwrmzN?CqUmhJ6k5N`nLi)P5*R8CU2S-ucUm z!lRlGHXM;1bn%`<OqDiidqH;1gF|4cw;=$0Na(#?=)Lr0z1u2lP1*XFC5waF0NbzZ z`Dsn(^k9Uq{6kK;kZYwF2yi2nj)zU+tn44$yv=bwpUo4jQwKFQv?L?-v4vXjK_$kY z>dh|u?su$fsW&`~5wbY#>fn@9Z)PnPx(*IuYBL19CkOR01*aBqP?_*$1CZ87{10^r zj}&WMSRYD|Tp#Wq9*ho(|IYLOclPCwEGJ5daso@FA-{~g_CEo`K&p-a00031009R8 zrvL^3000000st@oKmd0D005Q?mjD0&000007629i7629i?*euMUj#V?d<KFCmk6Z^ zJ_+aw{tL(q;SHz`fe&U7tr6Z6SQI1_`xU+x%NOey%NdFqvKq1*>m8#Wt{=)E3Lvx~ z^dX)h;UZoliz6)~u_M+bB_wzx%Ox@;eI>~zCnk#~+9xU}YbUKJ11Mc6=qYX~$SMjd zcq-*9UMt!x1S~ErSS*4p;4MBan=SJ$Q7)z~@Gn6x#V~y_1TkbW$ucG~j56{wMKi=S zV>Goi$~6NuCpC^WzBU9lRyJ%lsW#C!8#hfifj7rE4mgH5(m7{2-#T|X+B+dTY&*3) z06a!KnLPA8NIjK46h4(dFF&9_6hNFoAVHQw1wvOsv_lp{fJ6mEj70rKbw&q9mPZgr zen+B5#Yjg<5J`4Pw@K+rKT35<pi0q86H9PQ-%LSFwoL0yBTZ;cu}%X{FHUeywNBJe zVNaY-+)y4+VNkbF{!vR&!csa?q*Dx2XH&6L{Zxom5mkIu<yJ>lsaHH#!B|pQ<ynVX zDO!+Q0$Yw;7hF$VhFzvz(p~yqBVI~gZ(f*QxL)920$(&=R$p{qp<l*e3t(bksbMBz zTVb$b2VziS++%8E%w#KN6J`BocV_ZuLT8d_C}_WFfNDBxBy0(6Y;4hOTy5oU8E$WG zvTrYMmT&%Ww{c5x*>a0>FLT3mYjp^9gmwaU7IrFjH~;|v000310GKy_X<rXK^#BV4 z=l}o!0NApa`2YX_0NApa`S#WRF$pRI>i_@%2mk^A000000C?JclQobOK^TQ!_u%gC z?hf5Uw1l{OhGpbMM6~2Zx)C`}x_K2LmTrXmx!>G-dp%oyt5sk9ZaXs=!~yVUP6O0o z-($WlVJ78PGLQN!dmFQo8Q4nZm?9RLZcL%RM6u*0<}+^*?G4PECt0oAg;k8Nmrjs; z$K;@^=W531L-YP(X7UE>Xz#GAuw(k_taJKmSfKY4`NDpV`J2r`%u<~7yO>K~_S2NJ zpNt)`4;k-9fgI%=PmToXCS8RmXM??Q@_nSznJXOi`D730cwwHPOt$AzJ!%}o#aKqH z5Asxye)16%$R*9uzPiIa!#&!UsHfy6@w~_7pn{ubN%q?mncJQH=55Q!Qq>YK88{N; zLE<Ckk~ww0i-8M*^G`_D;RCyr8{tKim-o38*#(kDxEOnzyr=#^diJ);dqPwn!{_Ae zE~KgvW=XBj<A4iz+mDN4d>85^xIk^+$%o;ItDh6y<LU_hy7(hZ)4LMGdm!>0-grr< z{{&t8yu^OKGndFd*}N^@seX1U+U%UxaVd_YqW35Joqsn`U3<baHM;<TJHQxG`>kjI z0C?JCU}Rume*MpoA&OJ>+tvSjIkkWyD1eb20HHJnVtCqPU}E~hIDvtcfq|)uX%7Pf zLl1;ze86DH$i#pI8W<Sf3oyKS3*!f*xu!5UFetqL&#ds@f+33eHRE{&28RAPW{@n? zY9OJ&zz6_UA`%$@0C?JD&r_HiKokYw$p*FU+>@Q;>(sVw8!xqO+qP}nw$0hOsck!| z+spI%3n8pOHo35fU~DL?p_E+MtR(~gwCF1wqP%d5+M<P+D;9~>;)TT%b~r4;YPA~c z3uiWpMIOpbIjInhrSUX_X470+K&xpTZJ`~shYr#i(q!lc-GT*n#6VocM?$248`+Q# zg;5+OQ5qFc1vO9?&Cn7Z&;|W40%I`)^ROIiunAkS6NhjF7ol+zPhGC?qcXaTE#u3? zvb~%qH^|L$m)t9lyX~HM9%t&us=n&2MyknbyE?2+-iUG|&W&WxeLkNM0Z*a-JYj!% zvj6Z*4|(R(3R+8>X*=zv{dAbF|MJ-W@Hmkbc~R(xr#vd5dce~-;AxG{=!u~igXx%s zrC5pe*oy5T&oNvE<DLtDc-qOia(%$F^B+$yHAqcTo75q7;)df!^cxAEe+__c`wsXv z`1<&I_&WG9fBW*a{?}4p!@rdIlFR$no7`*X&-{U3@O+-f(|IaS;mJIPNAqwV%7b|z z58!Uxl{<4MuEEu~JeTHDT#^fOLC(VISh0uQEE!Ckij#3%j?J++21j8l3-jK*GcU|@ z^VB>xkIXG|)7&s#W6U+PD8iz5>m7Ql-lXg4jM}MF>Lfam_K)w@m7B+J?!NZ%TK%=e zYth$&ubE!czNW75PT`Hh3qf{Z>KkT&kqwApY$hPVgsuRT1qlEaRyKAHPA+a9UOs*S zK_OugQ894|NhxU=S#*_hl(<z9iLHPxnFk`|kwtFcH%&zq#sUBpQ4+EM0C?K0RppxN zMhqQ?mf<qEAm6#!ZsV~pGuv^}%ZuM<7wx6r<@Oo;G;+%S`e;3JvP`9gXhx%vj*g@W zD?_Z7<0v6|`Ma8&f60x-k7K@R^K6oCP`(^<rJ4OPtcKO<s$Q`jhgHHV)a{<KRG0=H zTZSp!@VH`Vjrh+wuFZVho3%#6Xf;~+BzCl8=P~izT<q}E#3sHgtGh`;Mc*h}<5{Q% zJL0QyeifE*785|^8S&^`oI*o#HY%&zvbvqxX_6#1TW*qQR&()sl6YJ-1V6QA20-<2 zF6O!pxS<2UPuNO5t{Dwnv{uwt0+N${aQVb}w93_%1ARz2<?vlxtv8X@e4NhN*+LTQ z1gB3IV;tF%)F86Qb;CoU+f$W3H4SWaph2+?GOny_u(b;RTyJ?iWJo}cg{!~U)C!3Q zewrp?lD12b!=^Vhrot#_Ia_3pnBC-$_PtoHh8`KG6y-XjwE<Jg7B-n|fZRmM)uztc z{Sae^T<6QUrEu$@OXH?Ys5drRjbg{vPSSEbo-jqF67gEr_IT33kch{_7jhj79V9#< zy9Mkfu=98dZl+602n?(uE>DIj<tgzbNb`8wyj+Tl+FCog%oFSSM~_dKm-F$<#lF&Z zpg&dWPntqah0Ad<HHG?R0Z+Noq-fos7?+O;e6V#^6Y`jg3n35L26;|p*p{PlZF6n+ z&v6C+r6xfpUEuFRySr3}6tGb0lm=TNtH(XdvdUVWGOAFOXes6?9Z<w$I^a<RP6J92 z{+H=#OHHaE$kXCv!{zT>`x0n6joePT9-lFVCGsqI7J1GTRgvdSQ4@K=6m^joP0<i( zn_@`hJEj;G`K~EOM1E+<XX`VMTjk;_kKJ<dwa4!n#S`wo!1z8ez6aj~j3OOi6nP04 zMQUIac^Mc*Hi1#(3^0oP02oEi0;5P{=waDvo<Z2@ltO_JN;x3eNWb}pJ(oR9(iKD0 zr9&#Av%6ZJu_G<eN*-U`Dvx!Rue6G~bta0hCS`)xN@fl{zHaDNiT4KVtZ07_Oc;V6 ztXF4$R`Sz+tnU`rtux5zCh`a1gYmKov%4POGXA-T9^XFB6iv7a^E)VsI@=_lx-z_= z@_C+jbr;hfuONT6FwwUy>&$7yziWUB1A@QOghxVmJ@+-y!yLZuZ6A~0_rWzCh!t@v z^Zs-`{;5J$vVW?~R4*ohyn(|Z2CTH!9ZVmpxd$zQjs9a_3DY&r)i7I|i?PXUtW$Y| z_TI@fA@q#ypoSU|I>-y6jFQqpL9|5CI7uP7j)to5^9qlWQL_Yr&$<39w;c;5zb_mR zH1(MQ2l^qXc_3=!sso&LbXS5&wH}JTOklvMT8e#os2v-cO(mRdQ{HG|_k8EKZ@*9n zb?~4vTH5&0071A}npD1?_old6%Ev~NFRXR&Fh5NE!naOi0H18B=XR=}?zTSA=9%HU z?txAN!}r`Afu&i1cE1hE;<FFaaI3?>?p6zGw7ReF4&1fzXy6V17p>U+zq(K0XLkWh z;|bYOZzmaGjD(EM{5z7rqXz`&ySr2FBIPsv;p{1y!&5%r#4LVvi2k`Lly&+P-@^KZ z;X4p7g|!I0QYQzBLD*MD+L2#k`P%gG&S3Ed3riMnP0uPdfAv_`W)1^D6oikVkBbBi z9CIu)vt?#3OVFTqR*=o}_a_!R68cL9^CywT5IGEy#}Ea~mqZamlrTgYLsT$75>*UQ z!w_{0(ZKvmG%-XAL$onO2lFk_#SlFV(Z>+3<vpi|dBE`ArG{D`QX{>dWPHjPTi#2m zCk)k7O7)CVI=8&nlr9)bmz2^KrF3n1Zz<g{ly0@4J1ywm3LkH-l8>iv(|d5e>nG=w zyi@EmD{)O@0C?JC@ZQ02A}C@bBV%9W2F9Hn3>*x}1sfUIoHj8qGH8Jqo4HvTIUp<{ zW-yE0X%{mCP?{6S=5X4@-~eGWGq`M2VeANu*x=9+v5`5&WuqF1w~M2Jfsw_bBRM1j zq$CmuHuJJF@@VZ~{NK8PrFSC}P#<fG3jk?DB&PrX0C?JCzywM_sLG(qwEF*lrqxWM z3=B;B{=bE=0AX1NZg|>E%%KeeF&Ibj_kC@ToM>}JAkKkBkuU)poW;Q?_)`o3!7~hV zAXtGw{-W-eCmyh}f&l;%$VSg3I}46-V9iO6R4#HNbCtWMXWMa?3!}Z{q50SUKVY#3 z9`=@vrO&cc{3Ztu{*)sd|Hz3kRJm(<_H)?Eg?*akq50R}|JxdMEjJFsz<t(N;O&}B z+q$0Kt4n(FmSJSXVxl%8-TwX%rnl?Ewgc`iKybMzCza_Zj^4)aC~7pm*P=$VK`U%c zKd1fJa2|6=n|Z8)r{w0REAltmPIOL-vF>p;+13Yqa=O^w-{bxu)zw;&yS1X~GexRF zQ*?J<yCFOa9C2k$kyAr8)TdYK3tudd-p-6hBb8~FT<EcqtaI;vtLPiyrG)f#<XRjC zBjXa<W6RZ$dvx^}>gbH`pP_=_ATjp(YQH#lBV92`AT=@PRz!om#}&DRX@9dt-IDWb za_gE9((Qwrs;R{6UQ2qYO{&jQCSQl9wZ&c1ZYoHeE2rvp8&{@uR#}r?6<qJGwO+r$ zG76NKpn^dk2^<J-5#ybl5gIbSqvlal7GVVp>$y1y`-laz;24ZhBAXs71iy4{;?te; zH;HWvM|;;r#DaQYWTM{|d?5G)r*hMloO@t#93X`j_cauva{jC&&fZ`7YNup9*Vi69 z{08F)EW3sAxk$W~U!VT4f8p<U(EH3_<cC5A4JZB=a*m;H-a3bO|FP4LGhW`X^h3_0 z%pn3{8ebRrj#=NQAz1iy_cMeJw5a*T-%#QbNGuU2`$)Af=v>gq|ADA)7^$4G@0q>H zG!WeLxye_<UcHHyoL!Wj`_Q@d$RPwh`{5>(U%s*z^Aa?MvW&zv&XD@peLu9%xQJbk z9i|XS+{q{f*JW75{?AG{!Ah2R-F3K*uIO8Tqxk_@>rkHn0C?JL!P7wn002PIdmpoH zJllTRTB^SWXto+5ZxFvbhX8-RZmIAOqksem5+hE6Bq`El$dV&Zfg&Z!RH#y;PJ<>b z+H~mBqtA^2?z!XHAP+nmGHk@C0}eXmup^E-=C~71I_0!8&N}D33og3kvMa8-=DHhh zy5+Vp<0ed+GHu4JIrA1QTC!}#sx|92Y}&HThaJ22?7QQxd+vMSp+_Ej;;Cnzd%-tB z@PMrV0002&?R?+1ZQIPYUDs?I7%^(hxCxV{Oq(%l&b$SSmMmMbYR$S0o3?D*v1`x1 z1BZ?rJ8|mFxeJ%BT)T1W&b<eZo;-W;>dm_kpT2zi@$1jOfS{1Dh^Uyjgrt<TjI5lz zf})bLimIBrhNhObj;@~mkRW(4KmZ5;0NCw6NH#y)wy{ZfqGI9_l2Xz#vU2hYijknC ztfHzWsB36yY3u0f=^Gdt8Jn1znOj&|S=-p!**iEoIlH*JxqEnedHeYK{ac(19LaSc z0K*S=@GyqNAU0~nuqSBlmYS5|(+{NnfWJb?H!tUdQc3-{UoNIOvC7;%ACBwI>T+62 zrB<=4AC0o(tX5q#UbF@sdJN*A?-tW^c{^^l&-ZgQ9d`R?X~u*Zo0t?Dw3xAAMfS2n zjSf8~%-FDt#h}Fj9eNBHF=57n6&rT3Cd^pHrqIk9rE$33oUYFwPn%~7Rn!Bz$Ln;t zUZ&^6<-9olzc}xX8)+Gh1}zRaqPu(EZ>G)mGO=mLo2SF+a9m8}RU9-LbeOPV7e|c- zEjsjAMCZ_Bz=#DKcF`-;XwafVj|D3>>|#);F<``m8QF^p6K1T~u!~8d#()tM7OdE? zi`k&X0Y?m&Fk`t{U!G5k=e^{`W5k3R3s!8{#i~%FL5l-A^cXN=!i){O*c57X=rLf# zgc%FgS!)d1*`b8nKV50{{rm)$Kp6rxd@FYty+(7lJsgjl_44xm>$fq=+neX<u-Ls^ zWguI0QeU6Rt60>mQ{$}HRy1lha``ki(N`o7BRcdLFk-@tMT{dlF^}lbW59?>EF(J1 sSbl6uIrJDXV!?_HyQmdvbm%c)#Dsaa_lgbs7ut1b;s5~v0ssF14_VS-dH?_b literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b982d6eaf85fcd6eaa94a0302bdf1db9c08e8231 GIT binary patch literal 32944 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f84148db5806b752524c18c6173fa19e8675c976 GIT binary patch literal 19316 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 BW7Plv literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..ab56ab7fa707dda6bf71209cf0275ef6be2bab03 GIT binary patch literal 11696 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 H0YLpfq!Ad2 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..710c26179c5f1c9998065035a82a578cf45d60e9 GIT binary patch literal 10448 zcmV;>C@<G{Pew8T0RR9104UG^4gdfE085wv04R3=0RR9100000000000000000000 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 G0002%wf^z| literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..97814db7e2c7bb3039692551a4fbbb7f33baa46a GIT binary patch literal 18684 zcmch933OyxdEUMEt@U2*`=-*Xy`)+sm6p=hQfcp&)GhTg-BS0=w5la_t7m#NYIV;B zhhZ}YdcX`2RvR0G4K^fpX~vvjVka{`VB^@v4o(6wb_{q8*nxOWoG{9F-z%xRhn_Iu z<fKYf@4ox~yZ!tB-&-P-5aJ|nAOcxiI^9*BdF#qg6VmHP?b`Yyjh%n^>T?g_{w5*x z()!~!4e~neK0@mM3(q?*?_7E0tNyQjmyo`%5~6?LO5?^3>fMAK{X1OME7zX7{0C3o z_yo#-MM(EYw>BFa{;xb1CZwvOZeR-)$`{z5;~ssG%+@0}pIrZ%_yye8ao@c5=z2r+ z|KmFd>G|ilKmSPM$sM|GAIClFh_T&xWHT{*ANrao5TbPLJbL5im(QmD7UQqr`G<FQ zH+O#QZD0R&%$LvW7Gb1{>lax7t5t~l8Cj%+br*X*y`FrpCtZF2MzzWU-}`oz?g2Kx z|1J94^z+0<@}#4llPD1=6A4=<qDU_gN}Y6(l4QHz>vqW^u~C~W`-{G6FyK$8`uhe# zeH9^{%B54Xf_EU`4~Bxh)iI&J|8K5e{qpZ`d_%B@I@(2zC3<YCL_;0E_GBq!XY}(= zKJo2u@4WuY*-|y)p>e;bOFPy*IptCOvEg#j4pNY_`1%z60;!PxdR3={Ryv6wkvwIR zFpuYS7Ymgbk=8}Zm~cN41h=r5&)m#sQnDN^`UYyf12w#RtD%5DWX=rpmNDNH|HAZp ztNeL?zpSM5XGIq74EGf@QBs*Gd+K3T)P0TlHJ>i3;kri^XlOpF(D#Z0m6Wh7zxV=E zm?V4L3S)}fBTJ&pKJpV9Q!uv@=Kdn)K1IgrBO@}C#1zFO=ZPdTQDQrUQIXMYEI^cq zxDG@M7p(bDP7Dur<cvf#h(!d7K0ZlIJ>XZIqT*x<@ZW2$%dD3bzk;RYyZf;mz80*e z59Cl}-b7C2Y7ft!x$Xo_{l0uKD*NnAeQ4{3O;JVJVV8s$lRxuJ7iLC(uI}nzn&?k3 zDHJJ0>51VZM~=wefb41WhIG4Nlc_kyn4a)ROnDQdxTVbPV#4*Jz1-DZOYmpDNEB=D z+%M2Cf~U@qll2pMDhlHm9!nPmCWw6LL||lF0RaU96i7r6B>^aqWqJ;Xknbllm6s`5 zI$rB9mvWhq-=UK;^o$D53vteq6~*E+zSw*&pG&9t>Z=1akP}r{e$ZMy$BD%N9D!&T z3IdlVHf8W@I+f>KuoX#0y;4l;>}m`5yQ3AkBPYw^gdl5)?CNke95cEN!8X(Dah>iP z^R&-tpf`Iw$e82ejNAX%XfUay!-1qk1)t=1r8b6A-71rH4^yb@ny;>xlt?6GBqA<* z$FMG>3-xSjtX-mb<r``ssE*xdXD5=`HiG~+@%=IS75aN*h>VfN`mvD&6IeRMsNev? zhI+b*C=+o$Km~e?;L$Eb7Q+yE&89Lzpch1R>!ypt!^304W1i_;z}q=^Qj_DwP_4IG z9jK0pwOT)CnOuK=&B9J^$kQ7P1t0`1G2wSgnzK<lU-JNMFUoDAL(wD!yi0|rFSjvf zpPPGD6nsAUoG1w5Im&cz)+-8%K0JHLqsy18quU>r`5GBx;*U~^`Fx&BmwrQJ@=F^c zOEGa`irK&%q5<)dzeT&J&wP+eeHGmE0wiaFoT@MNlp*VVlu@iwh0p_h7oww5rtT1x zP?c;$%}KH#trMA0Cew8&Nrjw)U?~@%|CFU%KA+B%Q-z#OZYzesJ87<=uyDu;I0uqq zaRC^i7b0an<T@h|;7?M4z#R-^!sha(O#W0`K#@9@W08)8%O6cI=M|R+awLPvh3RAY za3N(AZO7l#<)#sDCbwGaHews2!O-Bm*cJ^ZN}(9DP3wWB*^%);WXdLspKM#!2Pln8 zvP<+jE~xjN4XB>Eku#(Hr4h+}-;uUtJLiv1XzVYt50O4{lw7TA?NksUIue^-XllzV z^%SHDXxaiK<PDkyDpDp=gFw1k`aD)oTR?=%;wwR|*0uaVXS$;d48@>JP250oOgU=F zjwwB+el@kKsex*cNRCy!YY<H6FsR-GjOTOj3Jn!|3q5TC$zCn?yTd-$d}(BHdSLMN zws<(y=G0u0#~=4ZM%!cJ+vSi}?zP+clO6GZQ*zLaTp^Mg?iu!m{3Cs3T@;*?5B$`% zkCn66qRB)s<kUneXu9GXA9&bDmCd=cnf78dFm`OZFbmGAfwTUM{w^>#Tb~N}p_2qk z#8i|CgxeEFxh#Rhh_C}ye4Q{+WakLD_X2^^UZSK@O1695x{dVFK5hnUkfOeU8nkh5 zFZ2so#}pjCbga6?Sl}M0sex45tXAX&Xx$VQB}uX?+587zBMNiJgkDWxTE0`G;+eK1 zU9@oOgOaLa_<vxE_ys0XMRa0fEcxIi>GV4@M>AqRFNNR#-tJRJ7%Yc49)L!LAQbn% z4c_=L=_I3Mne^3rj`pT>NfH>HhoPZZC|ie?f|jr>``D3E@yPPna&fdY8VMy$djmSR z6r_SHFY={;@wvv}CZ@(Uu31i*v<-zUtCP>=glbD6L+DHvfIsk>>cY$=Ck;nN?ao5l z>yg~sOD7(2vO==g=88GOn)jC~i(z$UQ0w!kOq(c;o^H1vbEZ{Q3JtlXvuvw6J0yEc z*-TcoMN_GK-tP9)&z!2O!FnYhmo$$f98Bkq4)+#~sI8n)l4VcKtLA#X_wl*ze9GQs z3rdo=V>IX*TC(J)Kz|eZrJu}`>H5UDizzbDBNAB=<#iRVB4q?>1bzjRE<%|c7-mYQ zCx>c1T^Tq-c1@8<Kkc_2m?TbYOLg@3TZFf;1={ykIZAs?R6_l5Ov2{)Od+ulXi5jS zWKTc<9GYy4bxxJ?a&gh^9IsS^u7OxS!<?ezWQ!}he5^h+G`f`dl0V%M58J8Wj`ihZ zU0%JXJrHs_WcS3#8x-3#vk#A+8!flhoB>L;H$GVC-TLWbW~4uop#RzxjZVzv?IY37 zc-Q6iR0L~H?0-q<WnU%J<TUxxLNgCd;y60fCaA14%OuL?W7fUx;C^+X83a%XHb@n? zHs(f~&>b6evP@KY19k|8Nx2A7ax4%@a!QLatK$yXe*tP-WpLnLsg>2B-qnJ&0amri zHg)Tu30zj0*zOp|Y_Ympcb+~ql9?@3a=@?#onPbH8k}tTdXQGmq|pDpRmC)S2?mdV zlL-dUd~<tXzWdX8UIT(<b9s<efzP1yqK8Dg0|MI-u!-5lAK&(<3S(+-$W0y4QHn$* zuby(bsc7$r1-$;GOSCy<M&JBqN7{9NEj_?GMOmM`Pl{-a+O-#p@c~~T&fE|G!8cM6 zchzmU-}$kRoH!!I{erH@ZYQcjPFW7iso^dkbe6Br`?~&rIQHvD0zdjTHRl#Zk=spU z|6A;X>_u{ee5CFhrBp1!MOYq(vz3Ik6k#4hpjQ{+CYN#z2UQ2_i4Z|mwrm>ohj>Av zq6lKCD!X5X-3GtK>fQHfK@@f86`QQqW0YLqxw3hwasT<*>5-xCiqY=%kQ?-d4soFf z8@R$Sm4@lQS;nG;eEIP4K!2?dI5+RP7;y?ge*C;4CuqwMahJ~2P?p%4gguZ%%Q;NR zw8zozEEUw_v4j#B4f%U}J)Z8IGn8{WDhaI;?v6qGdt)wdyL?Hp2^x27Z5LmsMlOW} zW(!r89gf<x9{!nzFTPlHGI1!RI6LbndJB@bT&hbcdRF%YY%UjTi$*&Yr?W$noyWuJ z2i{j3Uv;@cb}@K<<HgS@E>RRT2eo_sQV(1=yS$|e+7&N7p?Ned+dfc|CGY8>_T<rB zhfsB@o{Y1z(m8H-yZWM0fz#N&{}(I(8V`}FdOge|2q-S}B%1Vudf%3*84+#6Y?)Gb zpy??Y=qndfM#!tmWQYzaphOn<1WQ})567y7<rZR1#?R+WGFcG?H)=uCb)w&J`Kuo~ zI@z`8$v@El)*0Exf{RSaJK_<yqKixqJEcghtGqbSb!ut8*U|N9U5ibf%nttO@Z<;A z2BsAltufKvc{CDHMO6%zIy}yhFOYxo+UA9w<NgHK(>{E?#6C^B$rP#7i;PF6uwsG) ze{Tmo$%6+(4U)tzV6kqtm@6(8&$`XPk4L8cSPthIZo#lj^KH8OwSjRq;2TJH!#Cj) zEz6SWvY1ec6*2Z_y+W}0a9bkS*zQ}m8PB}^Q|&9qMaAup=<3CYAPDti4$MI>v$cm8 z*B!3(31{}nwfDD4^lNse2{T&?^|g;ZmFjqA>q-dv6B6(AsiOb8REUb{P6if>%sw`l zVy=t7_4$<0b>jWu0H<&QQrrg$&yc6<8Z<W>qLR#gJBO)kVZs^RBC?2B6Ig%@%L05n z#>fRYdM3rW+p9PgNNyRH4B+66R|CIV*R$z-CYQ_4sfZSQrm;svbtr3K6fU`DcxBlw zlYcDK9&iSiQIn@EU*V6JjO?vr2#e17l(627P+2{F-f$EP<6&2#l#4HCoX3xx9MGzM zx4ZWzkI!5Rly>Puh3RUkc0!>Y4reUujOdEya+asV@$R;$VAq@pfjZjHrNWir6Yhkr z2B*)=4Q5Ll(;R=^{jUp0z%{3-zpneB0mC8>H-SKIt-3iELG5i3o2sZbWe519k}68; zx@HDXaEna+cZkG=W)AK84%<nxDoeMUQ{K+xL--G%NrP+C0|G2Gt7zNbYAf!*5r6fK z>%;#y?GVqOYYnX`ORKPgJh^q6oIE-g8t~+1Gug+JcGyDNBH}=8m<?3ntp*Vhfvy9v zcWI;&xR^jYqTW&rX<mcBLmk1z$<nS+3}dV>O&tZpExAwi(rB@NHu)8`Qy7i7spi?b zL{(qH&R+Xk8+Xcke0K4dgt^YpbXpE98KT~vgJ<eZxon~s$e!+Enmo%cr*zTYUf?0D z8jW_ibhsWOHBLN`Lue=3Jf4^?H^&oYh1ONYrY8ka&uEgII`hk)(>r5u+em5u?d%+T zfvk|p`uNfWla&PgV<aDB_#!fe;(${Evj=Mj;aP_SK}5KhCtZLlaVU$$&W_IELOx~6 zfTiwC)o3v`M@KpbWN{PL3q-UMNE~m6NNU+9;ECI-LyViQF^`O7<=LZixzun<)TP0& zGum01xgO0gjKY6tyyoEq|El3qzVddlmaD-Ai?e(s5Kcc)T7daf2QGA@U+jZrN; zw$L+hT%=>mo1xsYE$zwb+Qkno?zSmHn=WxNkrLkgnG!TapM#ZZ50!f#|HXuzDv_|L z#x4XBn(p%U=z{FF`%>u-A@u_3`8^>G>3N8JZK0V0^Lk@cqa%oEho~qYqmn4X5qw#t zf=YOU+`GsTqA`syc!5l%GGcw?5fwCpBduxlf&jugH0}rT&XFUtpixaULbdffn@N&* z4oOJqg4up4R_{FkC&)sGinMdjX39Y`WZEQ1LfyS_>B0Mt<_o2Gu9kJ{5CWg&QXKja zVE7uheNc8SOW|Yzf6HAQXz4S!^Zf%g_<yEIn9>0wgI1PC1W(}BG%c2b<P4GZ#Y*qH zzsITAT=6HKR030~Uh?^DgT=fKe<Q1=Wj&S+=%MS=ez~A!1<#|~N-X1-9Tl%z(B(`{ zsbm}?i~D_vu$ZX~B5$Cm1}uy#TVGB&9iEBnXJ~l-SM9DS)rIhTKk|+ZTfi=4B%dCW znA7I(>|^etw(}l%eBldgHN_nP`P;k?zCMJo5t&FWrrD4!dS*Et@RXc3*j>8+P1xNx zfd}p*$Lg~+K-rOZG82~wT1^2$LV26ZlPJmJIwAx#XqjM27Uw5N2l`9-_ISXnYvew9 z9}khT97|@Z)j~0F1INyakhq00(Fj!5kVlpe0%gndLoKpaP)Q~ofYrmt3Y~u#nu1Bl z(s>2_WUoK}iC+^GN6hdo_`<$$D(Fw-gt{Xi6h?!ZD(P(*pBTO}@*wM7%6>o-Kptg$ z+!YG7wYd_V>I_IiRlD9M*d;YJV(0leQPCX{g@sFlZ(SX|(1Fn;O$@vAn5ZkZg+f?F z&Qg@^QF!;h{v(gwD4Z?ZxE1Q!f4eXT9L|!B&%pZ@Y0LYLBg{m`#ms?XxQoa?5a|L; zkmMjR*r|iZsNtyziNLgDg**wt9XUpqR_h+<u30iOHriM1$d_}994t}`IjyV<kjv2v zy<;*Z=TMHjmWAfG9ML9}rM0Z8fnH(E#?=0x&)HvXGgQ@IDLy&k3-mAfT;W8!pRwad zvWf9Hb9S7mYt!?g`!k4i0*N-ir20F5cE!KVK5c_{=52R$zwhkRnecdj-<(aT<T6Ip z9}$>?X=-qEI?%Zy_kHrK<2EXXR_!wScBhQFO_Phv80HV*{bb04<c)P#A%f(~6dWKA z5HA3S322SN0g?!^>I_~GHZ0)&@W8$0@xr_0+ZM5U<q#A`nh9W9%+K_jgnKnut=qe@ znMxpBEGBufkizw8DFlvD%l+ZV;!)v2SRx_C-paUhAT!y;4J1eNp)&-70l%uR<x&kG z7XZt^eFwK}j}^NURPFb>wBBOI;Sl{Xw-tuakLVh8+hw8j@$P^lWUOU%d*_HvHhf;u z_xfdr(AQO1mZ(wu)rC@fTQb4^4Rf{+UfKHSkDOqhgk6li`NL0NI;q&42LZ=pHk-@g zqWabDfZv{(+xWOwN*kV#OSKIir|!j}-yDK4r}KSpNqAU$Jj%6!Ns(tkkrQOOew^o9 z6L8(D5Pf9K5CtN7gcqt(?2Yg(4LG{oH;3w_NXWKaA;$vt3Xs2AJh3=6k<R3^sm_cI zDMbn&ou}##I8g~9s0$tJ*tEpG6^jGohxi9(&3DT)HEk>&(ti|dac5UYw9Vsz_Y$pL zxWCKkP}NvA;u72sjk-dKaC&v1?9$v-uZzi{Og4aoUh&)&W*3jZP&+(b2>TQ%uFg6- zADz2C-PxtvXgJIq!H_qsF?;t}2X-n#E`i$IQJu;5Q0CmpUtF0epS96mr^g-(+dV<7 zKED4Y@j7sJjpy%&b4(&VNaCA1)XXYzOyO_a-2VVqA|SsZD^R20UqNsR*l=52S)8Am zjD<ZeyH2jrYkcd2TFeO3WI15BnbSg&8S~U?z|@@zfHPjch2levz)fE$*utaf;NzCR zO}_O3zv7|}Z>TJbnydz+&VVDBZIiU9%YlGGO=8z8X#3=e<awmbK;@38yVK#w4D}bX zNkNU)WR_4BN%H0GYI<fOB5RQha%rNJ>T|jR5<B60?ROJ!%3ch4UG?%y|KlxlUWe$m zJG{E?lc~#5NW_$w^b@~|t;VSKYo{~VU{D;>$GbmT8~ot=o*A#%Xq!t_N(tyRD9X_1 z_ntGfI2H8vfAw5XZs>&n&9p5;c}`^i&ydyneIbCIM0kU+Wh`rB0#fCOkp*ll!2Jj6 zK{1};T1V)72L+DJO^kPy<I#YJoTX=ZxD5PTSTggSoCi4vnyUA<HVydmeSBV)_J!Ez z^S9GVmWyyV@(1WSmmu}b4D?C<_H3mq)OVJ-1&129c?U8vQSugQ*c6~j9wy9QsUWST zGATJ+?TUttL9bl}1p+yz5=fqmh@x6xFDgRd7e4dPR&7hKdCSlINVv~NHD@tl6TD8F zt@eg5|2qfl38Tyvm%a0iYfrug8%gb-`sB0aa4PIA+bxtjFa5<I8>%x5%na{;OR#~L zXUIr>Fb=FD2A6;}6L})Jz~lqIy`5<|GSXM=EW{#6l+Vx^3w4%-vV3GKG(13{rD4IL z2YihOrb2BoE%y^FPG#p-&WBUY>(ets<?&f+?>hQSEP$Ojw_s~KwQZ+otFwaxBO9T> zvBf~xQ*5{C?Ma6uYVEzt*Zl0o*K91zKk}K5NU-hc^M-Bf<m=CPBx=V-uc!MHTQ=hz z6WM6n>*lAYS0Ax^it~QG4O||YAG+Vm;|kyYZ?HdtML$l4>$Lz34s1G)A<WGJFgLge zS`KLmgcR6|J_kYOPLaTt=0k;G`TcHl6XhT;!S~^UR`_Ki#u8Z5A>uBjiGe&ePk6nl z`8dkFzA@IHGsT-%S{VwKDCUX@_Qa78l90CkaAfQ!mx3aT6(VOIi~BN1-rmNdD;>Jl z9g<YXqu6&q>h&OXaXVE()sb)vTGKf-(H7_%6X3aPaW9ppN3zN8<e>gv|M7;~6GNPw zq(16Wa&hh(wXzu8O6=~xPVj+CE|9nKsGG9UE~cnF>h6Ta?t<3i3J*JWf+DDhx)Ft| zX7UC>vwV>UW7uNhna5V<qUZZsD3YK^(3tmbNETtcbGb^TBkRMq8@JuJQ&yI?gyU(U z((*ci;sgI5)e7J0Fm)g2w7X4D&a(T+8S!WMV;|qRaR2d{uv*TIm%BqwKefl-)K@YZ z=V~84nP{KtU!#tvS0|<&!qK%!?4wF*Th1@IuMN9HxnkGl`+HIjugf3Tvgi8x^1UnZ z4*Jo?Ymd)7(3V~*BO0I%n>~?tmtXtX&e3(Jl%9CEp<R1^v=owsaMBZW+S(-MkhGrT znxJY~Ll*72!*4?@WY_(Xm4P#y9zICz4Eq$>ARn&lFgD6i0L*-l1sQ<lmK7o+FC-~4 zu*z`@J0vhgV8|Sb3KO?&R8dTkb}Xot`Ht25UQI(n(UedHTPdd1U#$loxc~I2V{_x9 zgS85_^Aqtww+643hhb)x4&MDimQLn`Xc;0C-v=RC%MaiRHPt`H_+CHWJbj!_9Vl3? zb8B2qkgDgjwuHp<)T!#JGv~IlWx@IS(@gNhIy~Wox7}@b$Gt9ZV&;KZn=a<sJ<0Zn z$M0sbTuAf@GnM{S-v>gBCDwuxyfZ~(`jb)VZqcb-@H<_R_>jZ3_+(O)BK1Zn?Q*;P zE|uCH#<7r0ZM|*FCt@DKsYkq!8C#)erV>n3r|a+kdrkKwY?2VA8AO72Ns|{jz&Amf z%pArd5+G1D2NDFw3eFcKh!VsNEtl6k`eOPG<41bBI`RRZW+N*HR_j2+n0l0B3@Ed- zEl0Gael5jpCgx2q1O5>=c02|)Q}i6~Ew$ass?z^5eqKUMm9vRR063kqsq+yj8><~l z4+-{aEc);pA0H2tioHR}6@}A{_-ONuc?a`8bTrh1^Aoms_O)|JqarMLq1@vL`t&wr z3)~Kb19smrkE1gkiKY@=V-Dv?U&M3lR4jw7N<p_tL0!<@p-6c0RHWUj)caE2Y+3es z)k3;5f#U|8`&0YBB22K~!5-+l>RJi-Lv|l2AS*?Y;QOG+oWluY*P(eF3p^>&3c?UH zSSkyF+HEK^8UxlT-%K|HwG6^GvimX^^m2}ea%P%CLa2tVC^Q%)Bb_6qd{U7khY<x= zIjMljqFljq?3=g;V?)E3Iif=)#2<jwd)c3NM?G%$NIZ1qlA^TP`=w~s*RMNVYR1oo zheT#$>yJ2GenBbw9jYtVzFX73%|4y7IsLwr3<oC`y;=E>-Uk+PUgVver;e)M`lbr> zi&DWSDUNnoa%Xa-N%*03|2zAC%6^gO0H}MRX@d%PC8<J(urb<QM9?M7w|4Sc)#73G z0iaoflMwT($PDogvOMhuy|9BgjeEb_z%P#$wmJ5BgmADy$kRy0JAg&R!Eli|$)K9< z*@SOarqGXq17SGvv5O%@P94V2ib!ntp!0g}m4IaIF3PgAwN1&>ry)vCpPZWL@9ioZ z*zZ-OgH(o<Ji6_BA0)ml7lo&gEQ<0IO5Db9<pjM1D)yO_wj}M)1!{$k5zo}{Xn)L= zKH}2SnNaHJ^W#BBo2XU%UhMw$9tpy?(-JPX^nl+RjC2X|^@nGM+)j_0$?LxHip!?E zg8nu(Z4al7zVvKi`POhURqP9P|K;mCGp8hXgz4_~{A>R1^o$G1GpDmXCx?S`KaT{* zduECdM{T^4?3{e|YFEPVhB@I<6xsi6_8#!SAR<3V5%Li8ZIm3fq$q;KDQq!M2Z3KW zWh`OhSqyC42tdC;vB!&MpaHvz!z6<P#X=~Mg1c&+X|q(1%;P;%lXJz+GiYXT+`?f? zE?PP$or-kFMvAN0Hl;D&!_WG~vf&N7M0;gG48D7D<AER(9n9t$Ztw88-0UfLs&M+H zr7Jc^&~x$mx^7PtSvXL&F>$(2kH7gBR#uiZ8kU{KUpVqx=gOL7uKBlcRPoc~JbCb6 z)-!g*C<mDv?2#jYVMyYO;&o(-338d-^Tnoi-MI4^ug2qZ=3|~zCdfk8o#$7MFZTC! zl@syXr}|pzSE-E&2gVGzu)>3o8Dz9PVG}K_9ZvyV#Fa4&A7Vz_S(*bVs^FMdq^E5n zA8<w8aPeiEE<dt5fq+da`|W}hoN-YhQM(Zn+hg{COGe(ek40YC4!dM3s6$?y;`;EP z1hG}EIy{cVaKXi%@*2J2!t(CMLtaL~Vzzhx_@k;ItCG7-Ru;bTH(oJy{9_j#?zU{T zY-4ixjMx1$FTM0$m*$j?{`pttW%;H5^wQtPXvpP_Tzu-m!3WQD1IKV8ggkJ3mAtL) zj$n6&b@~t@A2)Lf7Izgj8)6jBS~ymKGdbKvf#DNd$^w~3QAWZCE0BTy45S)t#@i5n zqJV2=&}#QCu+@45y7(&DS~<IP;>gHAUr%?kJs!&@b)G*vNawV0kMvB)%vQqoai(lV zd0<NG#DHlRYgJ?!TG9;L$g$7wdEz)2u(nTbOSws~T$)a&3O;JTG@S4SH3ivjO3UxD zvxsY?EfVv&lSkhkQ8metm(=!*u2MZ&oe#L$kt)LCsq*x;%HlX}q3GSANW3GOIr7f3 zs%mkjGj=(TEQZigb$bf&r!~Z%@dsj}!w~K6j$|wm4#r2$xL}!{@(!x)OtEGCS;alS zfTJd3h116Zq9Y^Yw4*1MjO99_(XO*G`sUgglGLDA`~G$IZ$Yo4<mVTf6{uQm7Nl`d ziSR=qxM8iE)*e6<1Q0<0Q&P<Eu$A|RZm>Eq?t}pGplu*7+@s;(IQJQ==iu8wb@QEG zq^Uu9E_R&G%mU@H6=mGS`oK}W<x)G=2qk@#9_8`ofszgdJ$^ZGKuY*MmWFAG5~y`R zK-3?mMEVb09wePkd;PuBXR2ozD?HPs2SZ7x&n_!Qq@>2*{qW+m1yK!pQ$4Y;;5w$u z#glGX^j-*eXtp?;cj*59na5uGOUF@L`6JJ!+_7*V63EHSpPo$^*S>x2#1$NUu}>62 z#o#muY@37=x-nJy_N-r`HZUtCStQo?f%$86sP62=_Ei#D&^nO7Q=xo2a}j>Lh+|7U zk0FcPgXbq9AuLFXLMPibhh}&1y%?flQ+izojxD)Cq~&tC7l^|_E;!xLV{Vf;-1eS$ zReeJEaOm_LdW15*?{I{B^jbgpsyZYt2XVN#dvNcL@0=;9o~PuYt;-u{PA#99KQ=vi zWVG7TRW9a@_DCq;b2)7aPnvna3B8tjtffu&wT6uz<i5G`v<|Fu?P(eyE14Jy-QEMj zK4{R|!87CXJWu-GPEm401&-koZ|MLo{k_iU&ps3G?$R^rQ^sc48R?ih9?zyVr7aQj zd2FdSj8UIbo|z5=N=_eT-U}O1XP2F2JlF>7^n_o(E2T%ToaqfDHMuJ)+f|(G@fzb7 zv{dc#R#ze#(Cndiz9md$HRKYL54U5NRS&fXd;z8_S$o%<M3Jwg0g!|#!AGvdDGSOt z9R}qgV>==AnoA<pRH4-2OTutSuED~Rk7>Gwv-aQsFkA`oqV<~rXdC{Ufu8=}KrcQU z*6Y>7L8S58F#D6Ahq|!(LN}bR2~Nk~#7O+bNQzX+6DWOH|A1LTNU-(ZAiqZI^pDv^ z_8s9J!uP~?Nm1#4%73k_EB{%2+V-^8rnl=a+8=P_94|QE;>x)`<sR}-&)2<g@Fo3e z|3?B#!F=#f!%@5|;mPnadgo)~6aDV7fs3xuzbCrzmwe2xKKH@@d2rqT=6(UH28S_l zzSzVIO8<m8;zf^}WkUas<ncL+PYIt+eB$_2Tjd(AMP3#XB*ETI4CW$sK_EWn#{KUS zFFQ?2!f{-a``=`rAYJUA0P`F%#61!h`u6`!h?8OVS>h9V$gZ%Ab`Nq`l4862-(j01 zBK#qVu-_zo>?cS&`w!3)|Ae{mUmV~AoSSPD0{aDWUfkRN=1X6P$6`?gk6JIB+hYy- zEHp7;x7e?s_8r!hex39{VchY010mmWlfU}wgR14rGaIB%jPL9V#{M8V4_tlKAmm*S zniPe;BE&Gq<M;d%Z;g&0XqY9w3sy(H-Ndj6=plGqAN|h${yu6AocNi*-S=?&C;R_? z|9AG^<}S5*z+>x$qlSl7=4|hpF<`J>i@^?BAjc%hIP;<Dc1Nqu>2iC#K0gB8a3mUw zw<X$*WGbD(S-;zj{=by)!=4}N)g&dON$y*jSv8D>&l2a!g{FM^{7SPg)-0^9T{dpr zx6)+U#xJWt^!j@GQY@KllGP@eN>4ur3{9;~mYcNHG}bPco2+DP7|j=!n_}+#a|NnR z&8*Lyy0DT=Cu6r(jOOz4O0rpBjTy~BUK(6oHTEo^#zwP%s@9#+?B>tAIphn=D+VTU zt6}hy>1(Jl_%n@{26$;;Ew+YWE7qjN)zx&9EU#>?u9llZ$(S*kVzz+^NmI)!O({Lu zl+%-#{%Vu1m78KIjd>Xxd(x#zgFmqb=ihifv)&Xslc=9EZW*`G_g=S@#j;MWtS!eH zr&d?et9V*Jy@E$EzNps7<)&0>DpSShAoeC|WZb4F(?D^0ve9IhE;s2q`fo~|<)%_H z_$2kI_0Njr5<oD``r0Z7S(`Q|sg|BobTTzF*_k{<wyktG@-?d$TErBlu;Mji=2p7F z31MQ2#5gvaMhufYm}OJQrW@1N5c(@LZ)VU6jSrW0XCpi3ne^myI!>vrBxC91YG<<C zbd>fOn`v$|rprxd2@5ccrhRIjuM36r<Z9Ew?@r;)fxB|kg>Kv?N(^9N9n)?)r`C*H zYev%vq?McQ(!!aQJ#k}tHPdu#rk^Y~J*9<{D+{Ns%2*QhKC|9i+9R&1`&RZ`F3_(r z*>n{-lY(_8_w4-3fv+YFf)YY@d1a4tE|4{O3*_a)b|%wkc2JI4&v_H@K7YE3mCRxO zb88^tU8H&i0`3vwO9RDIO)~ZzoF<bSd?kV(%*~uxX}Z#r#!OQOQ)(D^ZPHl7@SkzJ zDRGj?$y;lCUb)zOtQboHO@6G+S1dOJr9H~8LExERL!~`|U&Ez6kzXUFJ&9kVr9GKn zW2HTXU*n}cm0#ORdp3UUC>fO|eW2XzGz-_u&7xV@EjJS-(sUGmh&i@njtTT_V2=En z#2ooGg*ozT8gt~=4CctMS<I1NbC@H)<}pWpEntrPS}GZ%rU;ZvK#hCNnBr*S^laeT zEOCCTl$zyYvkXb<0u#@H+wLh!>BeB1tFiwh1X!uu>^>w94K}+v_aqvaS%DhjMCiE_ zGvEKXS~B|0`St>i&V0W_Ls8swdc2+lf63I{(_`tuy($f0Mc4}%#f0zKWDShn7%VsY zOO?=QxjFEIK*5CT0Iz{0B$zcS#vB)3pz_$QTXX3-D2o-Sb*M#1H1-JtevCf|Efa)* z;LikU+NO$|w<>AF7`=tQhHgJLDpns&5q$#6Xs&U2ub*6bo*9A>d!FTl=;|cbfhx2q z#>0r|Sx6tKdABG*?rG6d_H1fxBi$6H8XHhUY^o7Md2JQ4`|>soObLoPJ=++Jr7^-R z)`g2X3i`XpAeabOmLe1Ya4&(OpxR$H6ZF_X<E%Lee8bXkEq8k?aKtdjfq~JbTnh*3 zQJ`kTtZu3haKo5Q&+)-HwMI>p@ddOnO3tiQj8WJ|KI2v;I=hW>Ig7hvcywreEkb=i zbFHOYl))U!%_FTDOdXJBjhp9}FY$nsW2LlF;aHo6Vjf+s>{X~A0yutH4Qk%5t{+yL z&<9QLf|)2a2a5+!?&@^1)Ep|_0uOO!xdpNOzJWoOO0$CTr%ZHl20XwnXRb7)q5>hY z<~R+d0UdtGsR!%*!K^rUFUI&`xR2wF>zC2=U@UnDy_2i0InHoo93XX;uRqB#&!^a0 z$KjIau;hRxoUrzgLtmxY2U$G&3iZdJbE)6g><7$zsaeBifn#k3cr|8W)(-HrSmNy1 zTmV{+m!2bJ8if-mP+nLnJ%?W<p|FgCS#y%Z%%J8Jhv9|O9EKOpa2Q^=kHbu$aF)aH z!Z{AZ3o9Ik7gjmU6bk1#3@=>ZFuZU-hv9_>ILs^x4{{h@xX596VU5G^LW9FhqHu}B z@WMKW;e`zj!wZ|G=I|k!FY}w`7^<(BrE!$DOnyRj9XD4?&5=Xshxm;N{jgc$(AUfo z2YsZ}96bcx<~Jtjqh^VN?wBPGdcD*<atON1Z%oh|W{HE|G)o-xvC{K4{OF?PJWUpx z>Sj~OEI)Z*a>|6j8UNxbI4bnVpqVZAduNZxlRyFK<b~&Tk*Ze7g99}vDU+W=z(R=) zWp(m%q;8c3GQF3fZ#xO^@@*@7!p8Joj^BMweFM%K)Zexa7YiV8qF0}Hh}7QsS-St0 zrua@+i|IXyABn%mi^t_NWQM(neMZE&2Uim^NSzqidY#0@DpTSiCtGEPJ(f$YvOqeJ zQ?+135+Uztl_hMGeY#ba@2GdsA@bQ)y^}=ge`}T9cl7Tu`$wcG;wUBg7}I&wh%!a| z`!8B$Mx2PFt$Kl+Vt>>si=-;x7h@*8M502YRhI9lcd%XIwXJ$5>68AtRd(OezlZlf z_2|x1yH~Gl-82g89Y(dgd#GIP?&&tBH*Z|MvTdARzq+}-zF9JkZLe3fmjn0oao|B? zVXLuiOsqFHHXnIvp>bw&<>FN1+SMz&jh(Hl>!&uaJa(<IJNxMN&DlqHuWTCCO1Cj= zd>>r71^9{&&Tj7Bxcca}(Ov1T^u2s4t$CO3IdP*f`ot4YR32&E+<K_-WCgPr>v&a* zX*GNp>uXrcvl^GQC$8SyGEQyY*xY@5bHm_^Gfv>2SbYDoDw=j?>*@^)<n*JLZ$8o3 z-84{f?dtmG_6;<CY<pvK*SNX0X`DW`Xe{k)Zd<^M7C^~3Sa?sRr($*1YHKteZ(P0B zxO8pPFz3@SW+zS>jhn;T*3Fwc!(ClB)_1S&+`Lh_arGLXc-PYG;wwKPQ{++XMLdO_ zg{$NWem-)O7^HyHxgEGxk+A4S3Zrb6dQdj-Gs;c;5Rb!d<L)#ducBrf*G(k9406mY zS8(e62ld>84U>bO2hnl?qc_Z6C(v61qP$5S!ORv=K7;ZKxrja+IDE)Q-$iK$Ev^Fg z6rNrokKsuJ^|M&fHrBzfyQtqp-&ImEXFqI?^Mm>;zpTd}JcF0FIEzttO+4|r@Wc-v zzk(J2AgtVtZ;sJdi*Zi3Q6wDsy8_HLfP*dk;GsdD#Jz=!G0^q@9cAtw@!=Nz8h26e z&XG$P`w38t&&x1ze8a@k<M`e{%>m^M9LjBA1)Op}826mlG;j##g&TMEavH0?jM1Jj z`GWUmL2wS@{JITzYvjjJ=KQt`7(P1=dm6mFi0cygjKkhJzs0+H;8c1!#e0Br{<(8z zcaLjeR*&Oz)#Tet_~xVD#!tf>aRTOvL*69A=!?teP0VMQbm4sitKf3GgSs0Si_7J; zLt1xX=CfGA57P#TBJ;KXW{A$cUOXR*Ogb!#kN8OddF>Dh!yZOS3|Y|(GPgPW-<<;3 zt&<d?7|NJd7et^3{q;f&`pE#PVF!K)OBn&%9>HdtfCDX(^4Rv(?(T_hew~?}oo-!c OTGv@~T#9_E>wg3J&>da? literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..aec8a33389cb27a7e2e603ece720eb000fb9a0a9 GIT binary patch literal 11460 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�y2~;QCrOg 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ee5193d7c888fe2e82fb54342f2bb5d4c34b83a5 GIT binary patch literal 10240 zcmV+bDF4@YPew8T0RR9104M+e4gdfE07)1C04Jva0RR9100000000000000000000 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 G0000_1BZzK literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..483a7cdd4eb2e0aedd07727ead59f50818497a0b GIT binary patch literal 35660 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..189fea5e4ff5d5d66f2793d6753f702590add053 GIT binary patch literal 22632 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%0APg>lfK9+NEbfec22@_xp#;D&6-v*%$^l@Z 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 M000310ssF14|n8Ps{jB1 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..dc3bd4c040abd23afb59d2fe385f80e23b0cff41 GIT binary patch literal 20360 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9aa5f674daddca531e771b400501317fe476a722 GIT binary patch literal 34352 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d01450e91806b0c316af1228ce35f7a31788e77e GIT binary patch literal 22088 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	{um(f~Q9HvR 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7eeba377932c6914b32e8e3da14520c231559e77 GIT binary patch literal 19784 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc0185a12290672e819e1d62ac9a955311c60341 GIT binary patch literal 60784 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 DvjTj6 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..acf48e66893be130a57bb66b9506becef9b72f81 GIT binary patch literal 35464 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%0DBe5}C#ke#N-e*jJ!67~X2qoJ9|WECVv5YL zo|OF3Xxps&ht5W)UgH5X)SVqL4&f0-Ft#QkjA3F;GniX52f8rZ+R;y9oZb4Cm|=Gd zr#U{~HBR$68E0zWlLxD-_aqe)8+znQQ>Qr-OKJ!Gq)0C>lGXfLT#%sl>Qb4i(GAnn z3q03{0SvcHX_8#swM;iCMljwEvLAY>dEYTHW8FoNZFxQn)}p`giV4=$D}=q=@=lXf zRE<y0On1F56mPj;(mr=^puej6?jj9!8kO7{I2-zH_&pQURTwo)U}`-kFr6k!Qkjz? zy}u>nh4fa^S<oYTNYJy-M};+Zp$C0<SXW$Df(Bs}O5xs?S|c<c#1qO9jID_WeR$Xn zBnRqhUKzn8s(30pEb3nWJ%}uX=obYnt))BZI}waw0#mE!L4PtxZ^kgUW~dkCObx82 zDGNgvdM_$rPDpZCz;g0fL@>6N0Sw_0Mlgm6%qA1Rv?efhMhnNYmSqkLSpES49Ny;u M000310ssF14<m4J82|tP literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cf5ababf46d8d4d15ba26b1c72fdeb39500b3d1b GIT binary patch literal 30244 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4346f173ce347459e433f45d1fb06cfc74bc8eca GIT binary patch literal 44496 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..d2cfe4e319168499f33686f3b1524addca1a596d GIT binary patch literal 25352 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d0178f421501dbac3424821b480c7e58b1dd9b48 GIT binary patch literal 21944 zcmV)4K+3;&Pew8T0RR9109CjE4gdfE0IpO3099T90RR9100000000000000000000 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 PQtWEZ=5h_SOlTAUVvCDK literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f2c3ebaec0e7306f4ea36c98f43e301c0a3308b3 GIT binary patch literal 47640 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 XQglzIQbW0WGIxjiEcVqP&vyPh#XzB! literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..1184295def56183abcff437cd382b3b295a8bac0 GIT binary patch literal 26228 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 X(ymb24FE{wN(KM`00962|Nj6Ffm3-< literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..aa05e142c4293315104e02adac9ed65dff454deb GIT binary patch literal 22748 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8acb365453b7590425ad0fe65c41a5488d3d64e9 GIT binary patch literal 69520 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%0ARlyh{tY7?GU*2VZ9W&j)?g>A@b9!9`J|#t?B! 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%0Dd|4rLbv|Lm^2UjLSuRddForu%~Gk{yjR?}w? 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9f8228fc38b5d404b5573cad5b33f28dbfb47cf7 GIT binary patch literal 38112 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 I0ssF14_>G65dZ)H literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3f71eb7e9c0568f6144e45c59b3000ed3dda7d4 GIT binary patch literal 32464 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a645df64e5114034e6596c79103b380dfcbc8061 GIT binary patch literal 39308 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 KZW7Lh*Zl{xmaf16 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..87d4f223eaad873324b3e0d42a9a0cf211929ed6 GIT binary patch literal 22324 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 S)VDhlcw(sl0RRF2{{RnpDA*?e literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..83b49962aa8353a7eb7cdea57fe843af4dc06f88 GIT binary patch literal 19720 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 bXssLhNj(c?!93G5;NEIzo9EzaliuzI?ubzb literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c38359cca652bf7fc7e7f9581df11e3267a375a GIT binary patch literal 40992 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 AJpcdz literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..959746ef56fb302f4f8381cd199acb54ab7db0ed GIT binary patch literal 22844 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 Ocw(sl0RRF2{{RmnPtGy` literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3ea522a6a2da7b5bfcde8aa4cc4825593e3f857 GIT binary patch literal 20096 zcmV)0K+eB+Pew8T0RR9108W4a4gdfE0HAyT08S?W0RR9100000000000000000000 z00006U;u+k2xtkH7ZC^wf{HkS<9-1)0we>26bpe&00bZfjZz1LTMU5}8-9xg+!&`} z;{aF~`4UDUuyFuD()VNjKOeV72wq@T)^C9f<(yP&mscVAxG#*ZGQFJoNFt$<Qfe5z z?-j&1HjBj)H4+}Y0z=`_Fn^8`3Q{BmUkg9}$EGa^iZ%Z6Ve!t*^HgM``1<9gSExy* z9SBVm!Wq~$@+UcY2l%!5udd$J%Zq#$9C2{m9aR@iU6M+r0SE%t07ZK$M)jiHrmnto zsjG4oF7nsLygEN+OrijqNEVqW&Sw{hroL=l57w^TI?YFamb3o7tF&{IT5TFHo*^^_ zJm7@$<fum8VXN4XU3=R7A>%9l|JL0&qzSMoC4uaG{HgB46a7JZyL*>3HxpPONfKg_ zhtN!TWPu$>Gv9x{pK9k^dhdV9X2neuAj@(U2heVSz)|F&lGGh=e+gEd&5BktE2iD- zfN_iet7=-Sc$Z3%>22GNlAS(gS%DQ;Kky-e3LT40rkcB&LtX8l;PUolZBW8mW|9L| zU&fSB=q;cTHA1|ug|`1$QG%zLWf99E_T{jgp^`<DC%>pE>U7oQa0uJ>cNUF#+exY< zH$^~^+C9`+jbzzz5SBv@04mH2<i!Kzu6nMoE#CLt`%C_W^4K#c70ERfI&3vp`+?&@ zJA%LZ|9SAc&F~No%Iphlb%U@MQGjP(dmU%rflIm)SRBHnSXz+?wRV@dE7T%P+W02S zFMn^U*1o@BfT#=7MLA11Lx;$VHN?x^&9zrv(OkKBfB$0l?~(*|NeEbwBWNMf65v3B zihu(Ef@3B*P;v^HT*$OZ${HDPPDfvkp=hosud7oi+A@~e#?o31C8ntx6^8E>8>U*E z;S8s7Hzx_506VYh5YyJJx%aJcFa{w=O>z@_!fT0l^5ZWD0Oc#$LIFVEeG&jRzMnMs zr#BGRN1g!q3G>4}cTV`TaRDIa5yt<MhQ4Bh0c^h02LSN5=Kz3_T5!@-zfJ~#=QMDh zj5vLBnlKP-j0Q^_*6rK9eLJ|rJGPTMvlsV#>;1F&V*|`%IJE*jw@o{-)4SrTRQx51 z-+%T~XZQcfV@D1h+`n({wvFo+{=Z<I0BD*CJ^@W>=?xM937r4hid-WlSUJ_o|8&s> zKAqFNh7pP}p^PVKmKSAJH*MDs=Mk*#m>%w_GJmHRwT{7fiM<Y>d&cLFytDy^3Fo_t zg%3#1P5#N_u1C0g6L~`DUPe_P1wdHD!GNd#Kz03;-0i2x#5O(8=>TQ%M6CHgPduG3 zb>Tz^dxV<yGa#y^;E6zMJ@CZ93jF<wB!8McoMKoGZ$3v+ab@>_<Etp7&koG|xK-xa zP*Jn;iXI#LRRjnT9)ZH|HaI}}mFFN+lZjiET=t`of|Ng58)rx4W=a^xwV5Xa3?R|G z0@-*K$x0w6!HF1A^(0VH!K$*80F~4_ehU%TGK-9fBNQn8vi-5?H8NC^{5qyrF2Av; z<_^=_xO3Ml*0f05WkE??ngMeIoFd6l1wrR#;>iK4UnNA=iX{Q8Y%h=HKSF01?`_d) zVy6CZaXe<p4Aq8kQP>7)Hv77)nlN&8q>^aDP#kR}C{+e*(77$G+oS}|M@BXGZS+T8 zK0s#}fliO0z#gscEKmKDC{D#Lil-74_fB{Lo8_rO@dIqclk(n~h_{T&U&)jx#XF$} zsNrNW{3CQ;94&BaB$QJ{g#aB)gQxFeCEvZBj+ykMKNPKL_Uric?KR+}xbz#=p@KTz zE9xPIs0FIsdKAYRs^UhJixI6U$mqo@dwvpIr2Im=VH1s$f6*NPu=homwnjxvR3@)E z$5`bvf@4;IL)sGsp)@1r`}2Sv8x=lz7pazjfpQ6y32_ZbMD4d`VUtu;4dwJ-H*!98 zcgj2ssGz^(X+%XofJwk$78tMy1l9x=)&&kW1PN>kJZuTlwqBqidS{mpeqDa}J40_{ zgEu#l?2v6@#R+Tz2D`w3Lm=Q3SP%pbT!IAL0uLTRsss|WP$AepQB%?Bns?)Y@xucS z=MTXhbq4L48U`@sF%-7u9nE9;LqbmMY>13cVYJ4uRhCzWc-4BSMXAY8ABzFE3|8a7 zW#pt4i^yB=Tw#Oh7p(6%{XN~OF<!msnE+Z$28ReW75DQgiRM`AnZo*sTweU*X;e(6 zGibyjI9%KDarrgLq#1GH@}g)Rc}_8}9=_<A0l`F~Uy2!=(zvuPApzQw@q1(&(NtoS zNPt=3X~2(4uj5aAuzlcu;=H|OAqgh<KykqRIvxX(h$Ws9k(BKR!I4%<Ch|(Xt3Y<d zQxeKqD3ldC63IH|9jD}DB-W8Ov&@8}uIWx850W2dHNSGAERx(MO|5WilG0p8V~RbH zbAw6bCN`50(ssx0%GV$-0l<i@;c)SSg7$z>x+KhFgI2|v<SU0UGUowKmpvYDex;G> z)P>p5aPebad?MZQ!qfISXCLLUjF+HjXd85V6VX~zL%edyURj>*RWB6YIq29cV8&}r zt%6xE)`QktmQ^xSJCbM^!Zy@g46@G$qly+<w^QF4yN=2aH2C5##N>WxKPH%?wz}hF zz?;O3<PA1t0)%Fh=!td2*JskwjnQe$5QxelhdW`9NqcSw70@ccBq?2xnjWDy9GC`0 zgRwXoQAQvB7+`PSZh#q}7cvwOjH(ckvA}!+B7-nRfmszIG8dRHggg|MD6pzRM0N${ zdqO&49|aDo5RpTH`H_%OI7We!Dn#T|U@i&?!WjyjS0N%70&jT<=6L2;zXe#@T|^GD zgB$2V5=4W*;Vcul%0w#@NpLslJJd3TR;JL)6rM_hx6ELa8GL27(8PlqB70AY>som2 z{MGm|wo!4&06^f0t+lEXzx8@?3V`Ol+3*2mTMUqSdwsNF2n+;ucGn<v-;jcRlYh)o zc3xcz0Dz5^!#&_7`;R`!{K95dO{NLIGQuN>2Q8G4<#xqD|HyG~-lq7{m`v`K=cw@c z(%P1}p_Nn3W%<$!MPZ1{z(YAyNKh;&>CPLANXWRdh%Bx0)VjL5y6gNBzD%9rOG`6% z`sOx^(fj5Vs0^l}JlvIVDaFF{nv|fePeQsFyhM##f`w#7TcloGAR-I&1w<CIe&zF7 ze58gCI~AEv(+k3P>OB5mV4eC1=Q$TtK>!%|gl)n^J%s{=?`%b@ez0Ny2DyId-{^+* zosvP5Pth>>Yc*8}D^`@E^)k^3uO?1GZlI63trn0*vgkDt^LTj;p}^gH>4zy<Vy_bm z3^a2jPE3A0Nk1)0LPoR<NW<g8nkQ(R@RX@$FyNh1jXg996)l=&v^>-{r4B+_v+|Il z{Pu)sajGoV`^nY5ACj?4J+!&(Xq9gyjpWe=0<NsQcEbAEB3>a@d-D`(v$jA(Evrhq zQg0$&EFP1B^*{lS$cgV_=-@h;DhTkPj#9IvqY<f;*n@^%4fU0K*C<_|;R5PD-NAON z2?R++i~ZtNjDpdAOEGPA*MKWR)a&?+7)`&lZE+bmTX7<aIFad=8S24Ulvy@!V5(er z)F9#nsL$_ZZ9;V%8<9YTdMYm^n>-ps)2ew63TI~0spsJ8Jr@J!!m16kN${~tm-9u7 z`fRHI!h<SPtj?NWBP&LCGL3^y3~Z}7AwZPwbtkem5w?rCT6wms^?^>xOdEiUCJRcn z%3MNyn<`t3o{@8r)K*Bhp{m`2r?05Uxx|Et4vy}GD$9x0+QNhb!#=Iaz`mv_ikGcm zktcEr18LYq6aI(#jH;8opMWaw!}cwPo6hUwS5ZoPaFJX5-vSXShFCB<?qUD{MsY6A zPWtV3tFz+5Bstu%z#@oJD+nk>!)V0kcD+vHetT=Guc+R7%8$_d7GIS{N8clj<1Tw_ zVftZW7K!?0um8*l+Me9P<G<t4tn(hOQl&OTN>_u6ZSay=E$3a#QItUUEHJ0()OO!F zX>$_`xfPTCoqgE4$5svl%NlK|$P-<n4cg7B#hpPrQ4NbAI*El5Yvg|N<8HsyXVm|O zxy2FBeqbh))~Qw%S$i*SpU7};`&;Mo+)9Ji>4fT{RhHAC>$K#zTYCjy+n2H?!!-Ya z!K^A2T{V&4Dne^v4;CuAm)=CzI5eeBnJCiGp8*L1-hGDZCkM@bV#~^7!cVX9Pda^T z6e3FVNC!|Z15+G~$H%;#T#eU5iJu2PfjzLR!>3T6e@f=bpeqD(KLqM|TxHA=$pb*x zCnJVEe-}g#F)EuUV!Fe<yKTZ-%M7dmfg9Hb@drTiMn_*riWYZFJ_fe3(@*@0m(KlZ zOoiJNQ?Oe(XS6sX&d9cP+(wwOr;n%W@HJkis%nXdpewFfHxRXj<YoeCUQsp%K*>xT zrgNzRn1`^L8q?ycAQ}W^=}swOyJ(9#J;Z$YW;4ZZxoPA$4*=+mz-5a3LS@vYpCy4b zw$bShq~)M-%dP;LqC-rm1Qd>_bNy5K>B)?&^G$2ef)wv9kT?h?fi#52+273l%)>(I z+QncHn~L7`x8j^lSCxPTFVzRjmMmgZMUvg8aIy|7sxQ3s(r0;FN4yKG_=BCA4erQs zU|VM_Go)=`XCNo~<A3_;PH7HPj$B(|ucEOo&YmZrRMLLTDRV3D+RbcHw`7W0EEQ?L zz>FuET`$f-UbIN7wGI0KY^-n)nVTU?EvA{zL6bb7ANg&Rlaz%*Ldzi4JIPh??q575 z3#!d^Nj8hlo3#f4f^_h4;kl2pUn^2hC#j&fg~dq0!p++>Sbuy|zqWuNjjQNj|Ie6H zhi1UhHW0I!em{?knKUFKD+w+JY#C)m92p@*&m4S8by!n1K;+n26iT<y5qUxFG5kp6 zZ+~P|lXcWc;#Y2?RAs2`w}@B_;S9fx7|w*LHNv546PqL-p^a|^yo(b0WOWFbOEgoU zTTqP^M%nxMGa&s8RN|!(B7b+LO5O+W6F!T04r~o8h5vc!T+1*P`l^80Q~1_X>)Z8~ zuPy#hUTX|1t0EkF1ZE?sB~wg9(W&*Rw<g!C;;`5j<*(?qVM92YW^TA*BAY*S*l;L$ zOEN~-HuwaeilrUG;d=$O-K%o%ewRfrp~^>PD{2;?8599GR?^uIiz|p2^Haj8k^wO~ zw-dd%ZzyUmO=}<WkKWATrXm*52rkJVIXV{MazW8HqMu;VGJ#^xC_M=5m!bB<o%v@C z-aO3>d@x=4=3e$A!U1eiI3u(>GE5ORrz^H#afvd1@lts!yI67p6p#Og%7I^QvBsAb z-SlTRh~KShLQsPl@8+flUBqvWwHmQBE$qdD3TPuB1LGKCLCz&Vj7;>@M6M1lwF<>Q z=Yox@e~9UF9b63YI{i&1FF*u_g?b<+cA+LgrR>;;k%78~isHk3&(*Up-38SL{!_|F zt}hA4<MDj_C^_qFgH=_aKunC<W;o}Oe?_bytWNQm*oR(ZV1#Bbn@-HVfwuS+!)%6! zOtv)RhMc*NpNs0s&|J#u86N<TH7TQH_!+r0&^$!!Aj|QdHlPMy$ZLr5Z1z^mfM#7I zv+Ihz#rM#Nc**79+N|Iscw%!?+^w97vLO7no?}m9#>qG$*_AJi4?8h#6^u?a5@r~7 zG6rV5RvoyO|Iktz%8T2!*Dr@q%<)uAm`XDqXix$vGhLra6>@1Q)t|~@N6oVh*8LPg z7MoqQ4KyF}q@VKRx_j9_N9PjjDO6TaHpR72Ar?9rOlpH?<u)1XqZ0YlZh381sJq`0 zii^s0F@6%9?86)^8i_0KEbeIrB=}tLgsNX7in1u1KGVjUBM#m?{hnag^V~%@*wwyg zHA@`v*<R5>a>Dxp87-+TRN@84R%jX<K&r(u1Y?NTOGxU@aJSAWd#5O!p2mNSNOY!1 zBA2`Y$FS&sOviVY1o)|UqXT<HI6B`ar$wX=5Mc;EQC^sMaM7GIT_!RP78ahhA~Nqs z5XzY!E*Oj4%N_VbGZHmjq@zpaK2<>TfQ(=MLaZ7Eqgj}?mCsqqPzUa&kB+edI(x6> z_?g{~<ZmNheroF4tF;fliUc2wbkxUZL5&f*Eb%%2!yE6SO)W=x<E*pP;-`_r0+^AO zQtV4$at@;%A)vwi9Vo_<ls8J@WaYKeHy27={;dBP;9GhA>YBZ+hwni!I*Tmh7D-Ac z-Tjf_v$ZVUohIkYc<gJT_nvd;iiugF2g{<-50=Vik+677_%;K^Ov8V3N~;m@<hWIq zN1A;kl;>8Oly)0@@HT^IpQdc<V_-EiyC!Ho1muv0<Z2$Q<Dj^T|Kw3q15#fx#R@F> ztNIsD(v|xVal1jJ@rU1VYx`O&Fl*I+VXxCJd=@ORu;!DZm1DJz3%3?eQMaQd6+R_a zHU~oM(8V$^4y4*N7I0F~(je8uVsVIx_)t8L|Hu5w*Be=^K*A!-N5;-tPHU$fd55ia zvZ56#t_G<a;FyF(w){Beo0udm22tuI!GdY-V(?TaoI7B@byD61u}m-FynCgi7))OB zxU1s(ECfMghI+5JL@mc68Bv$_j{W`M6O(gxU=N|ojS#+Rz5!phKJzDX-ern(-Yur3 zdR&J97`Yw~VCKg;7CX3#GOb`rcGI-@3$c;#X7AaHe0lM(!orZXMX0(X-V!L{4Nju` z=#wgjC)A;we%o;)&!CeeD=Sy1;D+ASrg5Q_y-)Z(8}fBS<lc$gJ8<x$Fw5Kq52!mC z_Jj=|=Ua?1bAoM9d2gl?SIC_FQm-A|L}S7nT7i-N;EzW7=IBerk7|vGcfW8jE+rL$ zL_^r86D^NR+)i7^nuQi+P-mYUe5o)A>t#{n3?ThL*SlJh%kOJL6tFZ|HK<-)bOCEN z6z4&MdgsXRrS+XMLY>Hry==f4-YlA6VCQmpYcKUbs;*zMe)jP?M*U-D`)xyxbxL`) zq6C9m<n9)gZbuc;O7n9fi-;m}Ysveb)s$FJa9)ntUb}On#i~7!_l>(3`z#}SbQ#~4 zZ!Ev~CZQY@j2EHoa^mRNEl++-1A4ge9N>AN<PGs#KIlKC42HGS@bG$Q0Af|Um8#*u zVNq}1PXSgXVMtv>#@&dtygvwki&f)zO3xXon2{ziFje%_yADo~r=zc9W}cFSc6S(! zg(L)%p3&Y%hUYHM%6V(<C=s6xA^mOf<dJoyWDA41F~5J(4vJ76McmK^<$#wQ@;d8# zyNK*qC37S>SA0%*Zd%xc0+E$KqY<*5L|iMnkEVJyO#%Vjw1#X%cSPG{`7zeC)Je+; z@Ps$pEBqM~PdFvt{f85=ON3f9KbIP<GwYOR9(QY$KTlJ#>7A}v;=!M_XqnD+oZ@x5 z?zz7IV&%hjF)}aa4=d~8RyzJnPT;3wR93!A8m45!4`}h&<kXa~L^LChDiC-^i}rdk z+gVo&r%OS#WW*(<5QwKlaj|6Q@_i)X#^>OiOO>oVQMIG>xi3DR(rx^EWK@!Es}-sW zb)B+DZ1XNhb0v~y4~z_UzXlq$NjI#KkNNm&!(0V$>NI;sI2v{tI7JK9?JCP?m3UZ3 zeZ?VIeZhm>!${Dg^_sS!$~-hYs}v?$qCN5yDn1)bM1~`=wzcj9o{^4@$9#{4q4g)i zDBmbM$D(}0`KRje3VW&n+0^g)O2_r|>x3!K#BXYNcSN-K42&;1IltdYBcU})xegkw zLHt>EW|t4n5?$Y_cL{GL;xtmxLDcn%0tq12F~DnkEJ8O$?<f$k)1m=Hw%*MICQSPG z^oNA{%FhbAA5a}ERg*ur`1&UZ!n0_J1D_<$OZg2h1uur!eekp2N8Uty(7XyaeqhdK zZY?Eg!kg65ekS9xgYsoBK>OrW1*0-Um+{$T7p^$v;6@Gn1#3A!I*e_ccPZ4g9s>Vi z7TUO-TLLPWA0b0BtAB8#+|qIv<~5O#mV7wEz@Q_fz*Gq!>De}-VtLJVJ2>e6MpshV zYVUb7%2gBn_G0N-%a);hFRGG?Y#GNg#wiC9nh+h(mNpg5!Ddv_+byr63M$&g<L?_I z&i$j(2h^1&59}u?@9=i_Q?kb5D3nQio6c@`Kbf$*d?{5w=++Gn7a-GdD{5>;hP_qF zbtb^{zcLCnBJJMdCofrSb*#MO^UG~U%m$pz1%n1FZWCt3`TW{@EOJ+6hdGxNa7Z)| z+bm0#uYV!-j-5YHn_exn9%P;%j+Q48^y8ol{G5qDDCxv-i0E_E)UcnlvS4WaqNx6u zbJHrXLF*}`NrPU_QG~IjwYTlb+Q6C^%$&x`>^tp!9UpXlNF_GyBjlIk&Uh0*9r9>+ zKmD~RiS=$$+ng?3tMubO+ZeJ7nuye1ItpQ8nhUCX@0n~xDBf;<w;O;mja-SNEt0_4 z0!PytkNzHQR+!3$!$2k;eH;uQA`M79WE8PCsJeTN5?{rAYtoxh87!D!Q8&THNKz%h z82VEPhNof`AGED)nv>^7Po{|iE!93zch2vOF9PWa|Kz`ENX~P&-DbaH=caXWdvUwS z3;mO5sv!bX1YQR!T}l@bD&|kPS&-S{;}cO(-gHBdKr)L7I~6&|-|?fo2+8Bf-yl&| zN=7Y;2SL(ryAAVYI^gVoE!FkAx`6H`?IMt{+6LHYivW>rr3j1D228@YJ-p75ECW;9 z;t0(+x#3`5z*$-m?B%w+d{bv<aU?FMmCsf}cLIiWh8~YT^IxrTfVwOczMf+!{*4`p zTv;8kXL)lZ>EC9DD;EQheiP=!y~uzEsBdwwJ36<mzZ(lQd2-(E&nTXk+ajFe&_m_6 zUwo$Pr<&*Ej$*fv=0Z|w-R4d8REnW{!wAtZ&o~wuNcXJlt(G6L8N-jS!LMxq;qlJd zpYb2rA`YTmWmpeVQ8DI$wB+-eh23#_6O`eyVb7lg2C}R0xs$E-Ys!JT#*Xd@>h=v_ zVLbwpAY?8ZCRg;+?9k>=Wx~sbWQ>N9f!F=yraTyFaYnW@i5!lsjOOG63m?CMHgeNn z39!fFfVIs875@aa$a&6*-x@YUT!?hEuvuXnU<8<z%qpE;p^ticNp+qyoE<Oy2SQrh zK+|(CiXGKS4Lf2|U5wN7w@0UZ*AKv|d;vzSPewS%&<$+@$*@J!x)7H9ZBRl8I(I(? zs_FnrU>xnCTnvE_9;;X#z}y0hYN`S25DhSs+KIf&Vb+h%w;(A@F-|s1(7}RBXZ5w1 zxTK_?(yXRkdD<1)rGm)Aez{M*iAvy;yPWjmJ=>S>f-c+RSMT=J#n0etak`+u(y)}x z&aKaYlch~8?y=XC5-?Mozy~`Nen2eZ!b(U68Lb0s$~BZ+oc>M1TyJ%zrAdr91nXCQ z76k2fQGe2xxkG39F@e<Kf*|$)ia17WM&tT)n1c-6*7_i(I3aen%Hsfqb3p~<sc#db zlLdoYw=%1B(=0aA_RHA4@gTEL_a=^tL9H%KJlQOZ1Ei2%W}W(WGpH8#&X$%!Tem{6 zW>h)Eg$$7v!GxG)MCm%Ch=_waCJJ6Xe2QC$5wJ_X0s-gaX&0ZY_evoW+)+ZsCB>F3 zoyZS{@*I<B7dJJJO=+QLY7Bn4Zi8+;w`Jx!qwZ*!vqRnhEPHxDFjpRzlx|DMUS%bK z@ex<}+|?oGrOz!c__p*fpue=Xx}>7mW|-1vl&d-02jQ;$HdDYgTeSFtGpgVSI_=B5 z$8jzz#cj2z!Xq|gxCC6F&H9KZp2YZ24`>u&AyAfUyF0~2dH^F9LSA_kd+`7;J)Knl zSLm`A*S+VU)m%;fP~IqkCXh^XmL9dsS%n)4*15C$Y{?u+qwQ1bAZ)&ekJlLI5CBYQ zjK2X7s6fftWn~1>pvWo^A8vs$?sIsF$K(MXZGXM!N3p{&vvMVZVddW@7F#RsYtM5D zgmp;DV8)8nBuw`YT-`k@`63Uf3;+YV2nXr`Y03}7Ia2}w0)ybp7WoVX%VV+j>Innv zPlLeW6i0TnU`{VBJC@>j@BzRLL|R&Ob{1R*<><n$2j<L0Z8!!p+Att)A~N5N2kBRN zrC{y)-ZRhTuhp20K3in91P!~;xU{6qW}SIm%!7LYns!53foUb?)Eq%zxGmOP*+OM6 z>*LY?H<I&a_8pPpcUnTELsEpqaRe3xAf>_u3dJbW15lI?qPAB`NRe)KZ<345j{fmo zMfhnY<pH+dx`vy!v<gQyFIZDEmLCb*d)$5fK6iO=nSqC|Z5_JyzXgqH?^bwPUwVe1 ze|vvk>+kQEJ=PG&Z)bK%OHM4V%)O#&T7sy|OrH#|Jq6r&rmFM-7A2QHX7{+~;VrE| zvwE?5k!YJgmvt7J9$3>70C1}WyzZy<n{?9v6o~-?E?&-A+`D`F{%XFSgM9wJsZZD7 z7`mSCUsj*^W+02h0x34M`YEmH<IQt9JQ=$yWz4HzFSitC>5QLO->k@Px+)sw=|<eP z`Po)ky?OL?(Il$ri4U{58NM?1TFXPcT=WVD4ui;4&K-$<miM#bcLePGIpFp+!Ck)% z&63nD&ArU-a3uu<?rN>!Lz&3d^jl>@KnaM&A1oQ9dw$%^;S03Varrlx{nS^s>t5|7 zvl8OK&Qq{8%M!n4e5ltgC=+ZU!Rvm=i9n#Y64>EDGykMR8tp8@IUY~Ynb%QYs{MYA zZj~PVeBl!b#q!YiB}-N+uSnXv_CEb|j3ea21z*#I&;w}#3fNIoR*v5OE>t-ql{#|6 zEA_f3vqRbT{Jv#oKWgRhdk$R!!;nyv|3yMb@z^kndH0ZV8EBZ)iE;mD2vxBQ7zRMs zjD9`lKI<jeEVb6{Jzal6+t^vlhlL4<t*)m%-$c9KT+IRj2xRNu0bm<0WVc}10LL&b zmp=7V_m!V5Q(j<0I>Nc}#&!J-3d*p#Ft~r$hP;>aqsw|_q1M%?e@_qx%iR-<<R=v> z^J>cJP3pP>>sll88_^&Om*O(}%hu<)oJo)_4a|8p_b#bESh%bU;qKD&XUZ14P#77E zj&Pq#g$jNJ+QWU}t@p?vOZpsNdM1TH!i#gd5Mq;F6#YNG4oJ#c7>~LzLT7`M3<XIg zP(ud)zJg_4h~#C#Od)!iFLYR;iGS@}H-1TRn77#b$f|WzYFo^zk`U=`8*>>iQCEQ& z&OsUgT4vj?hXvZ_1O##a+wKDy?upNeV5~(VLSZ??fk|7KMT7v{r4#Ylqqv?^rs)Gt zC!b0NY6x+*p81M%CEok^SD}@qKs`lDVDlIt`~B{rG>ng!OJYAKAYjiM-vIMy&-$=x zH=hSZc&#J`P-v7b>!QT553uz4+F0nbi#3Nh7B6d%H)=0V2-;d}AK-Q&+%<Zv0^+R2 z2whg9siqk$J?K1^wVN?;`5i`~xE#=GA^?VSH&bc+GM3AMz>Hzb2>8US;3!Hy4{iYk zC_61ZE+DG`s%rn(DZU?Hh?YY7k(bv_?U~pq?^g7&_#S+UlPR~30geb@nd@d~nGPD| zU9zr};mFr(4U7?m%r+M$__bt-9$m}7QVQ~gtacTk&-!(L<FdYGy&HMhuQ&=REk3?z z+b(e<h{y4*{IYsrpq!V8NP`ef!60bF@KkO8IA;@>gz3Ki+5<zi;wY%EZvqAa+_+mA zSh#7dmxs`NB*Jp(e!Pe4w|=#o7tTUpGaZ|KnGIrP6BQt!!}0%r8zx;RKk#6zg`VNx z_B-qYe`|zg0%6ERq^TxOxykaF730pc7{Ax3Igf70Bkiwn1t%I(Q;OaHQ&sWfuy{q? zS@3=o6cD=ULBj8}!wKb{D~c;cB{9dq{s-o$_gCr%)s3L-CHqTiHpM|`ecV-|)BmS4 zTmnsig&*Pu1E}99Z<1R_XJtC=YK;r?;r^T*V~8H%eg96AFoO4|)*3S`nX1rKPmmK9 z8r~nx*4C)WIEk12ISeBw)AX7Pfy5rIU+lW5vh3_m7XLC=Smark^6;g*Q5`7Ya%QUJ z=z<OtLUIvPd?w6wH<Xl@6J9FsMK1(r-$4YiW7p{f%(%FqPUq>Nt8!L<k%;koO-_M- z$x6eP8I^ziMEnc$8X6T~nQ54+oSNUr1H^FJ@y)P^kWju_S`Y`4Ku~#Do4GS>AP`@t z{yJ7_a0`}SfI&)k<@hf10_(_;6Ofd5x!9%L3BZ||x^`zNKwVF<f)L)EN;PdCFxxmf zb)GUkEs0r03)Iug@eY9#%FDpn{0{1_C0{abe0q&;=X7=8FP$cT;7{y-2Yti{p|p2F zGj>yB-?Gu@-q*M#Ph1f?Lk-@t7c-g@X>X-kHsi$GDq)#GJovmZX|XS~s5~H6<VEfu z|Nc)YGy(4U_90m-=4Pr(3$nfAh7Erm;3aF4uzi*>f!iW2vJrzWp*=EBw^}<{eoHG@ zAe$+-9(u`N6g<9RL((=F>N?@ibLM1AEmIlGF^O=TuM*rziwX4zSn}T_#dD9=N)vKo z4Ivqo5u=jo<iC?~8fyF%s-|Q(B&+%P2ap1A7Qz-K*lF?veq5VUk}Pz9>0{|*UQ~{Y zPCO)wncX5@OBM@BN%6(*ONl9J6nF=w%vBP@ycg99{)4Aec~Bl0VR1yGbJYGn6h`oM z)<FKDDII2g!Tzu0|5mtun3g5~qEn5?$xhPvtAnRs_r{sCnkCxhbPJdB_*%dJF308A zUbH>WF%Nur=IV+iMoqHLsM3<tgq&z=y(-Y(wsgJR@*V5fpFh&VbKDdq@#9*uN=k_E zm_yNUXi{eBvhWgIVdKpbR0v&{G+rpGm=OyW2+*L}u*J9~WQyIh7R`ue2$1_gh(_$X zuyulk!m`|&ur%g=6c%v#Tb*i10IT1z{cO8NCp`V8Q84Gvg-XZcTeJF6QK=$nr)dwz zA~4E%Cx@hsX1waK@Xdn7qw2DaM|lu<_O);;8G**j;qRDTdSb0~W%4=hB$?cFYN?id z(>(m-?!WJQMb=n9GtEo|Z)s$UAQIy1R^Eqs&O(oCb=q8)a<d8{l4Vlk@jWq+#zhGj zai~W=8sru2SETWi%JWa!oj!6tD{#Hl|EiR@Ki`yV9uqMG-}&qPMc*0yYwI>9s(B6; zrpTNsY8iBA&&fA`W+Lc-)R0IB!z_7gwCq0|s+<g%RCEI7zL2_SR9#-Z`^Ep_*likh zWSV5o*0!w)g@kpE?EzBHfe@r)9IOF0ipYI%rnv^i0wCejar+yu8HI(ChHtA8UaDNM z*vz|LXhFQsEq&i7<h@9DLtQd6hs23W+#g|GqdWj6=0d4(Stn-Q8KY~+FaWlj$053u z0>kLARDg1M9@3{oxEKeKld;1j{8YdKC(Uhee|3rMTEW+;UbNho<>aYwD~)vr{u8E> z-ZL_3YI2&et(YUCQ^lVg+NxTl+Yq=lf8-F^N#L1(JqKb8VEp>k%!<3;(2RI`jl<LO zY}=~X#+>|(Z$w*3HziWtkz+PY_wgbS&K}7~ZZr`0cCUT!?Js_&VLf8)T+{#50!kYk zkxz8Nw7=N9<{YA$3MXCFU(XZ@h=BEUsvNRsF_LF&zhR4UI|o72lpKdF#dm0!jtVF) zRB*}am?}>*8aGKvLcc-35rDE5yn0b&5tWx9{4`bDuP48i5-BgF9vPC4pleM$q0Uan z*UYf3sy<V9gH#mav80|^F_wHqke*$cNokrSN|Q2wm?JigGHGO1IceCY9(`<7wB={i z5pt9f+RaIAvk^>Aa;9|h7WtpA&C)8#aYM4wh^KJA$XI4nI&RsO)$gWkTS}z2y(E@; zq_X{516fT}+$^2QxqeYpDiRici7902^WQ0@{?zgQK?Jpz{GXIYrJxnsTgDJkvRq?b z8Wo3y8E(x7b6zpJ!)0YkS*@vO0ly;;Od3N6BY5gRMoMEIu?kb>7|nu!RE2=b5$&?v zTbB#y1gr3j#pgqBa}39BT{i@+sTRF9RZWf%77RSGgA_)Z@#L&mRTi=Asx-~*dm=R| zB)OnmSouY^uk__tC-K6uEmBQ^%AA(OU{M>$z+XNjGVVX3Tv+qYd?+N4?UQCWJuk~# zqJyto6qPDk*R}oZi+)|7S#jxrLa%p8(<MK^CQ1IlxcFp)yIOjf4chIYj4Ws7{{5Lk zd3S2l)u{x?{vu_;qW7<6(lx%{z@0?pRML*zTc55^z)0QSg@-yCE4=5fu>|X%Ak{-v z?>J~KE9HepbFQ$&`)+-7Pr`F@&iBC#UzmW9&1ILLYpJRBy>|7kBqg0p`D#;sOhBQa z^z*84D9p#7TJ70BEJ`=~@fv_Abh0~D*!*djy%mbHfRNPs^{Hd^zLr}0hIEJ>dDth% z>-2AuDV%BsjD{NEs?EU#v$6T}vLG0I-0dI+IBeYJguxS!K3P>fdvagX#8UwDZ)o8P z-TLXu_vxMSSt8Ku;X&8A*C9V=Wlvf>vqd<}W1^n+?+2x_$@d0olU>C<;<fnXX-JU@ zu3VW>s?!SvP7?=nVD9-q6#9T7rd!pGBV1}$_*vuzr6revRtkW{^OI1=EK%16cF}kO zAf2QaHiE;9JYds=pT_7IKw<p12)y7^(JzJUag7$7y?G+JiqDIZd%)s*@}qrF*O_qy z1YnlHZ5flxB!r-gE$KpF&NI(_mss;LlmRBV96<*QN?y&~ScEM>Ca8!`FBBRbTy}8J zUZ1CikBzwX4?#38)VpilS#ezw{V1yofz><VTuji#2Bmzs1&8%Iy?#e`$B+@6f8}UQ zIBzt4Ck@(<BQ<;HXM9(K(OBCh>*4&{b8VCSDvtz!^q3~56)@*M;`z^BKnuC1HMe%G zdUgXa6~z3chCt9}tMXa*tOv~2M<R{vqWq+WNDT_pd@%7PL@I$Voi47Y0L790AqrMH z?K+i8pTkkS3ucQ2!`ss(+_0WS?JsPen|11`@gx!^L2`Oo*}@pZH;`MoyQ6(RjOIan zMD?^b|7D*$X(psc+5OPlbdkCnkn*E!x(=SCJ@jDriWQOuX%kVc?n%u#-BW7%`e5oR z{%HF`VZE#ybJF5Uu(rg%wSV<ds+f{{STqKOp=$1U+@ZO*YGpizIc~I1ATU+keBFmZ zRma(0_$ey-%ftWcOA%Hnd8l$_Q|(gQUm#V}cL^-Ff*`TDicG3=W#zy5{N*gwc;*vZ z8~G2T)z(+GytDI^Y)|sx8Y1(J+dT2vlr-y_625%Lr4%T>^nkv<Uor35>^B6TwHcJ& zVl@~q4Q%B{J6=sYhxmdTeDGf9dPP^?B2|ULk;Vv2APB+`oa$xEf_>je8^@N{(a9)` z(+QZpjNi7B#5c8e10Mm)<!UEGTU}-r1>XSgUPo<^ATO>7tIEf@Y9_d`pmy$WLCMkl zZg1LpOT-$;i?>(QI)aay5rz^lpzc`U;&cI{lj>q@W3{1*(bd<-Ii;s&SeX^cuC4aw zDpz%dyWDGU@)9%r6bswKi5Te|e~=0X_IlUST)0@ZAkcDw1BLJD*tdr&BvApyV>g~S zsNi@cev>O2OfC1<(4qfhMpVD~{sta=7je}D#Ev;EwKXVjEb&~!%y&{1e=YZS+{()0 z@*teWn|IkMl6bQMtHfj=qPmfQ;Dh5OirD|QHa$NI-9^f(LdCYcIkPXLaQCK7EuyW; z`Xo<I+5c%GcfeE>_la6$G6K0%N`GEbyFebTcCxq#mS5<wH+0^Qbh8Wf2h7!4j_HHR z#`f9Wk#P2ZWDqW*c(8+ZwASwuD8v6PNzk<)$PqBK(AZ?}^Z}Sin1De#d@y@=SjF++ zepz?EorSAV)+Y0&D9FowW(RqZ=G)$M^0Td6%@<4f>1|_Xtv|0VEoKTGd_~Dg!=sjR zP!%9L8bT|cBL_^z$~eML{VF&p20G~nrP1WfztWYSJxM(|`g>0mY-`l&myzzX?uEhW zA$}77wwROG*lc&?y8j+cHvjMXs-0s!T77V)IdfR-{dj?DM98~YXiosJmIT&DrtaAZ zrgJ}E667|icK-KH@{~$JU~DKrv(zvEVOR?m8Q_qS?XU9HYp?-r=hf+vjxBV#EPHNH zw`y7HuRr@S#ZO!Q86=dopBs$+h8{jEy5c*<?TwVd={n}1xlI|%>~Blvth*XCuL^ha zJx26pg8eqm%m1+8yWCrh2orF|zNFJH+oh$~z}H#v5Bj>4TEVKkMLJ(Y@5A?`ob*@y zORd|D{~BCT>{>q2m7`13=!Z-BfVBni2m-=D=G%^E*_x##p7C=;irHcDq~`AyM!3}Q zFMVxE?37dEdTgJrHtqBbbxVWkMC_^5qsF$25-fzWi=Yh$lHoWjC%Tfz+{O9Sa9sFe zu?zU*&9^wmUb|_`NRj6%$<+iR-TrDtXWva0WSbIF?o@?)E+siC#{OPQ_{}jP2OK9* zPE~o%8Z9{%UJVz2`hgD4&ln(SQgoVbRi8K_;E?su3h0$0aQ4YK0w+A1Cg%PF6?uLZ zUF^L|7#Y!0-^R5br`rj((}l%ayy!dfhD<Z7r;w|^Qd|((lW=6OKKC3ISu*-JA+ie4 z89&7Z%jGNiO{0)S+&KL@?K9kO*pz=O61-SW-hS+iCo-RcF{X`aHywIXJ?}M>&>`Zw zlUIIzd#7PF3jYem*ihO<^QF>o91}2;Vbce&m$eBcK~kKkq20bJsGwx{V}8J?5t^k! zWP0}t7pC=KRwtgwDXH)B${sQc11kS>^wE46VIL*D$Bi7v`!b8B=Ks<BxmNA=+;N~+ zj<-%f#RqQ0HI`k^cucC$8bTz!v68t~!K|{HAz*ox_1}#z8u3?X@u^0$+sJ2oq^)kK z4F*f+nVrB3?`fqI6rcZ6=zwl$lu7xrd4=2`6_6-$$kXHGwZ4DYnoDc{8!2-ze1B%W z#^0J%@QzN6c5F-fv)!Ah6GE2}$phtO31|KI=~_v)h;OKEP%M<SjF0}^_<KmLGk6Ot zKbE#(?xDvRQ&yDn=YHbDYY2%NTUUu4;d@|_JY5`G-W?XYWmcd;#Q#{(a`I1IV5nv% zjAmcJcg1ah#|`%AQZiFoar&N+`x1veRO@~e^~UNwIcs+%Vp-#NfDP-52<^9#qT(Q( zIS`MJ2E-i)nQ)?HeGk<<EK56_ocro}y6&Rcq@+<00H^E@YuX!;qlcZ@5@G5yk%u5a zb3}WJsyZUp=}_B|V~X1LIB2msx)c6r{{H)<F^Oy+lSG8R3ze*>Q?m%sHt`@Vl$w_r znwj&%$YNQ?bg6%*{OY%?u%!QFru~P@`>DVZ!u-JpdAZqtJf2@vSxRcLj`GT&zm9yK zQ9#<0{=f;*Z9pW<Jp(X|)kW4e2dHw@3WrljbCL1CWOFvK<W+2!(n?^_PDP^2(%1Ob zieu(kk1bKH^xYPQHr{5}m1j=kKRzZ2xtk~y8GOP~A;0+Qv|?^O2!H%XGy)SihoHt+ zjji0wEHzc>ToTc)Na`TXEJ}0J$$yFY(H~z)Sv!&Q(a$bBn{$@UGQy+BZ(h<mgKq-u z5Vh4`Vc$6XSc=#{X)>0vQ%9W%sSpZ>Vj(~$q&U2=GvbHXH1+F(#iXkjOIz+2bUay< zmhWezqe4fkqRQc@t7%3hbEI=Ynh+)+R>p&H3+EuULd0%2cG%N+<i~yZD;QffALo@T ztMm5Mt0dB}x&o|uyF44CYrhmb^EBxfskW@jx3)j>&^sc|AKn(Uk|oaCmm&!NRWwSn z_v}00#?u;6^S<(C)}?7%vPDT(b<vr^S*}?4O|8U!O&f5lpX^%pkSr#t!=MOu^W95c z|2NC!Rz808AM^am!kbD32xD6Zw_5EG%xSZto}=WP1rH7{N!v6mD8eLhSw{{SUu}BF zR~LJ-<c~~i+&Yeu@9j!`15_^Z?Y@-5<q8uJN4=>3UTIl)z{P9uzvGnEZ{OWZKa3;N zCTTNn+MgmUx?a)<a-lnpTT$P$4ux&vSV!bdhn5Aa$2E&J(%erx9Lv>=C!xVEaZW_} z)xGfs`=+mNgK)+ZnO7kY0Kx4S7TV++Lqi;1ZmzG0%jCKjv=Wn2+~K9#EN@bNo4bxq z>0_o4U_vkddnNgt6EXs1v9pw#6}mOGe%_wJ^EPJwO<!>ZQPD4tmYKXC1p37elTIW` zKoAJC;akb`s$6-2f~x4t7kuv2{0#Hkzd*(v+BAKsSrn!treHoOmzT5aXyv*m-zgX~ zoTUXyb4(;mu(-o0O8Ai%Zb8WqyHK&in9|B5#fW_F*1mP`Zb=RNuuvy{=8xW;Ft@Zy zU*9rgHkIg0>dNZA=l2x8iKUpn65|wRFj<>Xrn%_KO_a=gB>&Sp9yay=!ug*nE(YQ- zJ>5RbMhMxO6Wk1Z4uzaK`-fcmm2N_YBl~@jo1~g3puI%Z$vD^aw=(m2P?kXF+H|R6 z`q$9W7t}=-X;n@e(6NT_9&@Y-bw@@G_2?S`_CRjbTU+TtWYVjMd-U0(MLM&n2XwYN z(Z^;1ZculRYES-J&bpmiDbXbKqbr}5<(m!)(3D$8fPf&Rf)K(b0M>JwZ4w~02i2J{ zsNX<Wwp?veYPFvPq13yD6nh4u9Od;~BoKx^sLJ_jqtuJt_8z6Osf(1+6wOjICs-$l zVe4)tvlfL|cQc98D=v*_FHYWyr0qYRKVQ|fBHOscA_!`bT7?=><5HSxYN1orO&$12 zCTRVFK-ooEZq%IasfUy%>vK(dSAklFwn~Y9O}^sLxnf<ayZ6u4<>|4fVF=txN483< z46BibBqqtGT8PDla={|=+69UnMc*l+U8rspB#B;)z~lh*YbdH}P-{}@*O5^WI(KH5 zZV~kFAMQ`b-Buyjw-o!Hsjq8zn=RJUcusH%wP)!uJjHuJEt#eYDKk7pA7<<cV=NBb z(W5OmW4@Me0go26*|QHpREO-vakrpSpo266)({e=w2Tt1fX`QMI-IWLHH7Z`uvMkm zRFPriSjz%0^2M^3k8+E3o}<brZm7eh?)|}mT49V0Uk(YdQS&erNg_19^TbczA{~Pg zjRb40gZ+Xz9_X{zLO^);&K=t}tiA8$<2#op^GUB>E{<K9;Q`u6!Uw>EFWQ?;1~Xe* z^AD?MJh@a?VzHBj@NAI|#ufSsVU`Mw0psXTJ(W2nIIs+uaEu3=#@F@I?P9jU;4rTw zdU1GX=tAP@+hCO~SDT<>GXUzrjOZ`RqLF@%s?XnJu9vz&|B!t)K8r4X+RO|BKK;-M zmhw#8%BkpVxyd}{re4#Oa&Mq4H0R02=-j~CTBKu8Uq^3;n20_CIb40q_pd9SJ-mM| z9_;U}j3K)J$#Ffus?(~nE(iv)13H}+QmN`axKEZ2*E!CkMLI$1L3|`-EtrEhKKo#$ z<lW`M?;hUQGZZU&Z26H5bLf1qBGq*E+{#8VfAVm0s<Hj+vc=)W=WpLSIocifI<%A? z;?Op?19&}N&pS@L6vdM0QBqvIT<s0c<mB?Q`HVtNxiB6r_HbJ)E_lzOlyXE-r%qJL zh1;Qsk*RHJIdFyN-=y}(FoFnr05%DzG9R45ZGGCxma9$5j&z`)@-7HBSc{tgh(h`q zST|qHP$sOm@IP!xLODH=Z_SY8Ax|SgG|BxS3fP)vlSSW#^JtL{?r=bmBx5rHINcEW ziLU#ru#aBnX=P69s~0j%%Bu>2%3N9$G$ARff{vU#_Yu*Wc*Y=8>S<y|K%`!nMym2J z>CvjKO-k)yFP?*-j4HCr1!+;_T!08?^q-jvCXUZY%k;Zc^0!|m;#90vlH>E3I;xB= z)AF1kSmG{|P*B*zH7b;FEq#xH3d+4AeBzqvzm@c8Rd#x`g^9`-UXCBDBA;^0NAn^l z1%Zj(eP}fUt7m@m^6~xai{sUF+-+ymO_g$XC0I7x>dHx+Fuf+4&NW<+phy}}`{JJD zhP@Yb-^8}pa*X5+uWV%oO|K5Y1iTmH-C`Khy(KWOXILOP`Y_VwD>jY00oOw}`KI4% z*26(cLf<mbJT>xlk;c;<+OZ8xsm3Z_4zp1+5fa_JuT>v_0&s0L*Zv~!RTXLGFn@i} zi-sBY?Csz{4R_;Ck=TY^t)A*i*#an=?YCUws-*OSA{zw&Z|OB7DqF5Lfok^9=fNQC z>j$8&YK|G^?<S0pbot{~{BH7}X?>Wlbh{owgAh5hi4&ZflT3VawajH2_ky+o5i?cm z-0)WkVg)1+&32Vw?2vdt>5X*FH%bo|hFsi6(*ST9Cs$a03XFTUcquS%fBdyuxEFo% zKtAx5GS1fAP}U2y!Jm@~Hs6wEIn$jw$GBRg9iVvHEaeLtG)S7fH!H^;WTVKpfPa_1 zynFlN?C9`dIp_(`a^Zi&;BJJ|;m(&HL8iPaGJGxjkTTS`E!pN+;j&$_mu1%3vz`;? z*^-~!Rn?_?PCY*Es*i7;KfSs<*_}=5wS4w6cI`7J?AGatoYpsYvPzts!NQln5oz{H z>=dPPrpepvZrF9r4f1G_j!EsmQ#qJ`eJ%1;Ji+{pX1!c`xak^BBS$+f3*51V+9}b) z2dAiECr~-dlPL;QG`<FZ&%ti;9bDNWodGEtchUk-(0_+Ca1)bH?2{~&1}8x}N2h>f zD<JTe!k*w2%%%iVTAesWbn(Fv7PpI<Cbd)v<S`aQA3205OH?JN7+HG0{~q?3t&A?4 z(E8b3fuSCNZ(+f7l}>Fxcerf%oNgdB<+LXtYAT6Q3O*$Spe0kgj*ncp0-W?_f@EXY zh=3MSsL*tX`Lr?D0@tZ1qKAkrg3J+3&Lc0G$E1aY<8?r|d1KIPH7ey)pC_TOpH?+j zoaU*QSP?YE1t&Q~U8+8L1@}>%Z^Frv&*|<w%oOGz3eu&9!Cc%HksA}mBHVASn=~UB z3R4@;3&?p}Lqw0t8B!gGn+2-lF)oi;YhYRk8Hx@7@8fQSEZ+G95OAGUCytq1J;96_ z5v2cX+L(fLMt}$EW@6DFCr0osJ0dkfusgGHUx53zl5A-~p~Ej=b;v%lsA;H0CEX># zuFH6KBrZ`J!ttZoOjS@E`i2HGcCxcAxgTXYp>w2MAOx9-IaQzojEnM(Q!)>ve(9Ei zbqo3jvB#_xq`3qZNDx?B<~5$x1efc`;bOk27{SPQ_0y`vX`X%|YxQApXpa<{VkuGg z&VV+)WmjzJWrjC;O->Px&f;>g|E0(-H7e_e4rIq7Bgi&ZCkIY$v@ht`rEG%4G%EW@ zp+1xp1eFlFchpEJ9;<`lE8|?IKajQVA*sV9k(Q2uXfA<kAlCU8q#2uDwx54|abP!G z-J~rZO;U{v6d(!~7ELOPNUq73Vku}#C6x@73z$VOlV|jDBfH0>>KLU<RreO$>l9ZE z=O`HCQymOcs<p#2pr}x*w1d=#x`Z>)+IOtO2D{l^I&uj=dF`TbmPm32!bI6v!lYUu zq_z!A)lFRhy)xHzqGFzX=jris-fdTCAy=222A-Zh?N|89z{Hb3-DWu_g@C~7#rCDl zPp0wicCSmmD&-x!YpbHSm3G*{j7z-q-i~+Hk{)E><x|@#*Qb$o&@3~f)7MQI7a40P zlAM`EcCuuOB2rOhsvakSE$Ki?QyJAHOcwz>^Yn57S8;jD{nOVzBU`dLd#XAywlyO{ zW$G0^dGs+P%rIS?;q=K;p{o)WN2aza@l-L}QiwI9bdvNI+rTOGMF=QZ3QIK27~MJ= zw472Mw3{{d0Z$IF@y?qfW7xHiyLn(g`x{7lm^Nxh2_=a;DvC*_i)kS77-rfxY(Y8R zjs=|zGf*9eZs5{kb*X-fu5>z?rzGBOaGvK=8qc?-^`be?bmfx?J`Y#lwX2+D$4udY zo-1?fp7B600>2;Bp$~^i1iQdd9Gddzr<>FHrNBxVzJ66!#vUp21t46!Z%<q=&d1u- z!7cJQ)_V(9QVNtyFdq?$prxHZTPbJHWfpjru^q?>H+ZAuM3X>>^af>!v(IMmz`mn% zk%hjgt!g;T!%1q<#qAqDt<0>+U9qvH2P@qz>7`tq>oYDm&*8b3N|MRqB8%iRn5Bu5 zdfoA;S<7e2oD<vH)bWUqRyo{iMK7Wkp2C)0Ym_92)>Ibjthv_E3Nqv!X0!abq-ww| zyr5YuB(&2<!GUYlA!f+=e8w-OnE-f%NB53r6TwMw$}nN;t6DWLF?<U-nu3t@Hcdcy z_Q(~)RAtdCnnBJrCdF2=5Zs1^dnARA028f_8T8^>IcMmCEVKWb3%7>-f<+ej$NjRv zV?KU~|Ik2@fpjV|BnNVQSG@!S#L!2eETZgtpu}dbThXi6q$t|$IRNvxacw&2I_=qq z*d3$HZZX)xI+OCA^6l;fh;+fFr*+X`gk{=#>oDJioB@aRb!la~{71lq-tF4E=N>l_ zM~<x>r=8%T9BY~>Bwbts<Y+zs$O_cWJy6?le?*{n+{gs}-;)ZTSG(;>{cE$W6cahE zx@U2Uqr0#h16;LVN;frMM1py;2g2HLORQlmk88`FZD&&%*Eq5Az#gF0L7;{`T!>CT zE9q>x<)pbtu0}8nYu&<N@cZ|i35M_TuM;bb&#=>K_STR@4---nIha6oRI@OZKA1D> zrs2bnez^Z4+#lS?1U~ZQMW3fSr<w^49gNi(F8)%t1K~Js#|s}@_X3rLJHuQrG2tRo zE^=C|u_(*pF#sW?k9O?b2SKxYI8c`Lg#p&<Bg4A-%1&_jb5SlGWTQN{hg)?JsV%=p z71gm5iNgdn^n1=S|8f3q{`TqPJJ*N%23I_kBhSz#R$cugY0f%mZXVsgNbZg@6Mh;u z`3@BIl+Fe%jZBl@qYQFj!{OG=>9E}>rQ4cdQQ(O`<lS1_9%eh@lTgS8clHJV*-t`H zK$XL;5kYbdMgS+C^`&d0U;<l057RpTXzV3i!1{@{nVqOTQwYrM3}&{Z!=su#lv=^a z(ltlH1WigM&R=ge%9*Z7SQJ>sB4L5OGP=MuNvPgAVl1)LfB*s5s!{?|Vs0?aYQh;K z<tKR{78lY5oa|xwkI*Knv0~K^?|0kPe5xn=pCUe<$O)chpp2B&0e{EHk#c3N52E^T z3A1V^uuPCS7d;fkNUK@BSB7h1q7COfB_2mgCYC|jU>tYUNQnMN>V~UndG+$q?W>EU z!^N!IOegEAOfbrK($I#4gHA|ISP2mw7c+vj+ryH0C^=`DU9$~5YynnBR|YZT-x@{$ z-j28R_WIpgHJeJ<FP1cx<@9wU;hY(<Y9^|;NS)5pX+q?m3131)fap!yO0>vvKSx}; zP|Q~u3LW#f2eZsJJ~sU3_+h~yhwk1IJ>J*5nuq#uqbQ!KIyRk@y13XaZ}ccsI^7?X z7sk_mXFF#MaO{W{D&kLZ8?3kWXJ0I7h)zyo?#Yx)e7#znL2l?m^YWQBigVkeF`{~; z#6-TU`CZcGa95W`g%TB-yxLNlk_)WhxaWw@#?>~w)R+zdu9^CLd38`2o_`cyQ)GLe zyXL__s-ESvJh&w0$QN>WGQ(SLsVidS#9(b^<P$EOkePD7qo_4)Ko<1n+U*3=ROh8? z1#$RH$US-LhhytX4`bgoS;9yZ&_lE!Wea8#V(rQ$ggPUv;4AP7gczmo4Qw*rK;7QG zF-Z<}y*m`^Z70Q%!^OhTv8PBqOUvDk(AU5c-J^0f`S_<5HOh0u++$sm_$wBF)U9_+ zL1C_TpFd^!V~3V;NFPFEceiV6h*G)z)f9Adgr+>+nb^2vXv>TaPnOdU^`&)NRB4Tp zG$%Y+a-XG6z{e^BDqGhqQvF$27%$=Cg+?u(?OWG2v{~RfuhXD4ZKM*LqXkusn?$li zYYX^ellK2BrTd>x+enUX%;*dSMoJ6iR$Q%u0aA3?aZ_^wW13kn!)|R39Z2?Nu9JNC zu(5<wJXP!nHc({Bg<I7iqX|?h5@-sDjQCS0{|^&eb^p7x1U0+#eMnF_x-Ti2c30tW z?OlM=3WVQDJ4BzwNQgK{x7KJ_>p~uf|JCPngK5VTbEiG*SIS+_bEO!b;WIfpS(VN5 zaT2B10l~OxU4+RQ7(qi7Dr63fjY;Ibt$de@a-N`BG;`{_wrDfUTP%luqZH*0;#p&< zrnatO4QncWL{5>3%We$4zp3gfj^2-*Cj^igc6UZCni<Z08+f*LI)HubtLNYx#ph!e z<d|1AIqwChk3#>nUzb?P%G2?I)M#s6y281Mm-Q^w@w2pRANa0z47~pgGc}vIpfZAM z8dO}=tLWjj!&#p<@ucf=cY{(tsiCk57$!`3xCL~xmZK!u6p=MFa4&&4ajaBmYK#v1 zRf##~_RQEB`@F*u>CldK$)IOC&Iu$-xOhiW&H$Sk(deJgXq3;I$SHP8LS4fv@$Bz- zsyu{Ffx^}A%4&79dhAul<0*CVZXPT1jRa(B&@oyB#Ec9E=DTqP1L`&`6!ERkB6H|& z{(_+NoW?^J$n&qchf9}NO6c7j4+^<+pCzZ`x{mw2AMaOT6o42G@9;`$L!|1N=Y!!V zLt+1f;ZFLAdOlkflp}z4`rs6KJgP%YcYmrv4Q#g?hK(zwp|aj63;V0Zuve>O(~gN} zOlws;1r-+$79{EhgfLNWES0_SKHrgTWg3BVWDh}{1TCU?{?W__FdwJvybV0lXyj8C z@eRYIJhKXAo<<gx{EUz(Ni;RNT$ixNwBQAvAWQ5X<mQcjuU;+W^Yp@k#aI>;3VQbH zcK~tP0TXbBdrC`Z1jcGoTxu-0Jw2EK+n6Vh7xQ(=h^cMrm}TdSJvaorGjL>h7`qR% z9#M}mV<(Rr`WuP~Zkcb`=e_&FuPCns2!La_QlEXP`r8xnzIpETF97h9xshf&v+KuY zP5<VrVtDt4KtR4Z3%B%ZZfN3N*=zg}{->=c@I3slo%~De|E?o{T^svso&QeY?-Io5 zHS|GS!xz}zvAMYHsQE!*d`%o1hVcJu{Vh>UOyJ)ygZ>CR{S+GhVfTI#JL40&*k>#J zI9B_I-TH{F<D)pAggj#%-^2Kukzayx2wUl*!TZktZLyUntrbgX_)RqUBgDVYdOj5K zRT@7uFlF>Yw)jCW2wwIsCK>WwEVsp->iC6rPOL^IKO*i|2A#Q$CqQBSsJf5Y4(K5W zcLHjzNy`R5Ux9OnlSkzFMcI<^v|+6S+qPt88<FNmJpgLhJ<viU%YrohXj^33JnT@F z(Y;^WA>`da>jK2R2;Dg56*DB<*@>e+nD%A>(4m2;x!-X}D+3@5t5E>3=y{iQrX-?d zLWJF@2B9L=5Vpo@m`-ao0ykC7BDAeL`+;g<w%g%q5k>BF#}v451=b0dqU9)mXsba~ z@2`dk`u=K|s~4*g`u<$aq8QPg-Bt_xa7nKg$-Zvsj<o`wQJ&7m->G=?5cP##Lz-sT zqNQ?E%Sm0;^b1_VFM7m#=(Ll1;{0;=1b(S}@`L;w$Ef%UJ-WWEM=9&@HYCu4eeQc0 z)ELFOEl=4S*mvGX8GiqwVbL#Gx5O9NHg<n0)oRA6_S<x^lemo>q85?CN1-<e^CrV= zD}<t0N2Lelq7#%sYGk0dvtq&ii40I`b`s;V%YIwgQJRmr!CK%UO6$I$b7E~B&Y@^j zSou6Di(qK-VGLLM`VZYk;I`0!aYK4_>oJUxqFpM6ot0IAjH{|mJ2E^vEh1JI2*kXZ zbgJz`A{`@G?>`Gv^n-1(NxoVR(ptq5XSh{|&YN#s`GUl!)oE6#4g<qM!&i8o-aG8G zFiac15+2f>P=RJKci#&!0(xYOT_sU#vNq(nYhlF7a@aYu1Gsagk0>ZoY;<d}m~WWc zH)$DTarT#_RBEVmsjTZK>(M%7t5(xBGOE|G2qWqk21;E#s2!J_nvFB6w3^>}u<_}l zqGq)x_guuN#-^l89lgkq&XBOQhyn|kGId0>4)q!%RO@692UTRN+5mC3=$;iKAU$`I zi4APbv`!VzW3*bF!oB7V(1v$rhD2*snQ)3=T(t_J>G5vrz(URJkwx0mrVdDC5sUhU zc|ktoXR78?!DK?#r#ib*tD*DHrb{(SVv;OHsx)TlGFW6jUH-hW%aScet~~h)6e?1z zgol@pUqDbuxeAr4R11rUiiu08QL9e9294&J8;FY2MCc4AW)>`2!yyVdz(Edi7#so; z3L1&+q7)f&+eZaTRH)IQg+YfN14fcCkxUAyq}3z!X2klQmF3TO?}}{PFQ159MZSA> zA>z8g;b3ENeOHtu`s15-?%!j=ev=80n=I0n0BM7pY&R=KLDMMdqzjNG9?m?<hb4wd zZ=28GpC3FBxp~4nE|_>MBny$uB;R9({64oxkr~Oxx>R6%%Lr#gCmB%NU*5ICiimY~ zx3Z-MY>3CSvG3Asegw08SA?8(ygr|&+`BR#Q2rQj^Ge+n5WK(sGKgTnY2XULc0HJ> zgn+bZ{)hEk5f|c)Yo)Vg?4h`>tK94GbpQf*3h3H^18@uu1D-2JaBZaSvSV%C2RZ~( nn<uyv0EpPE_IMo)eRFa|BNyXBg0#oL+37!!O;?~$i`C%)t+@02 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ff108512453a58cdbfa2549249ee5f2562640f08 GIT binary patch literal 33688 zcmd_T2Yg(|bvHUQw{7nQyNj{~y9;0!i?UcWqAURrAO%n)MM?xjN+j4sN^D|Lvn;vD zwoG@)wjB4oICgBu_EHil%SA4U9k)FDC3dX1B(~!(b`rV7vE)RNfbW0i?k)h5lJn(# z@ArG}_t19k%-nlt&YXVE3>asOx!B8?!uD?2-qkz(qs4m|JKBxfz59<Xo;>xg9WTT6 zn;8?y{kNToE8Jsa?5-!#K78opO~;-LeE-*s9e<QD`$IP^o<50s4`Z)He`dMq=$(f? zcFWw=C_ly6P5<ZNgNp|OuRZfW7(4O<)b$@mg|S8X0G{u_b?f0{XYObyG`^Lwn*)sT ze?NL+|Kg87|CK|G9j5+E#}@B6$<H~)as3%w$B!=_JNU~v_uCkI3Hs~Lojh^+OlRfu z82>9U2L95Mrw*Qc;Puaa4db0d|8q>RUVMH<1TkBKSuW@*XQDe-^cKC@qBqt1_5;1W zBKZ8j^z!rQdmPVT;v)01G~0SH5f+NzSIt&ZTj$FmJcjR5Ip@w<CWNxU6vd^?#a1=A z>kVFIZlUaAtfevF!^1owO%LY$p|CJ?J(<bkyVN((UsU>g!=Z2}VCaUPLTwh6|Dg$o zrns(lDT<+M%KC2gI@PZUq5HIaE~s;%iHnB5R5UcsHT9pq>I*31`R@s#`ScySUlrWq z&*gMK7LTR*r}zgjn+Ddyj+cEsiFl;J0w4(184z3u%*>9N1u!Wg_)QxAvRw+W!zt!s z=B)kH#!s(pDqmLX7IO;=WotvjWJAMxU61Dc{l)%bF%%BUsU_un2l`UkEM|S>hK!=} z_3ITin^8n#iz0k}w_E?kl`6$2bgn9|92n$6#{v~P1=sJpyow+&x;(Dz1OyJV)9g)U z$3RA?+Ac*fPIISK%~*7yx~zDNs_b*ygmBsgFn})_T+^Jh4v%2W$FRyT+R<I_xKPe= zcIw2@BL@~2c5dG`w`pcWd9+mQ%C{z)n;L?Cufxg?^TS>}kP9az67&xcT&Oru92ccp zaiAZN>J0^f8@gcxip9$+!qjM_0N`M8rL3n`J(e1EUP>kLkU()@;K%-O(&E$9En5;X zeb??l@Z?Dpo=v9}Th!l>H2kWzX;ZvIbB55-@T22aEf(LsI}qSMM&YF|O;p<~KJ?s3 zSG;@UCeE{)HU_>B@fx>9#@uef?afU#g->r(%+kwWp@kzp<7~rvms^~A(D0$Bd7;>v z8lC9K6|+=rG#^73f-78kz2MUf^xL!i75;PaOE%4}VLRDqdDzVv-#L?Fsw%dZ`tqux zDpz6ERVLJvOjYo69Q2GQ>;dtH*<5+7w=0)w(DZQ5pOMf9kc%Y%Iv6BE3<ID5ASf}J zNo9jnBY{k-0JvsLDWcszxir*PEPDG0xWNF*z5f1EU-oCSdy38N&2B|Yb!k&0K5n&G z6x~ti2Cj;@tEFMXJ3Ud&9q<cd*QAI0xMI<4{ZkH5nc?*MT`J$1$?&-Q^ws-IEl!&) zleKVb+OBEcy%t;A%K0DIbWdpVz-OBjYqN#>0ya<HuBtZ)-P+|5{5@k%Z@k&>TKZsM zpsR^#pn$I^Uk1!<tdVuI^=u2<P@VwmVBl=ZegKQ<g6(HIvsiV@0cKTI>rQ61s=ExE zP_62g=BC-JrY6^q4;0%nP2J7ine=4Bt~ca(Ae98p_5yZBFc8A@2Wa}4R8rT2eiH{- z9fg^pr_Ih1pv3Ny{!A5e@=pH2M=ricc(e;YQG-FNkxUxaU{LMyH2`cay2Iy<*wp8L zqS^WG_i&#&nVXI~Bl+^hpExEAO*1AOnrQv%*FNdtU-QS4O{!<ljUKf*8GrtPh}Uja z#kUMc*yncY&lfezSJA7f^WOQckf(_|x)a{=dT*lJ*V7FQ>stP2g^O>n8MeTVu#cBL zH|@&!ofa^ct}Iw&jcY^<uBvR84pteQ1u(e)+Y}-s*=9S~%Bl|GRUIO-LxH3T?!qlx z>{)qKSOuSH!b4HTnYtfc@Xnp}=X0@T0bDk`X(ML`_itR-w9wa^??@%s44<)pp>UI3 zfLj1J!$8s=EKWE?SPg)K8Oucq2PO1L+Mt?*5s9LKF)=_T+!anrd=7?)<COZ)LCNA4 zEV6t6y766`Zg#cY=}WbCS`T&V!os_=E`aiYo%3dY%W&TA(CzE`8ax|kG|$c(wjA~9 zC3magv8sB@{!JcBQ=3ocMpwumbnAB-suB)*EY?)f5gZfW*nd?dUf$x=It!ha`M3LY zr%lr>i8tQl;C3ybS#Qx5kFaHhr9+t+^+#uV-674U3+L9&*PgP9oqgH<0S{O7M4~0$ zSg<Hdue2#@xY*pK36~OF4`#5He~SG?%EaAeCrLw9umAzNDh$1l4UmP9@N5^D#)>5L zpn;!WU0+^XC1v0R$UlYH%L|FQZU0q?hOus0Hu!PSZj5=MOn}#&!ibJ+@(DeZ(*g!* z3>jKG^IgQGuuPtCh#xmLS>K(sSd#As!)Q$z_B|oXOYOf@4dcFF_B_z@>sJ`us%WmW ze>S>z=}Yf~p2EQ=biNz!YL@Rp#VN-5k#?}H5KRUWM(QbUQOB5mP&=W_q|%zIy)D&b zSA=tW)a8n9cZ#QkMZWKs_ZeJ(M{C}jKCtE2TmI;XS25_FlRV9Tf_Kibo^nA4Pnt<c zB14<P2=7%cKqUJyYh@RxQ`yoO%QeQpVW4320l7m#=odi%pnpK(eo{Axzv!t9useWO z$+xqafxi9{U_<CGd6tRlMUX}~i>{gPCPNKbr!&xy_SzfM4g3^8(~xeod(-)7#^TI+ zbrHQn8yAM+6i@h@8Uxz8VeStlojlXn;%wz<XG>#-JCp7F4A)znqS<Lh=}H|8OOtch zg#YW6s5rt>th?Olz*;v!#}QWnN{|RpNi?pgOj*RDsJl?5ZfOmq0~sHIVxVszA!%5W zdoY-&Y6CQT(!5Bg7)|h2q1bGmX6QGqkmV0NAgp6n@xTL#XQQ4szeRWHwr2e;Z#Km+ zuA7>0#T|J6*5$XepRfm@MZP%2K;K#bdARDjW0gEs)z>JdTID6Ju|_dfEWTW0yduTC z?n?R|XAbr$-ow36xf{wsfR#f}z{f63gKz1dAY=x#2y;w11TmD&IHKyA8=4KT*J!%o zj28XJq#?NKh{ha1KZ&PX@eG21hYdaEP=tc#R@Fy`0P~lO!bM8r%B7dV0D#qmdz>W& z%Krd#;VSXSnSNhURb_pjm&7m>-v?CXK1G2>udH7W2|)B{NL|OzTFQ-1Qdv1613v{^ zU`IH!TbZBxl@&d5jj+AR9|pJDDQr<+glkJ5Rc-$f@#>1MJgA1FUQO{lcdP1!@Xsy( zGk;cmokiFndri&GA=U>01knZ)hhWD;oa_M-Y$3@2sWn`0jmXwswE97$5Nmr@IsqBV z5$X=8fsipnWoPxN3YX#xI$R;&7;`yTghw<f#+nt-a9vFGnPRCwoPlnU0vStL6a?`~ zdDc(F4OYZ0WAmjZ8&^{Uuf2aDrSgVEc>YWv1?iOZ*kKn5SHK@>@CRHdYU1nZ(F2Dz zdU~`wr*6J^>Q1f4bIWUbTl1$Hxg{N*i6072S*}|j@cRSnud_^r4<@e#@aF)EzlC;? zX7`s}ZU_z7O1v3#s#MV-$~YDewNR`CX$Fd-UJvcm1<5{JA-TV%2dM_t9$u3DQ5YTq ze7E|H)s2w*e$Eo{XvFVxIU%;vJZ%72(6q>CG`~sOd%eYG0m@H6zb*9-6ia<6{kD)# zgtgHAUbj^>^19ezw;HjfPkO9|f0t+!-M&x)TtV$|aURi^zO(cl-Qsa3Y=$f3^ICrM z8$0o*0{;9Gb01}QKQ`E(gQi`hfhM%lvY!ODi(PW!SYdTx&Acz`B+*B9l2eb>9|Db( zlSW#71X>ps9viwPA4qC?B**)J1%v`pORwwjQq2ibJ&>bFN-4=JQzDX>%mNhn=G*&o zHhq0WvuPoV8dvqyNTJ+aD9<UpC$hdnJ#k;-gx;c8&F#;9)^FkJyQdl(`40!DxcxeB zqgBgVgl3y*jCi8AUbS(oWw2E}05$>RyBYTZ%k*GV-132qUA+V|P}lDOvmy5PkM;Hh z6^OVhqU6x3W1&wnUB%CFrfT?s_n{6!O(T(~gy3N?Dew2(0(e$$iO5?B+1g&<EgDla zX%flhf?X6V7ha%iZ8bDS(RNnfped4YZRupTJrlrc#8#Gt<P89ATCS!nCUdH8GWC*1 z*`>hb>Zcz*7HJLY>ymayEXwVhPaZn9&vE9SGe>uXxSOk*>YkqO&o*SbI&@X#!@Mai zVr_Bm=x}Dzx@Oya{q_4twYHbsdUnvQD%UB7txqY9jjXd^88+!$H_Ct~Yr!8K8ecbf z+>Wv>42cTbWi?$sq-z4}#<<E30N`-$aP9&}D__z8=MLvyPJW%9o}R&;f$U2%B}_h& zOGDvERdJ0bOA^=o>>Ka_?SPNHy(UINB>`x%rEEYqjIhvytx=)*)odHNc+Q^H2=l&Y z*KMle@c3<$7Tr*Jv^Dr7AK&Df{bI`BKL9t7^z{t%6VjzK8vmdj@=8;zM)wE5>Gyx= z{n6LFE=m$44ea|R<~_(hQ+C@RXTV(yy%kQQ8oTPWphCqvU@U7o;h$i-A@u#2sj2<e zk!l4GfA38I)GACYcf8<Bs%Th!mm8p6fP%m<;K6h%(^?uzTY*~sOx6pGimxJQ0J|uW zj1Y`KP1=t%bpUG92n8cJ7E&!<V2uPS{v6m3@vlerl!l+*H<^uxbgS-}C=4eJd!p20 z_3)@Azz+nVscJqg)`&l1!xXq&Y544K*QZ@df6|>Uj9$GX)H39SRv_xs-2tBXk7bt^ z0vFc2Xj~-^;^2l-fI^f)+!H~22s)<e7y{wVR?;BUdOuL{<^3YEA4%V4Fj`epR1z=p zxsvM5r<uJ-3dicbG)NMSkvKMclQd2MHB7C#_AHGtN!#){8YAMC(q^Dk$i<r@VULS- z@D7qTTCyOdra1t7hV&&{65xkiHiFd^FzG;7B%3xJBUmaapu<ypdINg=r;4HoyD}Ox zRL$Cw8k#bU<W-vstueQ)A+aT^1s(Qi)Z!YBy8@~n8aRB%mg)BY^l~2Ct#i$H)e*aO zursr;Wj3E|YESVGaLu`;XQH*tJ>kRU?oKJImY)XSeT?PURb_j^51~pbRgK_b;lW-9 zOq{di>m<09>vis0-9p(ZSaSnB-#O8tlA2X_to09&A|feVie3{GQr<xPDBuQv<7kU< z<IsYSpKG2n;!>c1%)4#-I=&356^iw9mSEcMNqFt||HlC`KT$hIqzyaCuf-xR+pm`X zudELXY08kVvpD$I1bg^`9i(29B7_d0W{uE6(ra)QYO#8W%63_=@Jg>0)s2uwJ_}C( zFRbctpvEvEO_C&&slnBI!4lb7d!1_Pa=zZ4;lZAX-igj!Iu#<(0IxS0YBgC*M7)}4 z`?Hx$8ZHL(BnN|ZA}PI4=}<2nYt8EDP5V3TAD;9%p|mOaNb65;C~d!4S9qbsW6^BP z6>vogC7V9o(;y5r9UHQNf-UZt(DxqX!ODEr2JsBW-CVfpC+UG#-`fUSaBrM#ZxNcF zE(~|XUB#tq3*#Gu{!n{xV=NYT+E&qaCo8j$m0e?CnoV5M0#NyC%#)mJiqMq(px7$# zYjn1vE??FO1Y0FW6ZED|SbGvVrUCit1EoJG4#<;ou)qE~%tq|2K1G;tw}v~j`Ankf zc<=Q~&Bw%0QhNyg1loZCz?rH^M)mdgm-;mm%H%MTUN|(J9y$1xuzF(ZhN*71PuEg* zMb(Vf{Af!6Kv&ymI#bC$n}u^5SG?gNhv9Ulf{s2e9O7*QOV9O>{A6db$>uUF6L!Uj zcQ#MA8N(j$rhMzHHSAV*+Pz&(*BlE+6g_rF$kE>kSWD}Qe~mfed$_gia>C4IJnHqp z&?1s;0Y@`qFQ8k`tO|`;QtyhL830EkrF(HrTlw;8X>XPtE|;s>6&uX>q#sy^AH~#9 z;2~2kvC@8`sE8~`t4vXiwI&-M7plI#gmJ3M(l^)IZ<rNX&2m;5_J?J^Ijc-4=z<?4 z36qb|h=MPmJ8=A)u*#BbAs&QSr90E?qv)cXexV)|#b_{l01S}wi>sgT0!>n@UU;mb zVTzy-$@$kp;f0)6YryfAD|xck0Oc!JFwzl|VK*vK{t#^SDC;Wcf!;u9#xZQH?6nxY zvH;6RD4U&5_}`+=XwZkgjv_b&lmT$uL_%6PnrRm%On1kPiDr#&=9}#{d;IwW37?a$ z=HTeyQ;rd<&@J%nIRDYn<PPD{6m<aRjRNRj6<=U&Y=j*x+v6}@2Ma<|Ym%ZBh-F$f z<a>dZ4)~JbkWyM(fFO5iV2;1Pn^%L{XdTSuvPtQ@s#-CU6iwZwYO5Fl9Rv#UtQss= z3J~(%Kw?{$(}HovW1F_$bi8jH!X&yYn?dk^b0fIPckJ?*VOMLo<Wt4GVsT|>w$HVV zZL+76HlQ}=ZN1U$*Z7y-aK#wn=<?Ized6<oAkIL0-qy$srITwqJX1OtvaX#3gba&f z>}M9J*%sLNRRL60O{}Jf<!pScRP1QarV}mEhJeqavmV}KlR8CReKTbPv8bv-7X~C! zNw18qAUr1BeTMFrObhx5^_Oumsa|~W{3lQCdULORJU19}^T-oVW{NM5>o$MV68iDb z(AiC+t_8y~v#&|D=?x8GgL7-v>5Cioc(2WV;rthFoaWZX+;v08haI2%+1|k|Tr@hw z(r;chGa1#as%Dw+8~kYzXy~(DZJYKXsAElCe=4j4C0GakJPb{{mG!ad3vDDot9D+1 zVo_Wb`+z#6Zd6T+)zzeNR1FJjccBy-jB6BLF(bo1Qm0Htp3Np;G|;!{frVue&XmZ9 z4^yJpTLP$fN`0dmwkhB7DSag^WLG_&rQaom&8K%}+`9GKs{KY)2urikX5Y8Zu$IN6 zSn`1S{2QzRGAjH=caPXFpr1e=u{dnvlp1)yOSd@MZVcTW=fUWoW36{XM7>Y?&oivV zZY%rXpk;1w$O7y&h$dC7PQ3-4NueNiR5d0j)WH!osY2nh9`4zd9@5eZbz~Xq>&ccn zN-a%|5x5}3B?~#zOq+m08Xz3g=}Uk}!B|Ma!Ww{Vg9@P(d&iUkieRAjc0e+qJoMh= z*1dBhu0QDL+#CP+Nn_(waVpYT3Wo2|Iy#0LL!y7sxO$eWVR5eyLQb>K&yCJHmH2&g z-Tf|AT+R7s6{9Z~iv*Wigw@{~>mLFUAvJ<Lc2A4fNJ?odr!nc8g03j0I}M5^XYuA( z#AYGfCs&td#>u3;3}g<tMRl>EV3IZ@!!iT?a+;W)&Oh|%#rXJpaw8M7McB&@nDH8r zrlI}Vo_)thCOZ`!>#HIPW97cVIbiioo9}P2*}Yc77%i)crNeIA_3M`e6OdSla$t21 zshX`t<_gfd{s8M5ga;Z{GOa3BQ%Ybn`=P#yFk<)uaT?P~t}QRjzFLE6B{S9-jfC+) z|5?g@FxRYR3#(o%M|HuxWX#D>lUyS#XJgv;*#K{z-|$k;d+)W(PS0G^c!y7|FN=sR zefDGX6HZR+u@vBX_`bHnX*kY+olI;OkASnED0>=%&>)IX-2zsK#hTvM43Z>g%OZwb zH3MKBFunlwLeA*24sPhn)edrIevOR`br<r<2x5wCR2wDJC{0eMP%ok6irZ<e;hNNw z;O&`YO5$jZ*#QWtAP;K4^;zs12k}v+$KU^*9}zu;|EV-ybsyIpR(;*(t0Gb3zE{-@ z+E?9om%??Q9<O<x#NEJIGGCjTVNYO%_#e?#q=Agt3xuNtpFY4R&-RtwsYZm#aRZN$ zxUG_H1ii>ST+}dU3N@(kh*UFOE^m{IE|Xongxisj*QF^e&)bo2kmHxn(_D1W<7JQ$ zY)Pv+Krp|vX9)^@MH33|UV(xbQ9iLUr&qk9>T|nf=2dEZ5VF08tuK#t0OK{xQq6H4 z3OrC9tO}wFc%W!%okKxnDT=;}>3T$;%a&SGsSYU2v0T4Ls?cEw=PHFl0!acL=!LJR zOF$`+NiAN9)5+1tAH8+23-*HIfby(*(lbNH_U%8`9TVv^5_puz&ZE%igm%kqk9?RP zc(h>AxF_iafx27ccmMKkOJ9-eg)T*dCt>N=z~P?i$~^)4EU>L*XUIbOZXqs|x~>vL zA5gWr2vmotA>XmgPFhp%mi2PItff#}I@D{L45o<y%neopNiZ0~ArH+)nz^M?Vg;#p z>jBZ%OH0CGMETW2GCiqQSo(2o<;1&8Y}D_@7gkfM7th~cE1i4oYtL0zk1+FENXTa} zKOgIP%qOQ;lc8`wV?s6Rq^r6s?$N<sGd@|HfE+S8e6Ot!^0MJz2&SVJZzb#cqj+nA zZM)bA(yI$@@<YiyFAm1ID*i$Bcs;l~)sqcZCQTAVw3k{C^;x*k(cVoVU~VE!$csUl zY+ZT_$P@#&^LpTp&Zs@T1U+s&ux;OF7q{6IyCXi?+(9m7DV=@#(!Vb~ZA@=&(=|)~ zI>qiA2nRHd>?GY+#fr~j{3SM0b`(1kp`aaEZuOisC$V|wEC))+_>{bM%WDcyT^ucq zBvoh|X#|sLp+(X_GKWOsDvgrq2)qbWegH;Ygbs#w-7t7aeAYKKs9Wsc7F~!EBRj2w zs8!@T$iu<klALSfcDFh*>=Mc=%Vlm?!X85iE6;QlcJHduElF9Sc`UDf?VFODvfQF@ zmzC?<%g4r-UJt*N$+1G1VT{d|9U&K_5`tl1QB`(@AXe3n!>_NQ2-TT>99buMwv#iz z$8KRU9wBE=8Ues7P1Nhfs{C`nZ3SX$U-+DykcsP&`))_@RK^D2<Coe2_>jKz%cWmI zRLXHGw_%)9>{!_`HQ1JpIhX<C0pkq8Li5oYn4A<Q?CK~fB_;}Z5>A>uYK`SJ^=^4n z)qb5A@99p)8$!J@sgPDhE)rS&z0x~ZuUesC1UC`>s}nR<H=7LBsRbmh%*;8xhV{TE zF|)^m@XzLH$#g;1S4;Z#y}F58JV;CQ8jhXQ(0ORd+p>O(By-*HdX}F4Vn|W^Usy_b zkW>fQtk60lTDpDX(ue0bn$S1&FP|!k<)vq9gjii?;%_B3T(*|N4$8}@aR8?Y8bW5W z`pfc~R#*rE$z#Rt!OmV)W?j^P;R}a*iNpp>J=&b9G^`2&&JQE7cJk$UJ>;_fShJ8C zT%9rIKRec7bz6+vPjWP@p07{>&ZW2${vfW`7+Q6@s^PFc|8K%4Hf0}NHABJ1mj79N zAJHH`?1cq0)*7rSPg3$+;<vj(qvSW_6|4tY!F1rDTUfZ*p3W{3Df>O7i9i)G^^gS3 zIZfgUzBtohBJLw&rei!W8g%`^KX$9u-leDR`@^W4KkI$h<PL|;9n80v+NXV4=y})i z#Q=ZkbuFct!tYKU8>~DrJD%IUuWts47)?XRw6vp-Y#`DsUXJw(BRaYbk#DXr3PIQC zv;kTde4Cu&dbQ9(bu}+*lKfRJY@)A}0hYr*K`33Fl2MDb0Eu}fCu;hBhOqeU?@2!L zc;v<%HLlNZXc@|lth+AS+U%E@%C-2X9&1whi4!#zl=eJhv6XtdyD^Kg<+no%{swg5 zS@uNPH4U2vnRyg1k_wU)l$>C2z^mF};`yg*v%&houd^G=Y36{D%ABN*P%lotXistg z{=S}+Hdc<WeVl1mQp8GvGmL~|c<rr+BkAGXHYwF5BE+ShEwf@w7T-syF$VdstB7IZ z1z=k&W=dp=4<J}o?Cot<!{HEV<tCc&Yvuxt#;oF-n$!%t#i55)BWsa3^Hlnt#eB2o zSU-x~&mqNYwKh33hSjQAp#OyQK+r^?rTag+E8^D<X&U4JEEHS7(u#2RvBBqV-8u4# zne@i3c4Yxsw{8R2ZBgA?ljt5idrK9!-U!_4L?m@j*-fE3AEZWS82GiKw`!1knpmuP zPgj}S5h!|V+E&@zu7OftPp&PMY>J+e9;P+%Iw>OzpGiwHMH|ptg@3GST#^L?^g|dV zn)H4w^ntAFaLA`VWGEKhTNtz%%GRrIAe1cjAf)`d)-HW+<IJ2<FjXYaE$Qs(E+iQ) zJ?+wThYpvFVyJI<^Zl=_q9}j=-aPyjUxRZ8oU#XeBn=#$V&^YFtks2mGkNHdC<2d+ znYBR)2vr?EBoh$K5Yi>RC<&q3D^gEWh}E7Y+nBni_DtXzMFVQjfLTRpr04~oH8Qr$ z2QgI!h+z^Gdorzw7UaNB@hLJ1(hyJ}TYSquRo@qxzNTso)eXFg7!?qbO#7<u1J3Gk zVX|`GeV98tY@@yTrfcndXyo4EYl_~wuI);0C><VC&uBB(-+i_%wR5xIY|<>Yk=fLt z>%3~aPjlJbzTrKZ>rmgiKm@9cseHRyn`etb-Y7zMZ9H*WcjoOiwcI-7w~{W>1|IjQ zsK9!fEZcKXa#-Uk7Uv~D&LzBUrLNA@E}kjf(JeW3f1)1L1T|u&DN+?-4+1`lH-)*= z^ixQ380eo=cpJ}3k!(pSx!_!LW1Yn{HqQlfiUEz#!gcWpP=>SsBOLClrGKsAkcT5Z z7~a7|vrp<(z@qnqraIV;3s9Wuves+b52#XhW6@XQzOq4T-m-zR3}jLwva9#fJyQ3* zm>Xz^B!(CQK~!}|T1gpws0PcVLJ3oYW(uXVRJA8aY2=o5W2byjfj}zxqD4delJmsU zGg-ZAOn5B+^snl0_d@vBKeu?`euPTn4{m<R&u!oSOw&=U5YkA*7ci?dD_#uSSLyQ( zOwm;6r3N7{>q~MWGA1>4<T*-B3L^~n(+tcx1hK;c>q5ET3c{axwbZYM9m>_$+ElT) zg*(Dpp;PhQdP22F-WIj1CvKIRdr15KZ#o@e-tc`9B-<xoEd9mOmsG#Sg54AA_>e*I zi3S8N$m+R@O+2>V2db)5vm4$SWsUM)tyxjuVR<mzxp91Od{8H!A;?J3NF`i>M9_2y z$}2T8cw3z#T#Ey%CW$%w!ogaF@)JLw-D%hZ`sk$HVNrW$4DOuh)*V4*-LM|8iw^~q zVp0h@)b7oSWwuR4&voN=hgB`k=-~yAW(%tsana^6mVUbQxn`I+y6&=kkvoej-}u}U zc9<|wv~+P+4Um^DVEN?I-z07RaUOrjNu4#f<;zRI?bc88ZR1XKCX7vk`Yr-io7h;{ zy0J9^>$r}!l+#7)OA#Px_L>!>HY<v0?@n(h6c*dbw>sb_AxNUG>W%89?AB%xmMe}m zmqw0D1Wdk9<e148)GU0hCNxvHH~ZAl<1jN+&E*Z++)2CLX=uK&+=h0TaE4wU_aUgW z|5?Gk)6-5(z1ki2IiN#Yt!<vG49)&(cbsqIZ+cMC1;iakVs3QD=z$TpV&%ea2Pwbh zbz<qfN?TLlzf#YJk}<CXuXBw?PaCRgw<`n@V2}87K%|!qm2HJwD$%H|D9ta5@sDNG zk#H~NCHg^?q*>8-FpQAk0Fr6x8<arO&n<vL(&Y?@l?W6KZe@JT2z%`((xA?0=w{s! zGfMr6N44H{FSmM&onDKfh?l=y2=P7-C|Kxz$A?E?<q9pAe6J4U3N!ZWy7SRb-}BM{ z93mFOs=egyCq9b>#jFsO5r;9W65CmJ_-&X`Aps{yO_K~!Hlb9NrF|}wD$IRY^#)1U zvOzArTVWm9rik0YN=iv)7^>j6Nt3afBu<mZWO*wTADQZ0H4ed_OiURQ{9Q}W2dz$> zdtsmklwUlhS+LVZ@TCuOe}l!Tr~&v7z@VS`o!KBh{-**PV2ogMjBH%)wkZC%E|xHU zU_N>1z!j)AkkZv>enT_gf*kBI<U=<xc#tD-$|2<w^?(2({NM%@^`&VEWlJWJsR|Jy zXBurP<*gSn>}&?s&k=RuMyuCr$+Wa&EMBkm#(C4ILuR%{39j06Up7C<TvI**mjYoG zMqywSjWi1AVjwb%0*Zx#QD8M!#hw$HLFqprB$Ax7YG+B}0v&mY!8b(Jht1dewS^n1 z!%3)7@x_!OeL~M&M<$dx5M>xCx11dn5&k%EAjWzx_*Y3MO0Z>6yFu%ewy|<a(&xfV zc0%Uf*Rsv9s@Twz%qC&%0zf2Kj~-P-e@XCzx?-eSInU+jhjQdaMt=>KiQj8cEg;Es zYb(&3#=@2#5b5QAda<11AQ4f`<dWPss{Z!R1}UX@;Lm=mMJLRZ;#ky7DMn5jGE|=A z--mZ{oV~N`vSU&MAav-%8Y#2^7zHiJb^!y>#7V*d%ECo#7)FNNX|fXhPF<-REUS7V zkrdP~(965J7t9A2(0{x*j$L|P09ZZSGNsdk_V<wwsD@)CWRMJ0GF@A8<H$hK=<Oes z0*Ev?zCM=SF>Y6EU}|u7iY@z|@DtZp^N~PUZ@4x$l<geJPabhy-`49q;TNsgsaD92 z*@b1hO+l^)79;a&>qBps_O&J8^TzWXof~rNTp|72>pH>-VO?jjb^E|G1nXaZM%X33 zw6Vuck4pdv3L=QWR9hpUXoW6-&{V8^Sv5thV2+cMrV;c7rc%vbli+5%pi-GhLZ-<c zzqAjc1_Z^GB&;%Z0Sj7r48nVBx|r!z*>p=&B<yw=D!fuLGrcMc0YmbJ+~cO4hU*Qb zU?3fm$uZELkr%_)kN0DHURS4dP<7^{$IUvr{ZE#@(2^YudYt}|c;1$ag6GzKRUXUj zcj;}v_}8;7?Jd`Ai)W)m>uKQOSAmBG)?UuQse?!!cp4n!rXnk|5hNo87UhOICrGtJ z0(~{XmNph)z~GUoB(~Sc4MI}W>kmVDr>P{<-xOhEQ!%G0kO{ixX({F+DZgFuHhcZH z+4T+%62>mJ+3TPB`Hy@&;Ma7$BSU*gVt#kHy{&m{!e!|K`?M+Zh`}alt!d2viM39G zdOl*(3bNg~a3Yr7-iEbKk~M;*zO)u*JFPSk7wj8zrB?{c-1%x|(UJMya%mT67Un8~ z9%a%P^^ogadk9pG)jh}_Ph|$PW@1hn(5Ujo-f);KpUZeAwyXerC0bzsFUSv!PA_!z zMY~UK7_vbnR_AM;_RfMD{ZOhmpJ{IEYH(|MTXA6B-8T;0&}!Uqmh|FP-Zvxmq4i^# zr^5}{7c>RvH7`HIf5gAX63C82_C*p*2K-%vl+k$Ic3!jYsn%S&)KlGPQX_xFtg8FL zFpc_Z!_#CAK3Hu2t~Y1-P*gj2F5+v<T{EL=SZSDATd#lVEBU0BDKs@iZ4dwKr*0m8 zB7=;$*7dGH2_v^D+ZD}7-+7_8(;pgv(+JWK`??Xy8D!_nK4e&8XAF73G}Z@4F-4mx zN2W;{s9@jNolRSJ&5$eR0libFG)r327&HX(oHJz1k&SG2uXiC=%$2%ejdk6Nr<7Y( zJ%Dr6S3`(!|HvNXg0Z)jGOf9Z07$bDW{^z5Cv~b{CQO=cXEG(^BExr8lipR01H_+2 z`f!u*1nhd#>$ydDs~st9Z`3SETj}UTqJDGA=JnbVO=Kl?=HXDVw(&m<`b2&>avb}; zu(PWNs-3VjwdiA`rda*RN2+GvNB<PC^Dg&_5dRLcUTB}=HRUachv*c<*N0=kof6#e zD&d3x8^+d99ZV2n5WrLv%PwZIL}r;`$k<?1o!hx%^X$~b*eK$m$n5YZth8aQ5Ay=w zf&j+!kg<SSnMz7BYvzQao|-75fyjcyi`<ljKOvbT4&xVg*Q$-BcmxUYZ_W2R`qm*8 zOV@=}v4zJP%YA#MOOW2X4q0aBochu2zMeCa$+lFp?hF|1AG|Ic>B@w1`GL0i=8*0f zG<II2HSqk0<9ZYU!PW#4o)w!lQ(nlW!Vb0F38b)eb^F5WCk@f;8Enn2Lq2L#Dq+b- za{Ull#r~ylG$*VPZ`9$4!g!JTN(ngn9C%WZZ7+Lz+Gz_i)V8)JFw>fYDg>q^HCE{& z@T??*Py<j20*W>qnhg}Qc&s$kF_<vDpLONJ1Q+-SFsO<{fRnWFP_asEd}Vy!^o+E! z)Iz5!jceWM2)8sQPzl6YksTC&di9opaqD~DDMc-!G4FaGl0h_ov{QTeJvBF}8L9E< zuO%Lg-5~5+$gqvVCwE)f8Sp|!?M%hUVg*4qfska%o=g*vla|OsYI<#x5dgN*ddXo5 zvO$7GHjol8PgBUX#hdWTP_qntG;4uSK+c`W2|f}s=WwJ#O>)+KDHnuIK#xVRG;l0{ zRDZkMVu?9t5vzja#O!NyBpw5U0^Mk^c$=&ao6VuY7p3r}f3F5Im(Emy!Nl_8%SHBc zK)}!X*<BaifT1)-Y3kVHQ}+YOgm2_z?8YL4SgO+pw}PBS%x6{4Rh@{Nt!<aUs67Px zVRD1*ZO9WM$GFtHB?b_cQGT2vRRwr%NyM011W3)4$5N3S=-+!u)K+M>b;Po8cuD=N z2c8!=AvyQIYSWmDlG-njNYTcm&0-dwdoCET4FARN2xZ6(;|uP1#naYT#|=YSFJ$Bn zXLj&kgC>TNYv2K`iBfNxj4%VXM3rls(L1mePd!Fy;zzx~WIZx?X@>RC*{q`g=EB87 zX=FPoC5T{R&v=S>Nj3|m<cc&=k7Alk*8q2cn)+*OK91NEQI{x>>0zC)p*1NLt8}X* zoOO<rS2&!;(131J-n(VqBEs-d+4;^LdPo~tx0XOWmJfY&*q-!&hk|`N4fS38mOJbq z58w%7Uj;n=H$}MnFUQ|nz<qUu8=Oh$0<WKeHSOClMi~!mw70!Eh+Wh5?4BT{3$R_t zoF)cDNknF#?F#i2mnqxRLz$t>Aef?*alo-K5KS`l8Y{XId%98`SeA*R!7r^lek`J_ zJG^lkE`chC0uEYp-Hjl^7p~Dl9eJq$zv7x%%Z`Dv@!oe<m*l<g(^`_z<`pJ(Sq1+C zkDW5^DYHfLaQ<zq)4{UK1}s%rf6k9pta%;~c&p+br6HRjnyt`|i%VMoB&eU#X5LAn zQ(!-(8LPxrwvOR;xs?qL#_G(2l1>3WQx|w~9*@L6bG{9(o{6shAaoKU+81Q<{6ck# z;U;^B!{0RY;(VUCdmNc;I&?%k_D-$JWs^L7RW4g&)bBMkX2;Haxb`(9ZJIL*2C{tx zh4h=cj@ZwAzq$E@x6}INhlDMdj*Yu*4o?v0*?1iGr*6N?!W(|{)Nfm}`Jk((d3N1^ zI~a5i&`A21$Alf&n}Edm>vAAKn*h?S@DGCB>g3@f{f|sH9EG8205b%TkXj#MGxT)I z8}Z5gsSW6rq-F5TQeSD+T)8LdlL&FtJCYCaN<GU-^Ff!l!?8o@WOy-YgppK|v-WJV zkSfF?*rDkLawRwvB?4M@4X2U_K};Jg+(ZT?Y2auQ)Aq~o$qh(&F@?7l%6Do(-MZl_ z=**k49q(uyO}Fcftv%6j#-87|uf~?H#q#UTdX5hczw*m18h>TO(^|AGy?MiCz&E`- z#{U!W%^-6X=c#zHxsi2u!G=OEG*Z;zTYx4_7>xN>Hzon30@3ZcEVAaa#kRJgOe?tx zYF44NY)rhaMl+;XDwRyE_M7S-tek>Kr5_P?b+X6iwe*;R7<dfR2Fi-1f2z=a=wEgO z0$qiS)7=z&>bqXvWp%)1MYhe-UoU-|1P^779JtBI`@8wL<25tc_T0C89;eA``2ozU z6{r5-tQ7zpp3&CGDmP*PvxmD~k!cs0o#{6=H|bv91{DONn@GK(b|2Okw@JuI7jx|L zrWNgF;o@K*Z@S7>sD6NsEx=mK6FJD>tLt(7TBuzb^@hKk;SNQ&S#AAurs5_w{whs3 zHQHJ_kqvZ6=gLsKcI=j#e!``l_j=IqdSnI-QJw<)<xtKjtwN}X5duX`pAtFOYbHKt zV<V+vOOxBl)^nWW6v!dL4K4@h7340bu@aYBW%kSE3^$trW~s{8_j-oDw?3on(0V2_ z?K_M1{-OnbUbp~UEd#mcSVB)~VT;#rSsnV!sZhu6E#_G`x|&#jO}^2=y)do&a4WZj z6~pui*rP#rC<fmU41EOFHA5|IyEmk@BNHCS-{`4UC>$&R`}VBZ%+|5}7XvUkWkAKW z5OHxzH6Y?Rd}wm@5MbI3`v%#5F>(o@9Szh4K*5Hadh0?t2>A^_Bw8Y2uL}vh>-ai4 za)l1M0rLiAill&60YsZTP3k2xIUEWV(L|8L-g6=YQddh8QLKvLFg!lElSM}xX`(%Y z@X}fap?^8tnP!`6K@eTBLj5gvV<YJ4V8pFCbfvGas*m>en%3Rnmo<4D3eKDn=@z-0 zH9c5rdD*RiMjw17&tVrzFMFu$$i<yd&|$(#iAG!#ktoS7A=h>zc5Y^gnfiO!Y$EJ{ z+XL2eE#J*l&}1{)b$N4nRSUc!D>o7+L`1kP-5B+`k^bMyy9vQ4L4|mO^s}!5A)rM} zZ=7-~Yj8C+dj5`RkX!oqk56N37eH6&l+s_dbOen)#5lnqiHne8PtHbP#BCiB9bJKs zy;p+GWBKDxSRKMOY<vA{YrYaF_TVOf7dgfL7Vzp|8!tv`@k7EM8BGDb*Q7qV6R1w$ zoRq4vv~o#0(!zz|+154Q=y1qiOQJJXB^`%NRb_p)phO+In$D_02Vbyv#1TN#+C3hp zE=F5g>|u3mTn*cuj#h*P9x;&kjCdkn`iIo34?7TCq!VzgUtioO<BY+!_S3iR#9Syk z^i9lVjNMSSL6h-;w@Ydu8>Jddyj1TttC=`OJYQ<vYigv<EyIpuY@}^)e4rk7tj`3v zP3viXOLaW65_R-bY{_II*cON~uEeMP{AR@#)JG?vW9to#5U0%zswJ$qcj!Tza&th5 z=hQ~)v}H`S_eRyQRh>m>)7GG-`PXb7ed%@`yB82KbS&OHWOEkoyiqsftvbJ7gL6da zElbZN|HT>u$Sg}w@i&}Pq1Kx4;ok>*%J6_#2f7-plu}c*US*=>rNEJus|=D=*Ct@B z*x{1t>cOs6*dx*w$z-#J3;YY;<OBf^9TVAF^bt&>m%@$`3^L}ZL(~KD`S+VMT^6f5 zokzsb<}@-E!v>cQvXHi2jS&Lhl<t<8Q`p<1o48>c=<=#>X=}SiDB-Z81cs)ti`^5n zkJ$}yGX;pP9zMYN^*5@D?$%+qxclP=;6JfDG~;pJ(|bsP_m4F#7bWKRvrT1dN6ZU8 zQHKU%nWkC=tU#U@s092{R)S-a30tjPDASpa{j6`Oy@U4FadPlr?o})=^?^s4WIbRy zdsZTkfgp(8{4Vk@`#104fvdYc(T$po8?NR|HfXh5Z@9s$baZGzyC;XxjN0#1fCL#J zflvL#l2V+ptL_^>^xSC+Hak*{-~O%z$L@f~dK+$C%<9}x`e+uY0>tKYCIHSx{2DSk z=1q1N#K3EATr<cf<H#nn^WzTS21LTDCg}H<)Ji|a#lB5h8JXi!8k$CUJ<me~f&Mj5 zm=vkVH+B4xGpu_Ri$}qRHN$Y|{HG5)V}YpliH~b=;k&QmcL?3qWVO0r7-795K|?Hk zj|+da)xdV1bkHjNi!`g<?91@x&qM3Um)o(ej$wl?0x4)w5J5zYVmBtC$_<yTthKc* z)hbmt${R36cSbrTWwe(DUL{rO(&t~)`FO9()sk*>fyL|cq$i=T>ud;x8_g;{Z_)d& zRxFKy4jV?QV#B1XFk!KV0v%QhY4f|pcK&tvOoH$|_h0nZd?v(8K}*0Rcw`aTlS$Pp z*K{zz#oS0+E#3*QB93-~=dc=;#z4chh+oZsq997<wAR~$XsaC#Igf!u;Dr7SBqVot z!IukPkj3z}cY7RgZ8+WBqlK}(3tNJ%YPagnhe8-XbW49ow-^|vMjGMcBFaA@?e``& zXd=d?shD(H7#V|W@-yjNu#2tP%r-MGW|eMl1_VNMqzRcy#ooV63@T2wH`cbzlI&|~ z`(#tRrMWSY67Ou}E`NT^jlZ4I-fovW+<+`N_9UXD<WXo~-R5{eew>|_ZfyeM$|b=N zNtp~?gVPlDC(^7ECTSzI*rbd07x@<v{CtnXlZ}YNsQNazsW_h!7p=5q=zc5`f|8nM zy+fXT!(O*s=3~o0hfl*Vk8Y@$J#9tG%dans^z+g_+sx~3(3E6K(Z`TB)K^rMNA)*> zWPvFUNRJo!`=y@*wCQ6TR_z2Jp+&j>kim$!NsEr~hN@P!?$ocyf4cC(y8|xwo$yaw z=Huh0j}Ie3Hj&9CDEnV30a6=^5{yx0>HxK>g$uFVCD}x)d~XuY;DMwON)O#}HNV!~ zhK)YDrZ=@{acm1gQ06O_y4MmhJ6C;**RqbhZ?xk7Z;F;5<-bMb{w*xQU=Z15_5f5e zki;qIf=8yO6YC`z^ihf_wo4VmwDBBxXUe~-qyS1D4Td$F75pt<kI*anK`u)DLL7!T zdX<B>rd!hxXNqRI7kDXNfunSAMw95q8BK3Rv>u)dCyqTqCBF(J0YKp#HDWRZvMpFi zFLRYlTA-u3K#U*+ITrp`v?u$CW7lEiu!H&M#9Qfj83lF+1d!Ye#<q$!{x_h#SdI4R zfId2DRI)G<kgF>wJ>g<&CX=X6p3H+#RTP5uD8OrKf?Km82rZ9)Zr1PNR!1PWEjzn8 zy-mC+Yqe530A&PNt?8Mt-5$mZH;NtXpQRsu;6eaOO)X=d<S<{5j6mi|)Guiuk`Y8% zLyOG+X@(nATAtF2j=^9!-xN3nMrr_x?mLP+Eunj~68z(IRE~xdW2~Cb>d_6i9tvu1 z1jq&ZH*m*)`oGH^Y0C`QVAXb#3ezg?$c_IM_6X?g7Oj#$wz6rHKL%m`k_6lfNGZEW zHY!ruT%lfaOc&tx|AeFz7k`hWJPywO6+knD_{x|$b|f3ono>?Vf}FIfYii`e`odxC z2j~pv;w`u}faLxfr^nHAH8#IW-MqAx+x2X_5UExLJG_zlk9`|c&t6`I;j8+@1`vn9 z(YAx$6wZsKl<mvwh}39jKnQydo0<MdRN>t+H?*!1LGgh2Tb=q!Y5e>iGh+ycTNfI( zcVx)vMY{pTJ4`lBI~<WUBbI)>^y`|>Lm-~XlzBjnyoHtvcqYe5-x8<D_-621q&kG& zp=Kyj0K=V?`ojag0;em>?bBKQQf=dK$nLgd$CvOq?Ct$i8@FG*edAPryWN33_F*@C zVebz<`UoGsHY$@m4X^h6+nul{IMh;cLNvTeS$b<H0C(SK5&lqU&xaC0uC{@F5d~&@ ztTo~SS62W7Pa^KcFE(qCgGK6Hqytnp{8wE;rt1teImU0{Czl>vdVn84y(iyydS_pY zH@sU_pEALO4U@N-CBB2-vGm%dx9xh>E8jM~xzLy&K6>sP-$UUWy(4G(%zS#TL+&1H z$I8&2r94)~!?7}aU>Lz8zzWHs&<;%V4QZqlJ6f$R_@K2Kc1N-~8R8L}^0-y^=1NL~ zP3_!f)BC3F!ll`}TV1;Kam6Ms5O9p=AGEuqDit)|#lt(T!=HLSq`AOlG{a>V#|+x; zgs7tUIP$Ao*Z}qe+8&!7>`ZtWpv94{M~H%)J;|eS21Ff!5cbhE@C{nx8raZF_EU(P z5KmdPFE^2fQ6|}(I34^}`I{lDL*qf@+7a3{@|c99+;O`UQU2yTH2{C-qdj!cF!E_a zUrxop8?xen2{<YVF_(V0^mp=LcHk$dhg-aQCR0@>TGQB|%U=OO?t_Dh;E#+X-P)P< zE&Uu_(TE=AsqN_uofA}}m?uCnajc7L4aJx)Rf!f}Z(=1~oM=X5s$(@{d#g5LR*6Pm z`qI*uYbd}2+`sgTrKf7tW9D7b4)8&|HRT32q>&AI3FM>!YsQ|XziZ7Zq|&qky1^&- zhKL=RpEdaW<<d7}in#qu-}tR)rJ?StL0R`YmfrjsOJMqLb1QQ~j>l-U>e?G#D~6`; zv{_plS7;uvRK96-+hf}aPGcak2u`n@#E1(9aTe1}S&gfNr9mlCLyn7(r%q{v(3ELK zToHGn$)rJJ-fhqJEVv?`4Jn^PD89B}XY0D|Y`@*T7{&3%!H5@UOV;=iD4kme6`M;- z2p)xl)8#K^`|QHKDOrRAvjgX-2c|pxF2fb{2fV4Xu0MOc3h-~7T;#e{xdVIIoROf5 zcm=SZ;6KbZvhBeBx!I9*3E~yCjimDII7yxo&yyffxEJda!QteYx(vrAFY-tV56#MS z(uTtFC^Y~D42NGYdb(&4uw~c~ca9DZkKT#%lMtl^g7kF5Z=xb<e&^`W5bALfI1bZ; z(%GK!hmei+H{NWX&g->;wh6IuU^#b{#~1gkFXITw4Dc9YRu5*|sJgs&-xyW5wfUBi zcVT!YM#ocW%G~t1?MvTwb``ACwgIdr@_umw?nTU9e`I}_xDn9LoFB~*-)m+|BwqWL zK3J0l5E~%HN}^|#D@YHE>0A(h9!@nzaUwfpTjRTI$ULge*Zn1Up0GXKLcBm2zMf%6 z3TH`i&6W4!1CB-jjPfY-5jXg~;pkGuDR)!C%3a~B#*-iJz<#J~b>?mDBK2o2Lz}`b zFaymEudP-04aRrOHg0Zl{p@EFpFNg;_?gmpV`O$me2Vfvk<G@$&mk+eVg4Bx&EGtT zyT;fgwwn4G*jiCeo(#7HSYHiJlH1j8FcG}!WuTp08UFf(9adW|<8(!}yY3+87*dh_ zYMXa!pfBwjQsO-S=4<+fTY`fF-mP97N?1Dz^R7D(8VcE4`V1VeaCY;K)>Ow0I||*o z1i>TNB2PHunW^sJ&aDCece<Nzo*W(R*t97j(W7=Urc3wrjmM{t_uCTJB60$ChW%Qk z`OJ%D)_O5Ppn=KSr9fJnS<4&Orq-HI#ZeJ6a9>{G4B%3d3{!e4SQjBzBA(4eaYCyW zjcU*T$Mer>QTa$=B#{y<b9=V&Pcu3(JjABTP9QSF+5Mo7`qoD1`DD9_8!;cLm#wal zY8jcOAr@)~lV{MMt)nL1Pyg8gIbpi7Q-@Qt{*N!9<f;7A`h5cfU^R$Z;eTA<fGOBA znBV_*PB0hj9RIYiNZ56<U1eVy+cH?LBho-1#3`Ni$T}zwn;wYpZlp8$Bp8unv8Gaj zGFa7cJKM4?%_dMSFAUV;m0|tn%V2%vvYIPF|4QqD80!D;|H}%{oBx(hPlcXqxqyUH z`VTujr6Nv~C<YJk`~mucjY$3SSL#=!e&(0S7Z`fc^Yll+8O>+WBj^G6y@#Dab|QTV zmPBmpc9f3UACfha(g-owOW6|tAL3pmq#EiC>VxWEYTLE<YtQHjeV6`5BW?VVWz@>7 zciZx||FG|IL>=F9u5*6H<#fHz-Q)g{r_b}C=Na#-z5nUk@B3@N%YWSe_km*IuY*&; zM?#^{kHd!>(haX`cqVdn<fqYN(I;cq#@-S8USquRs>a_my|L-%&97<xQOj%Nz44DE za*59*r;_)k0;xYp{ax!DTc1t8B>lV0J=sw9?lwo;gYCBVv+ZAM|58V5$FYu&cRZPE z%H5iKEcd&7E`L1#NdEcG>pMT+`E+5d@P@*7x)!?L+VzX>9o^sV+0pZtJ^$Vt?>*f6 zM6tVgzWAl$-xhxc2oQYm``gs+{2uqn)6A~?oZ#~0!+(IIs?1OLwRCkBJ3Kg@*+sSZ zdKPfR7vC()jGth~MS-Q2x3N)?VLdp4a8wy*UA!0k=TF%d{8Ig-GS5b3-3jKPPt;L; z4!?8wEmVJ7@R?q9E$iidxQCtrPCF`oD1STfxm$b=?~CH|75LqcU$oIRpJmsgZ$UhV zx(#f%@>lppJ$}b<PyG}3^x&R0+3$xern*@JuG9E!5bwvBcVZ4ZQO>}7mH{F;Sqsit z>F581K0To6W!B8MvL>{7aa{sP3%q&xap7m<DEBM-S&8b=9;f@{J!f$L2XWt98I%R2 zC;yg3#m`v-KIylK{{ZjEz#e`U@5{j1eFQ$`40{sqd>uVgKHnS<jfvp56)@U}G5;IN zyYYKm&iQR@1TY)JJlfHQ(4n07DAf@h2%h-tL4T&sVNHA4Hn}zhc8=B*V<9>u8k4vp zez~l(>(x2n#b2v%ucCJK*F6Y*d|G^lC{CQiCu6TSKlzVvj+Mk8c=zSk%NYBWhduR+ z>LuHHXu|;(XYpSxEAiz)c0F+J**Ifwx{)?|eGPJfp_Sf;Yx&z~zMVJXis~CFih-{Y z^iy%Q4qD<a9B6wNc)<JFpRfvhlzo!-hyn2z;;Z6&;)lvxm3JubQr@e)U-={DgUW~F zfp{d|^sD9NWjrO0yT{oLI3e-UyT6RPpA<h(9$a<zA1i+n_s1LJjlX&xxBtWPPnLhY z{G;W+U;e@Jr<WgH{@C(ImOr%Iwbb$ayPtp8^KW?m_0N6xxo<!BSI>Rxxo<xAm(P9U zxv&3d-;ehE=myU{=8R|(|Gh5`x|J}%?GoBGimg2kjW}gUH!N10-Qje(Jzk$b0PkW$ zBpPdMYKAo(Pb5>VFninDJ97EXLRWWBZ?O+L^Wf0%x)C-yHqOfHCnl#hOwVlGbk*$K z=Bu}C-FD6P9oJsBbAADDxxV(M7yi7V-gG0y0@r+<S$#z*&WxSC?asSyzhia%70P?} z9cBj)-L&Tj;%->ze7wT0o!_t!kI#ORxwg$#^zGNrSNdX=wuQZi;^(fNuZZ;G;})>A z{rgk<Vu?hBEmYWKYU*KtZ*uQMXNBi0@x6ySD<U615U+fGYemgm|8N_(O>Wq~;hJ6Z ziBuwXZa!Ywx^+HLDKEt0l|d>EE-b{)o1GR9RN7Egy^2@5slA(eetzqG9D_Kw7_Zp2 z&hJG{oZ4(u>Zelw-q>DbK*TCMx3G|^u&wh47Zy4zN<O|JUQyGF7?3u(b-tpdCMtSr z0>fXZ@V%WCHJ`$`;s?%a`zGSlV!oXIqJ6{uiqerl{bc-H{2ZQrzFSLUTHEILZjCKo zvoN1pKx=vXJep!Osp^|MD_Xu{Oy(X2`<I~6ahaM(0mP|^#fsQ>sKWQ-`4z3Bvts1q zG)Vj8{!glGAG%<e<-H5kW$%<6q$U5bVP}&YCOQ&zU|aKRfp0UP!gCnHBxbxfzTsSI zkrqNiip2<;m3Rz;tc|jwq*IGi<}2(kaC@Z{cj4yx)K=f*Ae>1}JZ!fq8|D+SRAQkc z(OGfk&kM1ka$s?)v*OBQ0`YjoF?kiu3x(9gLd8i}*Wk*DtImoWkMT&5!~uc*7<R=q zxi@}pZ@l6H&^jxg{OpeT^Xh@Ah1QDmVCs&}iZ?&IZGLvUSs6>9-Y@HY`SZ*@dF}jp zw;SuXI8kxu2uXpu6XzZD$B91`9>Pi}I2imqVJ?6*aSqE%ukA>ra9gb$Gu!DF;6Al3 zU?wvd|IA)2;+my;fdxFzm_G#&PgdC2!*FIuZ1CsVc_udOn6J1~6Y&idJCM?b7w?^j z@5Spccsv}|)x^ZPz31Uetenlok^oZxbMxmqE5ZDEPM;ybnLfk$^9p@7<j<@08Ofj5 z=rfu>uhVBNf8L<a#{7Bw>%z`TQ~tb_KHKy0LWSSZS?Q34TRST`Svb{MY0k5XGxy&Z zV++REjAzF&M*2)(jP#kr80j;GG16x%#z>!OjFCPw7$bdVF-H1q!x-r^pO24766nkW zG@iZjNdgnC=OR8UdBV3szS5bibb^w)fW$MvwkwiSYH=_{Z0tpQ0F^o`-Sy?+p-NZB zdAKh(%!3WlBJ`|=%;n9!`FKf=w}^gx!{rnWMsdaAQ9TPiD%teZSZeTmFAriyeV9K6 ze8pS#0<jkdJ1eDpAw1Gq>HmFQfrR_feE>_sLg{!RK10L{P;NSRZYDJYW-$-84z>u2 z?&mxh!21WmWkMhj{Kzg9>tycWxk4%)A329-4XrfC3+6K_DxQg6@ycGJ_wu&+M?_qS z#~u+GCAu&{JkSDeiud7-scBFjR&y;Wf$n+EWcFfm?}1cBnOr;oHY6q&V<_)k0PS9S z&mx8d#+;g79E_##hH1<TAM!1D-W6Vgfe^D)!2kez4G0C+e#uDi#6{ekmV>}wNE+gD zEAIkE3=<6Ec)OOV!XPyQ(5#cy6$=PF9-mIl(93AGMkL5+0#%5z9rK0w2xKFTxLS#a zt$<ul<7yL{>eAO-sLPRSZ>qX77-MH;v^s*x+S2SL@qFnNYfCwnPsIxawP`Tsk%hwf z0uO)y$LrNt&6VnMy;}CJ-MXgF`g~<DS8G}G(20CyD0dDxM96XuWO><(u`Gp30q>ub z;35R9L6?v#1*#~3NX#)#foXt;*D<v=-`|glGgm^4{|@#M+=#!7qy}S&RqLHtsE%<1 z0iy=gX_|k6AWuWA&Z9o%8B9575+|fR=+IxN^nn&PzCisZ@LcTdt(4H`s(fVtAF~9t z4S;KW8e**mr@1_#V`Ua#-JE}zu_+X;MuAgdOa5UlYqp{wYqn9J4QRTC`cPpz^`XKJ z>O+NVsn2>8uA@Fw*hzh;Fi(A`ut0q#QMjJ^P+=GKp~7zJLxmft&ol}*QXeYpp*~dD zOMR%YNPQ+y*hhV+u%G%+;Q;la!ohrHxDMt+bWs^Y^-Z!gj?!U?PpB^A;z+)-uHO4* zx{$qZktOPVRF<ggv3zBu-t{<L$gU@3iMpPYCF*)>zA{?xdWtS&*VD2@UC+o8bv>JZ z1bI_6<!K^Uu^g-@ty}M?iJVTxpp1Xz8Yn9Kjo{3t`hD^|(<dHo;H-lRkJv5TVwMmj zqmnW4DYE~V6=loBr&!r6D{Sg~E5Cmmw9EVF&npL}&S&WAQ<j(Ez_0TC`=Mf?3zX=E zN1PV?51>!-<yTeIH$YlUo!1UbNzruapNH5(Fkh}GOH*7#Hax?A5~TWxZ{YN!FYxaz zKeJq<Yxx!8l(AucZNrCI#+G<^<jpc|>)cx{D@Y7DP%W!0!0xY>H8?NdT`lXY>YaRm zeYjfhVo})6<}*F3p6`{<hvlo{xGDC3@Mp;iMj6@s;@#D<z`t+)RJE+YH}J)3S!HdC zty<PtROzjj^;Pvwaa@_J*1K4rR(p<T)$_gd{K*q1?>u$nro(6AZTs8fz1`hIoxR;X z-SMe|r;prpJidMZk%PzgAI!%$9p7KDUD~;)k2(*=XAdtPkFVdqc;Mi%J7*Vn9Gu^? zeew9|?FUaCIW%$N=z-}I$InckICay(cyFOQJ{-TKODFZYQr&e2Pn|w;;&{Bf&|T=e z^xf5g=C3%?c-zSBx8Ghkws_|7&5L&w@b0np|I+BIH{OB?Et>N&Z_e9pKXT@9{F;NO z51zX1;DI<zDSkEnL;0nXDcEc~4j(yfcG!O6(3#s8PaTY-;^>k62alh|t!IxPICv_4 z=J3Jz_Dyr~Ehi5iH#^Un9rE$ow0jCY1@mFmd*h3@Egm_#xbNt}xE#%5e0u%1_~Myi z+u<{3P7Zf<o!)=y$jLLO3#X49rD1n%nVx&$7Q|9dV0Xx!NY^^TZo>b~KEvY3lHJeR z@!5<2LDP*h_&Q~&2jw`MVh8cRwW;rMTy00sBd9r!&x6P-h~u;-DkJyd_dXdOv-*<< zapx@Fz9^r%9#2>VwH;)~FtS;ccc45EKhSpB<1{`G$`K!86Bz$d^qt1%ag3fmPhoTi z@x)$?gT_28pZ;P`>8wBJ#oxBl?>adGf&{&n{#y^dtAIKEuR)Yx_Fsi5t;`6#-}GGo zY!)%!!|Y~!-hpd#-eXv~|9!Au`^H<UE3~*~eOA9Yk9Xe=n9#W5_^;iBE3{I#;V*dx zYpWDzS7X%2P)qCnVk<+KWW)L&##2wPdBS$g_z>Q7JMKRvpJetpik^gx$K|`}t!Ggt zY&wN9jf~#99hf?Y&n>`y>brVub8DVJD|G2<_W<7XyLx16-y6rMZo}^pVCN#+hrjgJ z71%7wH?D`Qp`K@eqc)7}48BjI+=cJcm<3VgNz|Rjy9n2g*4McUBcH|${yX;wQ|K+f z5)^W!uX|8QTU`{$Ck_9%5K$gx#rW*Z0cq!g1oI$<iyUCcyC5PjVWb&HSQNRDjX1rd z88b?<6y#+Z`wX+d*>>!&$$>j`V)R|0k{-Ob2udj-_jiB|g2N2M(+kfeaw5uXJ!o-? zZNThikQuQFC*I9so|}O&Tae1W4Oq1u_;4-OWG8sS0_6QJ_}Jm)g}3yL?3L^d?C;oj zxx$`gKjtd?KKlXtA^ThQ_c%c0Pmtec;P@GwMT$I92Y0gfv4`0s>>_&%e&q{DGe%~( zarXF;?(X&7^0T)%V17;xX)}w*jxB0C4j(+TsLw4P+jn45%pVb3k7(PE+;nWwxb`F% j?up~d*271Xt*4LBZ5yVir>dVDs-M#YZ^XFZpLYLG6Te3r literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..f0d6ea739b8405ce37eab96c71feb4b0091503f4 GIT binary patch literal 18516 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4cf8f146967e1243ebfd1eab7ff9c596be939f2a GIT binary patch literal 15732 zcmV-)J&VG3Pew8T0RR9106la74gdfE0E83(06iH10RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3dd767131a57981bb2e065f4a34010ff3f3ad45f GIT binary patch literal 30960 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 W^w{Xw*!uc)w0<2USaW!<9se6ZpCuvy literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..9da0dfe39632bb169458e6ed72c84803a6c058c1 GIT binary patch literal 17572 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 Z)y>TXO1na7HvshXLi7Lu00IC101r~0ithjb literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ce19ae03d50fade531801d77634f35ed06f90681 GIT binary patch literal 15024 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 G0000sx++@$ literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f117cd619e99bf1d030446c40c725a1e79c57b71 GIT binary patch literal 29812 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�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 X9Hqzl2L}4G*Z%BvfN;&>#diKLsZO8M literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..6ed98780a7a46c0c459d2f455fff7ee01954d3f4 GIT binary patch literal 16228 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%0AmJ9j#Q5RPd_e^lGxNtoUKL<R4&P{=H(Q<2H zi#&|%>~XB5B#oqTlN5~XRAg~f#0gY{39KB<JnV5i4Y?f56nrt9gd_=^xg03}CKo3s Y!6e!R&Da4C4}uRrdnusrZvevo2MbI9v;Y7A literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..27611491a1fcae82b54021dcddf3de913573b065 GIT binary patch literal 13708 zcmV;7HFL^$Pew8T0RR9105yyN4gdfE0CeC005viI0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e6f34542e296e006bd7f5b313ec59b1e42f12d8c GIT binary patch literal 24620 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4a48e65f0de679fce0ca17c32f8b52bd3de33fca GIT binary patch literal 13428 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b0aed195ca3be06a66c66919dfd66564882bdd81 GIT binary patch literal 12064 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 zξ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 KZqM2T0002O@mFpD literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..37faa0f9fe41ddb1c9a15725f8ad4856599193a1 GIT binary patch literal 12916 zcmdUV3s_s%o##2{J|tZ|&|4T`xI%ycJq$=7Ob7-9_<<c`V<(cGCJ2xX3C0xgEA4DN zb*2xdX`7_krge9kIA8j;GyO6bcbg{Jw&U4NACu(UrrocZwo_-@?(DR)&7{+Bx7&6T zi~XH@C5#<AaWnn)A^Gb6Kj;3>|9$@FVF)FJILK)tkn!DPo7yuIIrId#p?7@pNPa%J z>+vt4{W(Hd)#ULd75(@${|G;}L-U7^e9!xL|4hin=LoTW;&6U(9{o;2+GhdHhi6Y6 zdTpq8C-7GZsr<rpAwT7rUit+gRVw;Ar_mul#C{0=^=Q{mA6Yti+;4dT@3UyXID2$5 zzr5vR|B8?ePoq73B!6<AykvV1+K-^E&gG93w*AeIp<naQ36Xy`e{^x_-+le*`v_@$ zi4gkf`Gvy#PhZ;BjrX^M{$9dJJK(pN57wH9`Af1$32TieT}f9Y=?b_1>#6p3=DYNZ zcDh0+d8GI_{j9K;c!>N(r$Aey>6AO2^!vOf+2ssy7;a>byyxB3vZ85<T>b9%y#96C zmX`(5`i<iIiy!)yRTShrZG$Q#3|?*E<pVDl=hfh4rf^+jM`yaz<%~2&Qk}`9-%Z=@ zS+Lv9OnLH2g_-Sku>5B6rMzg8tk2Pt^we`!$t>iH-v-BY@o}brV+A-`C^*v2WV_!d z6O*j-CG;m|tHn->2SwQqNS_dfZFWU?{j`Mx@icfm53QEL!vr3bfQQGG^o8*}f8h~W zFaBlI>yI^EB}-vkmKQ=IjU>_tp#eW(3Pi|a@gSu@Od@@v_^e{LS;W(Vxx!|7{WSN1 zzxX(Lxg<^C8hbk6bUgkG7akE>nqJ@2B;E<S8EAD8bfeH}lWrM21s63&BB>4l{zMuZ zJ5ul+zA656q&oBlyx88^o=gUKlw_040lubypMQPcfS&_;QMNl8Ch9B9l#0~TTdUYa z(Wcb)deEfiipZRsGA7E*A)8}6trC@M8+Y0&4%WFPDp_~N%*D^k){O~w=&{PkT?(a} zLJm=sZFWf#9U-V}-7h;LmFH@_Z8b8L9d2ezR68C$D>v0PZV+WP5v-QaKI*7W*qD2r zy|=*LCfzUTcJ5Vt17083S65m$h@0c}d40N7GV+I8uYXHeT6Yxs0TV0?WKNPK`<k(~ z9Wk>xw!>x^T0c==EmOhQTjP}}mE3g)D{Qydb1S`fh$fkuggq37x<cm+Lu<S2g3B$~ zyK2iuJ{EE(Hd<we9q#hhcsIzOIxANP6RIrMwi;%(*HR`hR|TP~zhx1YVm~K-SZdev zs7?$cps8fKvooFciva{J(pXOea`AW6Vx}JV_R#$T^~)AaRjIhj{>^c>lTk%!a^J!} zA-e4n6&84IQMRA8u<w!xIQw)T>WRsnm~2m{dFYV^deU+Sh3iZvE*C=kd+kzv+f5CU z<)(~cvj**sfgYECL(@(5l4A5Y*k_Vd4pfOWWr3Z7Ur~~h$-S-(4KBUNBE)<HwiSQz zd)jvCdu;z|alLJPrgO{Q&bFfU4`LjnSP__o9Vk^z$*7tkR89V+G<rVD4qW;ye|Rjg z2Cyj05-(z5)#oq#9|-v1_=qd)Lh70@S?M;(wDbLvZDN-_YTq?slg_Z+7VGg=784tG z*otQQTicEXF~(w7akO!c4UmhpPxE<zKt>`RkU+aij7H0x$LVj2<`SFtt}*92ZibHE zVYiWH=m-l?(bBp@p=KlUBN8#84g%`M!%!OKM6WUQkIbSt`kCfhyU?r*_bW7NQ{$3U z9kE4~%#hM7*lU|V!?rq2md6iPTBRs;Np&6Or=Fq@+v@sdb4%1#yqnINJ42F-MkQ<I zK|>!3eX_bf)nyA|6Q9~?6yyLPrid}`O<Y56G_MN*_<v0Ss`L++G#Fi{<xu8TI$ONE zET2C7)Klh;y0ZMo*Q*-pgm==bvT%~UM(W|68WG-+{DGt|)RE-Mgj}9=E$9*M2>HVB zj^MWKbQJ%+W7sJakI*$-a1J|!en(TY>1<MLY7(P-1>0R5EjOa3D7x8(AooLAaswng zua>-C7SveZ<f7mBD=wOgqrF@lr4L<htjS&z2OV|`6KldL>4McigVkxsHtKL^C={q+ z0hB1+<DojAp9K6S>P1a4%5D;NODZoVJUr>tCYHKcpr5CoYgPgZ^LqXHE$Krw#b13; zpo0_(<j22vvEr^R^P3fWQ^jUSF<Z<EvOu4{{q|>{q3l&Q7wp|A)9%~69uuQNF~cl! zaSzrgw|c-CivD>ERwa`lvL7BfLRVL<*l1C5w0KT<1FK~<&twyy8|_F7lIAtSM`eZ# z4o6V&beN_ldgw5vMP{-gO8?mX=?pbFZD8kghiKK#-@W!46+?>EEnj-(RPiex2Kl8o zY>uj`n;_|d)nAdXutib{NpLRK?@p8<r(RV%dRSwR*qKUoJSeIXrGgu~9LlCDD%hn* zSw)3n2}RT0nchryIvTQI@^NnTQ#!Xc?8MY66U9#KnjF(_C*~DHBo?OYi&U<s3ExTm zM>ZiekRjN$r3QBSv5(SMTay<PY%SJC#M?WQe!iL*YcG$vzMSyQM)}KkD;=q^mg-7s z76q&540!C7HdlqiStV}RwxNbqNSk`A_1A(};qu44*pWG$Ud0~R*j81ut;Y7?MsJOc z3KUBnvsoOCt>6CI`(E&UY?Bj<_00)?wegx!$!tq)EWH0KXTFfy8t<*N_xgg^jB$&E zuj&^4DSZ1UQ(J1_+dqs|_5as>Lr;`EXBAz3x8pjF6@?0C;1BEAlGoo^P_T9)DpF-B zD&HZ>mtXjE9vR{Pt;qa;9^X=O{GXq7|B~eRmy9*?O0Qps$O-ZR<kgw?E>4fPUN5h3 zK+qR6{k+i2(rG-rvR$vPnM^n|@%=NZn}eB54x9^&jdVxKlfp(?#@g>gq2x!|bgD5D z@#%%ohb6M}>Kf>*5G2t~GXb-?YD}td;k2cg>9uR3M==N15i+Z6t58by@z)ef42#{| z+CZ7~&A4i&Om+&gv$5mq${ByInF$iD+g@20svHY3QKX7A(korNmc|}9#4Ml<)s<-- zw}rPvy`|F1Iw04!E0q}Z$YS+iFuK(#%3^Ta{XWU$*kSBnOo9b_h#IUV7Ji}*80&<w z9{b$^{Uo9vXBqAw<h&<<deX<N8~k>5ZgiAYx`EWs++X}}vi)}(T(V#mJ}&s&Vlnx% ze^5kMrCT^eTj>LDTr|1Y%j5f{4g5sq!9@aAW!mZHapgAxUYvWF5wS?4kYJI<binO* z2z0~EcXzconceTMWTT_!n8W9=nnc^f4P(vNXFTVw^oVc#@JZVK*gY}9UFi~)fB0E3 zDZ0#(Qcb@w^UueavR;D(G;r`;K|nucxtx4M)S2YklnyH{W2=y29oV_?BN*09lkle% z!CDKWwlCi+S*XQkj>jj4Z&fI>)Ye!Tb9C)Lk?GyM%gX2vRBVlUXrKAaleo>G)~ao} zQ|97@;&bvwb(TJPw|#H-{@Ut7zrFa?^?JpjSDmq2fhqx)C%|{j`l62eoDSVvTr>W~ zy3M~__hH4k(TWAQ;`AME&x!qA4#w=&Tv6rLk;$g1$kYf|Qec0t1f}9vi(j+n?y<A| z-D7sHO6^9u_+0UV>7Lw3rJ_`h<nA%iKH4KYu#4h%E`N>vngqSp-MKvfn{OKzE~h|) zn-Xd-(OkYMaruAKq+gSWAGi)5esj~L^LhOgzqffaADo-Q9sjlIH^mpk58%FqP}&7& zP3mX6l0N)ghoe;aG?y=))9;A*X->~*+8*!<g2(OC<IGsf?Z#>Dn1|ha`t-fbWtZ9e z?!EVY*r)Dwn~Fav{utk%nA|oK4bvJkt)XF)jmKvf_#TIioUeYS^I&5Y@Vnh!>~T5k zl*c2mUCd*X42H7ZrHc^y+|+6+UM&99T>NSAqRHkq(ORnFTT4(4v5OaLFav9G#v4R6 z9O!AU_fS+r{nU(9gb<^gmC6_buJ7I{YF8;MWxeDXS%M^P;B(5@^U<Z;EfwZ?-LVTD zjW$}>_+UOeKCwUlP-9(P<3sGre|y#v^*4Rsf}2v;fp^`nHm769|H3C1z0sQbcyutz zUI<f@_oH|1zQY=s+LwQ@F&qYqeNz*+<{vEX|J>iZsTBCe1InQCp~;y_*;=#mUbR_` zHHYh3S_m@cvTZFSMQ(<D6@9k;Eu9^k63rnGmEPXSfL^hY>!y&WF&uG)c)km+5cdg= zlIakR)tzr?<ZCFr(+3{*Q@V7-W|rs@^?!Wt3&jsp$M)36#^{T*_+jbefAdy`e)Cxz zQ;$3)(RqOrKXs)0jhE??bn0N=s6yu?uyTF-N^9e!o9rN2Ztd94%+2jLYOSQl(`4f3 z=tv{&OgBdOH0RN!krXdKe*IvLEj*2&#l65!cImhD03G5%F6?%kx$nL+jswM-`_7!X z&oYFfWFKOWSi)QC%56vSf85uz4K$11R`22g$6I;DP9;~5!dWSqOEa9cJ$DS5a4biE zZKa%Pxo4^P*qNKQ-KPxNQIiH0zTaOpR-HJx75n{>be(aQ`hDu1CzVbbSBQKT`g}=a zj)cSdNeDN}m?a&2-MYcT_;~F}$z+z@8x-l3T<KT((o_gI9RY!+`xO80SvHHERj$pw zidB*YkJ7tYv;`}z^5$;A;qf?x?#;3l^`z{BAnFNL3*1@ArVzA7E!WS&eiyC`(BP}1 zOR!jdmyTAN7!wr5$rqXyEI1((`$14L`()u!*&!=6a&cR68-1ESEpG(AiJw~Wp)oRb z<xN;yN79$XGi7{koR0tB3jsIIuT*_GFR<Yil8_|%E@nOdaLG>W?+8(?pWq$%_)Fg& zQoz3NEcqJwF5N-@3g1^*oE>0i*?IPNf+*}19ui&>9pa4mXX4i-MOu`5O?R1F&C}-3 zn}2QTw~Sc|mJ^l_Sw3m`y5(2OoyyDByRH9ZQ*9~RHruVb9?<34zy5LI&WfI26RUv# zYa!(O=Rb*Kya6x0SUiW5&0aLkhL3>#FT($?h0t9(PU!RG5j<fwK+^Ov@_Y&U*;X>c zAJ7vP!woUN?<1F9#PdA?SL^I7ndgt7kj?s|k+gtER7n>!IST#{V9W#b`{+-i|0Cef z@%}3x^gWNqUxw@~?E;?1vrD{<bd{g-I7FF8nny>Eg|N4HjvNp_a_Pm@<5H#W6}(vc zBne~p(U0+Hv1RrZ^nciZ^v9%)>UmS9Jx$0jo#fSjDz`@u4NZ|gqW*GKP*=Oi0bwt_ zLnY*+cL-$)qU!Q^n?Kctbm~QmXGt{?$!`I>K_`+b{5F$K<Xz-F<d4Xs>>KPyf}r|C z4}=~HeJAvv>RfeIb>X^(x<uW72wTH1MgFmcwTLb9FIQJr!9yiY7<+KtShj9#MQLob z?n2m%u|IDi`q)bt{9jgowEDNJUs(O<>PJ>*FKxZle#!oyUw`F~Upf6s=9Ph0Ocz%# z{^sKUy!fk&;}@%cl>L7H%h8uxUT$_K4O<}j9et>*2S*>Pd-)1aqZ|GyyHPY|5=Pwc z$7I%X{JQiCv0nGx+r6mtBXFh91_NSWbi*IJ<1(p6VyZ^=XNPjCI`TAe>>1JIu>)Bx z71Ww?<A>Dc{aKAQ<exEPdQMJ;CxW4nMsga-ga^;VLz(e`xJF}|I({gwv6wogY8OT| zvGKt9CW;&F$)UXmv!QS(xSUnB(a~&3>&pdIt&3w_xtzLU5ap+|CUlirs@BTiw{pr0 zqgfS7Eaz2C8O@HPN9FGnj&*XZb38bn%jJR^jplM;jf`dsxm;WmV(O5pi4A!uBxOdk zniL+;<nRF0&uMf#u8FZQ^iro*q=^BQzcGaKUyY0pO=?0*2>ls#SzQM2l~$<%X6?z2 zj|TI5bJ=hXZ~MlwcopPEl_bYCDW;h+(eo%}x@%-K!vkTsI6RQo*u)`?PC~vWwZt`3 zOyx>iGm}q?WCA2mvu`}dNyZ0tCC#z(CM(Gd4YY*ToNb9+>3qfDLZeV21B=Jiq2+L% z2SWE0336|0Y7k16wbX=$aDLDbVZF|9tsbK=c+Ir+gKRu!!UN~6iZGN71;e3SODL|{ zV=IgeX;b;ZxaNq#09Dm&nH}6NAmM?WX6LQFXxY(<YZYMQ)Lo*&1Cvl&b7aQV<#APW zz-e*K85`M`T@j}SbM>0N5Iz~#T(OZo*^x1$GZ;d@NAGvXR!Bu=e|Dv!BBRm#fL0OZ zNs81RSh4XRJAO3kM<j%X(d-J(TsUiB8R6w(TS8$BE8{`qJs*PH=WlbcWGnRFI*uS- z5vuD1aD@<07%oOO^`6I(Q_luZjI0ngv@fewga_0i&5EQ{5V!FGbsXZq<aAQ}J;lJl z^7x8dj%vrE!8*9f3)?)=xaNzkP!9d@GlzlLiojuIY(?a7Lu^Ijuqw79a~O=Rm^iGC zt(ZC77+bM$*c?+68huw>YtfN+$F-=AEX1{%7}4y}cc5b}bgThy6*_Vlf{q;4K}Qb5 z(2>J>=*VFMbmXuRI&v6+jvO{YM-F2#wMU-<@fcj=99J`l&p3}~9#D(%d`rZ%cvOpH zCT&6zZ$-9Ub1H@NU146v-jV{T6xUkU!bAPqrj`|n`i8P7Lp%s=>pk=4*X=R2L)SM6 zIy&^`8I3}5P4##`@&8-BAP@G2yH?t%4;H0hKNP;^kZ~k-zALVE#1es?xYqf0q)5U^ zkf#w6;%`tB>Q+8^;mYmH%Ui=+Q7p13>nMwu(Vdj~ypZ38D&xll!9Sfuvt*)$<wRIj zdzQg#^X1oS!r-Ba;0Y>K8|U-AZ%_7%Ocm7N7g?iFl^ftS(2Qydd5{<$#_U5hubfJl z_cUr0dzKlW3Tr|pKZP>HGWj6z@f_yv)noEd357X4obL*TAz>JH0q9b|?;1j&2rrf* z3IKdBA)!#(uhIk@^BCNqD}i6EG`z}PmW7Py<~~p%U1}`(Alw7j+@yDFW=wEZ9S(2h z!g#cLbeC}hN**QqvI(^ZYa`dV)Cp#nT`o7EwH>e4R$n7fZ%(f9a49m-F|OTQ(jZd~ z%{X74uQst9%HCL5O>nObqcHd65-SPn#RS~4){SUh?(SRb)~U-wub}CVX<gCsn=6<O z#I()PW#kY~mSs%KHwi{q5?TWCGrGHY0+zkYlPio_k-#J|bR0y{Kn-8Z)Uv&ApNd<r zl^E|N`?%kDed!5z1w-rN9m<t-9OBL>J9U`bAL5?pDwgb6GkGga_8F5Ct3BqSC!wV< z7q?xfe>-X}^?I}p(Cmn5X@C*#wITRb9mcX&_S4Q7Pe*M8Zrv3-PskvUTYylG?2etM zde0~jy=M=n8N#c*oQ5M~oQ5O&I1NYkbDDl2w{jYe+{S4*lI1iU$#I$tkOQ2CBL_JR zM{egd9C;U~83u9(r{Tz*oQ5OgoQ5NLPBQ>xg41whlGAWxiqmkU5YxKX+<b^Pv|e-{ z*0C+XruBS6cOM!vG3}-`>brPDr@mXqIQ6WKand6(t!IsNjyH7DqdLY(=XH#ezB{Jf zyhggf8#?Ktj&af@9pj|OVqdg~th{*|h-&77Ce)9fEH626La-VC)?RE>=toeQjqUgR z3Xun}v1l=%`3m?9mJo~HQ^Eu?xKd9)xCfic4`x?{slk;--g?%2nozOtgOk`<fdqT! z+zPR^JWW^sL=*4F5;3?UO%3Yn(YhZ$<@e9VXAgjZQ=DP;lyHW>1iZb33nWY?OSp)? zfqZ`nmx!HwvV_a)`t3AHK3nQ{kSh9v67F2b-=*`%sa53Xs&n+e^Ajv^+*GrNOE@DA z_7^2wAj9mL5-yTPwpzj^QicCVHO9*8`t9tHu%*=RASvmI67F2b-^KZ7j?SN2m^nPX zq&7`9tL?3=o8#@RZLR8HVR7d0oH{l+Q<$49#MJF`lL_T&;<gkg?ovml^K)wdWPYk} z<kU!hUm<(v*vvhJw!MYJ$7b^j!$;?qhL0{BE~xE^R<&DQM-eZPT%+sO!ouRr(K)p> z(V9qIEx4p*?3!w-O+6=0oJbtWFHPT-Kbe5!-sT%py)^J{Sd%x5F$Tw!6EjQG>fXX) zVc~dTO63Nrx8P51*PD`1lzr1Pi^j{bqlcDG<QEDmI%a1k3v-JYc5H5{u%IqY7u2!s zJJsFug*k(Gr$G=?%O<xa+7bq{(pWWrJU=s=pO`JEx+ZybxPOnDU+Pw-mzL(cH*H#+ zT$q_(T1+g?%yN}C?H=BF{Wl~-j^a<#PLTy%HXSC@WQp+0j!9gWsJN<X#dkA_>sT9b z6_@J;vZ&L}p*04|8T8Bn7Dx;|+jTral(*&FhRgag=PryKf%H5^tE3;?^0;CukR#A+ z1o%GSS#l@j&5(P5w~@X0Jxq>~S-f2!!?0owx^uXI{sOqPlZ37@zW};6kN8zwZj9<y za9_}Uz-6kC!Q~`i&F|++?yVd3CXY!EE;{))0k7m?>omCw@Fd!X&Ao`(AI|GnO1!%i zoBS1#SuZ&T*(VSku9vF&by4@zar{o9ryL=b+ybqS=n=ZMzj^K`i1;+PEnYEl43-{( zgcEwqd5jH;SwNnDbD%e*9RtquX8|-^BThSp+}sJc8~M&@*Xy+N3JyFnS4X)Ge&)}5 z&90QILaXC=X7rq#z%Q42*(Z5jVn3D@PPv4ONd=lM;X4m}6TXYEg3rTw^esXbpJ%gc z@!bT?hhf1x8G}n3{j+)o)8bm6Bs%d||5zEU#75ktmuw+@<PI{9`@`>(AK;I!@R!C^ z#$UdfsfB!sDp>8FpjK)lpQd)|pcT|fUDQoI)JuKTPXn})ZlF~(NUP~a{P!mRugDOs zGaZ|oX>ILq)nT%=-Lf<@J5`uGdSrt4VEyPc<rfx?o;Wsd(c#q56LX4zP0Svfx0O-e zua9VN(|NVGw<nEudq)XoN^r0QhYXl0(P!F9?e-Eh#wT05^mej!a|!mB;D7-Kjq&Lr vgDyQ}(Dk<({r#;5-~LvEZ+~k_AJ^a7$>GrOu&xiFt`Fca{Ek0cBo+S~!{=9z literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..0832f7a468852ced3080993f4a826e8ef608befe GIT binary patch literal 6696 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..483e7b66e0f49b65dcc2110d44886220bb2c3e51 GIT binary patch literal 5592 zcmV;}6({O<Pew8T0RR9102SB(4gdfE05YHe02P4%0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cf326236c0e940c533606031140a116d7ab707ec GIT binary patch literal 12172 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 ND0_ALP~7f1{s)AlT$TU; literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..14f6485abb4e1483c0adf14e93c7d838efdcebfc GIT binary patch literal 6436 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5ff7060676d81f040dafd77ac0ac9e68eef20767 GIT binary patch literal 5392 zcmV+r74PbIPew8T0RR9102L4b4gdfE057Nj02H_Y0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ff7e2b90106baf6920ef84d26890d21617a4730a GIT binary patch literal 8120 zcmb_hdvILUc|YgeyLX?`?n*1kc#VA5*OH8MclCbQmSuZaD`CsVde~&w#`dmOYfH8) z2}ypzkU%^kR6`(t5HhsWnKqEp0cLvFJPHITnUqXQr=d*SDNJCJX*v_aBS2Hk#96KS z`|hrUWaQv7-1WWRcfRwT?|r^|bj>(pteD-&B$n7WRNoYR{?MI_+1~;+kvf%}TJSyi zbH*H<jPb`(XJ%E<ajl_;>)6!sQ~%-n#Yc=e-@*O;<H?yR&^?T;HvnzN$Il;o;n3|0 z@b?+B{(Ll@9PwP3{Q&ZPptX&HpeXzj#?NBBarD&exows|{yD~bFdiSDOeNQzT=yM_ zB6~VcCC^Q<zjOWp;}<YiCz7Yqd;a;IzlS|8#+2VoP0q{?JUr6GSmpm>{`slt^wfX- z>y29&tGE;6Z!p0y$9^Wt;H{O}o>pYeL_=M(x7l0M?A4kc9BFD2W%KVf@eJea^=zMb z(efCpWXh9X!5iwh&#Ki_*D$HNwWYm;x3#x7mzVjhitu_$ODf96i^_Vra&zw0daJdb zw{5PJ*DKDSytw0*|8{2gONzW^8$TdA`_Ie{imm*>wl%UM$*x!DU&@`%{bYgV9{2!G zaJB(ji=ovItv(rAt314=t+~0Pyn>aII>8mIRohVA+Sbna6S*_CVmGw%Hqx4V6<XbH zYyDQP{!zM)&)H<C%{@N<%HZtjf%$*TJr1?9t$r^@Ksam9_DOF+R~dBK8FZCGY)g9^ zYj10ADz_?<f-qT?0jHZw(uA;hTwbo+zdrZlL%FwQYqqb%Aq%^`N^+GrOLBJ&W}o;t z`-$u%$)Cat8IrA#%uUJOK$+%kF8h=hz4ltR&wjM))9bs4v!h@`1vrcIQC74KHPyVD z)reMjUS3ho%UMN<^p?lrw#vD;59NNm{sE7x2-(vP@$Kusmp$h6IAzKCv9y1X-)nOf z3%i{C<m2oUgSlIw!I|yjYYMhVoV;uecmu7?UMDZg{r)w}c-N)B?y~(FoZp1iC&0N6 zwgiZiQ^Kq9PZB1qscva&Yd3$TB?Q`=E07Y@0R0q6(9>Ehtk#Nh*j--gD+8dLo@L^M zQdyk1t;E7{xrU=I&V_8--q=<|1WVN`o=QbHHm*I2#1p}t-Y2=N!tOmV;h{A$_Z?lk z(IK(}in8gBzOt>{%fpVF?y9oNlFuf|fvwRY2M=>^XW2sstcu$sgk0j=b;Q?^`!M%W zXIb=Itw7Wyd+i-JmUZSnZs_|LuOyD_@|DO!VB2zbp%8&yM4+0oQPR@3RTP{lB{zVV z`QRk|tObXu9Jh&<wtQqt@}RvPd!-t2!|#H{Whr(aIbWi{3*jBDT4R;CY}ry9aSKqC zlJiI0#U4er%HqN6xZp)C6;(Gh_<TR|V{qMr#lmuTC0xFJcg42cN4b}a&)mGuDJw+| z_<eo-uEWK-f5?5btz!4>n-tk$RqP7VJb15H%zF0iyuMPs&hAJ)>=iTKdj}O6UM^%s zi{(*CW~K1bL3>P6Hnz80<Yu4Mx?!WX!6GB=vV)&^{&{{9KUucScgj-kFLHk=$+9>k z9jMdyAK;~>cSj<nr4%<VhAlr3AFwJ&w3_u^lMhF8Q$A?TP1sWvW}%?C>8EY5Do)3+ z@7vSOo4305e&gVlVEe<D$|T3>$L@C>bnU(C;N}n!#Be}TEp=`iw^gmRS^KR4i`I(D zu~wTSXulj2ElgVO4`0Qf%dzDS$@5#U?hwCxSPU=Zmixo6$)C%|zXFFio6PQ(ve<{$ zBbxqF+J~s47AvaGT3u7q-d@_0?@$#!bSG^C|6B13u3EjaMX?s`+50-r3dN<k`24@i zQkg5ehs%OXEzWg{)nY5U?R>UFvW;3C4y*0bPh~r0?-HthEA&~QZ>d`ayq9=1_Xo3A zUHT=ssE_m)xR&~ehAtBAGJA+Ua1~k2=zW*EI2xw?=%rtpUGH<UINm{lR$kJT`%(7K z>;ZHnX#9G1x3~`)%V8IqMnheDYbkaYdUIKsBz&c%*omkn>Fe*kE1aGp?>o3k*0{yH z|Kk<A#ctVMQe>NdVg4m${-yaB?ZsZVEOwKPN8s-y<WkRd<@<gsB)3RtxFo)!9HJ#* zRqm*S#NTqe&+8QLzW3gH+?MUDw2O!cD<Ukqi-ah5%k$67KjWQ$dj2Wy#v2wF*V#zn z4Qt82VH;bU%bIbI<S%y3d~`ZtkVf(fxgl8)Lv)(;v;Mp^^XXw{L0jwmK275)FZ>4B zx7kzdpV(#Y=HC?(e!4g*9uWT~Ii*UeQR<eyCS8y+(ks%N(r-+;kbU+Z@BC4B=O@f5 z;e5l`8y6pPEW*pN>~71Wh#?Lm1^tX&HqRG~?*;WToctAg9rp&=$J)_eKLzXnbc)}x zZ{of{JeEfmvX)0k<K-Cc!_YJ-df6r1&L#Le_I2<dL0l=e6c5vP%VXKy?4ae5%dv&` zEsvU3V`Ay@Ga(-5-$hk3F(>H6bZ;K=U$I7RW@?f5PR2g;u=jB?%U}J+q9bevQ$Jjg z)P)Y{cuaamW$gYV(jo^_O?@<`dtE{MBN$Ou)-jpg16YaEpoH_K%5Grw>@d5X-NF7! z{8YRpNgLK`&YItTxUjGQK9z04{Gny@0`s<-cRrj4!><?KTKLa}Cl>BsxNl*6zIVQ9 zzUb{w-*&ta^7spSA>wKm$N7^?qRaGph37=fyFl|YVug!Ntk-&3ZD=8X;&Lz?h`xf$ zo0owz;x%7I#h<YnOjiwdAQp|QYTvW0c%aWvh7QJz7QeA6o;aq?9f%pCD*2oZ<(x`s z!~Q_PU~z**wC;<DP$Ur!8eBKj#Ic|ubag~EUhX&K>Vp?IaYrPYiVhx%1+;*FE~Xm& z{jq?tBkos?4#GO(aW#`?N{$$tKq`z>qk-ldi1X$Cm<l82lB(h8k0n4+Y0g1d8)0n; ze<B`_`wd<fk81|&kEP@BpdsmMR5j$PBn+}d`eTMg3mb|ShWT-WCxV8oYp_cl$ykQN zD$V4T)6-yyXv&ak1E5FLIdu-QGYyt1xHS+<^!t;8@t79J?2e%rru^hoL37Zs=!P{? zcM)6P42^=J7S<4AEu1vO@G*m@px?061`VsOl9A3x>RFi$g9T>pNW_UH(QO)O(=S?` zED{aZ29|<t*H;GLk(a{jU_t~QC)DVimZU_Okz#&|rlI;_<f4^^RHY@m^D3NIS#E5^ zDlA@dZTTV>)r=Ot=yXWYSir9Z;<bUGQKV;th#Diw?x0bu!vR$_T#?=67Z5ERH;QO9 zh*1$nLBkC(9y25=B9MaFMsXye&Lvc%7(ojf9=&gWEF+I}$2S^9Y3*Fl@ala7vA&@^ z(H{W4)TEc_8Rm{0h-KXFh{2O#!(B&3iqZ{dT=Xcy!{Ft}gjCfZ%TVPaSm8OOm(<n< zG%Q=h{rP!Xg4(CqI6Ucv{k;h!aYd@GlE4gOr5ZwvYU;X(qpVpCr8>(n5#1j%+*(+T z8cr0Y19?k?)dbW(?eTE*#Bg{nkttE?jMH`g4G5DDzLnMmjWRvM36>+y1S|B6L~xCs zkqKU>XDkHQ>KTQgU(Z+xuG2F%g4gRAJHZ=tHDvI^L8I10ZVeiBCNdo~Ds^TQ)qM#Y z*Tcq2$W~z^!2oO|xB)g2)L<jQjj)km6>KC}4I2s8z(#_bU?V|YS3Auu5Y!PGPeP3# zKMBfb64218-a@(&tTTexN%bh=UR2wvTS-fHXw=63BnL_<Xf!OPhnE}mwHXU9i^kA~ zC<%?rBlG#`CS7ec?QI4hkA8kfqfxAC9?@C(Q)WZ%?$SCkO}q>qwZMNEyy}t!3Om^m zG+OmgMQ6}x`yy5pVG8W+NC_*iQbTGlZC-?O*W6sM){ABlLt95%#Ex#`yvzsv9q2OU z*dX|4vKaPAU3xC0scPpOWNrRzS`Fo87&2snOEnU--**heo)oI2`kxfl(%N{KdY}#6 z6#Af1>%s0rHdk&X?0a69Z}uXR7|{$Vk{m%B5|N}Icp{Fyd*zxWOhRMUdXgP}4H|mj z7l5e+@>Wp-L#SEGXaI=41qFrHeuX8Fn8e~L(+E8ArlBtPnJ!es7K(ui?Uw37475&! zW~)gyY}nwc+N1T7GRjt`88UL95K*>27E(L$ZX}BfL<svV<VqDryD+u%_RS~i^Tn0W z3Yme8L1SCNg2-ZO67+h$(#6G8cIlcLqNw$tF?Ys8nGpA318!d;Bb%R*cPx=j?!~1m zcy{VWN8RGg3ZY@$*jzV<8lqyE!?ygKVx%QxgrGlShKmYtF}hS-8g@kpn<Q^zH<|`| z_)?`V`uoMD*t=R`e3|N_xKV%U)H?iuW%&-o3pPe67>hyeA^!suc`~u!$CAsvaJekM zIq|l~J}eCxE!c}UUWL93J(v4RjaKmN){S<6K8jitaaDWpT3d|M9-Ye3=tEfd>K7U7 z267V+PRKs}A~z}hKupR2@kB8-NIZlL5f35ziHDE_#IqB~&BQ~<*NBIZ81WDiC!Pq9 zgTzC~A>twA7UCh~F!A&NIYK;y93>t?62wDDl6b;EhKYxe6!8!;LOg_|bz{p?n2*uG z=mPn;iERfqYSt6TJ1`j2jjc=ECum@DpENPz9yc*!J*69+ORN(#Fj*%}j98~kj972g zjcrS;(=;$yXH1M(XHAS)PwP+GWwCg83fCF7v>|QmKezbG2{MMm_|FD$P~rEXGv|-r zQyHd&aj>Y(L)!}Y99|)IlTyGW)}7hN?-{_M@}5{m8tKkd)988Ios7#n?n&Wf1s0s0 z;~D0veU>kL%aFf=S44NlGSY3nkCr{kc`^MxWL^V!=5c)cU;_nQFe|&IfJ;ncsRB-4 z)9x<d7FNU_D&Wd8dJ%7Ce^a0rv$g!q0`6HR-)qXpUy<}_hW&v5p8lc)&RMzmUI7=Z zSUg_9CDtRJE8sG#77GR3!q!Sv1zcH1FA~S3?FD)<Yq9*WfP0q7_mcd`<kb1;vE!q& z>Za5UYEwhQ=3rApV}shAo*6qnp$?_S(i5q)uI`#hg&bEhH?|OShuSxqoKSbBk|XI; z=lhcT)3KvNW4EQ72h+z-k0+;lCMRZlCZ~_5)uvE`x<y^a5iGE*Lb^FUJu@~rp*DmX zLM>M+E?B9rYNooW^X%EPp;O7((G$sYA!zQp;hIb@EIbKsl6hzHi*?7@vDr~|Fg=r= zK9e3%$szS7{I|?<S3(ZQ{?W0S{N&K&vDvf9>9h*M_*g1EF@t5NCq~lK>g;G*9on@= z-8Yq<$TRQBGwAA~%Z;JNP+nMJt(rWO92-v#kEd1BlBC+Rb3jebZgGsx&Q5Kqub)Xx zk4??agl5LZ$>jQdJ$tS`!y;^wO|kQAnvJpJY?RG1`Y@5g#|ssob{g>8%z`G?2wY{| zEX`(2-U*C`z&QrW1Ynx!pzJd75OaK?<VM!AB)J1C`=C9E)hgQwX-RzYNwZV1tPl8p z;4yX-`o`F8z?<11p2yi~Hjde8)&nmlU^~HS(9@98#6qUUTTI!j$p~H{Wpzzga@`E+ z(`F1vrwSdUCj@W)f3c)!U28NcC!P4vN52rFl7z3L>;&LBjPpKsA!lD*)K_XeS;$Rt zMP`<3)}i|>vO{*MW?W~?IGw?B1eC=Lsq7|Leag(x>hY%9aUkQPkT$bo<q$kQ1`TJ; zoKueT9OHmge-q%(YdZ~`>Sr1}WD)TWp*Hsb?nAv3?{b^=tdKyNxiZU*h%?>GEnBHq zg;i&8kC`<&j3;UREG9`)<4(L*h;x>0fh^i@v#@6iJ_Xjp`V=f4!*~{W2sg=EjB-6J z?|}zjW(_{tnAgGuY>U+{KZy9BVZ0ff%*9Gr7u(Kuup=yi?}u-&H#z?Aiv5sVxWcX6 z#_im}o!rHXtfwc&8X9&sn6SB_$v!(aK9WvNo*E`fQ*%Q{0d6k9odp;+VS6+`-ySvR Vqdh&{L<fu(V2^1R#}`xg{{euBHq-zB literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d3626cef39b774137c67500ed0bdf3fc93391fdc GIT binary patch literal 4568 zcmY*bc|26#|Gr}wGS=+N$X1B5?@MDHlzojbL)Jk)c7^Pey%5S$M3FW7z8l7pED1H1 z5ekj$Bh7dEe80axe&@WNd+zhR-{+k7J+J$^&kZrr(*r;NxiQZJ41dQ<E&t_z@Be=@ zv5=Gj0O}WH)tC&VZkv6Six0|=tZkF|D*ymhkXUmjT!I7n0e~TntkIG|M+V^L=k5al zG#LOul>z|JXS1w}1b0*bc`ow@a+v0SU~=~kb0e>#L(VfKuRGCU{{Z6Qin<E`kWF%q z!e21O2JU!}MRGix%rB8441s`-JbVH}$r?YI+mqp~PIZ>=eb0rQ2dO1<rN7`t^QQWs zLdp9=GRXYzTz;Sidg_bvaV6JG)+qYOv5i~U&1S!Q0fFTDEXg_d$!Iexxhv!6?@FG_ zz)R*HWISB`psy0TP-W%vLU@E_95Xg5A#bR@P&enXyN#^sb#C~x*yOXQM7}&!u}4?7 z9SOFd^?znwzt1M=r1Sd~&1Fw5%r!aw6#Z9DqDo9E0fs{(N(Efy^5^O4uczfieU1BD zDKVWZK&QECsvOflUD~K`tOQrIJ3<5nYxVAp4}Y0qK-I-MV{qTs>an93cbK+K;3A!v zJG`qhT9Nh#QGCNEe1R5`w>;Y^rT4%(Vh!Ejz%z8evK6`1RTXM=aJWen5+*KMKj%k7 z>xVKM8E!|Uz1uOse3Q+quw>g~g;5E(qHiLuJMsJJ9nh;6!mTmlbDIixjfC+jz8)%L zUdxIqh=t9A)zp5cGvfDE`l&5_>>-ynL1@s5hI+mq!^ZziGXsk@`}nIgW3tr3Tq@f0 ziF0E%Fw_NaEZvDZad8RUN!Vn*-VgeOpOIR~+p+UKSX&{a6s$P<zQvrGQ4M1*3Tcbg zPxCgY<RNbi>~^X0N@>hDcXycxxZBK`#$!U2v9B6mzXz-6i;TbgWobogUOMW^C^8<0 zpAzDEh2|mUG`PfQ|A6E!o*WZctUs=fEsW?Tu7tF~${~!$yL6MBX<aFF)=I!^cB7Oj zdPH7zyfwu|Q(_^a`KYxkV)$swMBtZ5%lAos|I32U*)Cf4s`|ND7EHZA4S$I*tTc|l z#g;?)0N#qUgt@*jyq#^h^6eB<I8&VlI#2OPdbp`t4e>ZaurC5xKLXs>U82ewak<`1 zGv1Zw#gjJ~FJ5vQ@iw4$--a3-(o>US8-1?O+d!rF&cK?AO0_+A_SS+&@@iziE_H?u z#8E9DP?Gqb3TBpOwg36Wc=EnvXDY1_xz~KfqBolBX?M58=A+;V-j-?90T>(c%p%`% z_Qdlt_@*=%R>AG7fHM+zR?CV`GfEQ7#y&>Qrgh5MkEGaZu+d(1%2hll@@ir?3142U z2C}xpD?06DmKR=(Kv`IeXpR>z=?^@OxoJ!?1G74Rt~fG~jUfF}>3DmJc;VIU0UyEb z)O=43*7-EhEv?bJD(LoVm&k=x94x6UfpuD);|fGu#Nq`wdk8;yiH-Qt(?fbA`GnJz zH5k!qBcwm3WK>9C+)G5(Sk2PY-*QC9{$=rAilpmJdvx+p-S$%4<egxyaQ1?Ls`>ug z2e?gAN<dq5s!^Vb3Z(EjIUcHRvQEE=Xjt2{{+Pz>`WB~(-NKY&4X~wqZ51=3^Gl=l z_NBFB=_lR44a+JQ`G_k-<!RdCpU~XX!|6XBHO+~U9bM?Q`|ukd$MPG*F2D|s>>R3} zjN73nAQ`aNs&{WR<hWgU(8?DIQ%{`hy2B(H++D}7)bJ=0uYcgLPG~ydCF0NcX)ql9 zk?hVKb3zXa%IE9S>t7rH*xZ(2?eGrMvO3jSt&OtS)czn0tG>X+!`sH8b=4cCy$710 zQ01jGj&`lOpyhRcTNTIPE_-f~?`ar;Gg>m8T}*VqrG_tH%dOtOXJkiE-+b?dbIDe& zH+<=+fv|%?*^jf`lBRw`>SQ>5oG$6Jk)sj#L+5C%^`4#N>x>V5<kobwW*GY-iPSo; znby6MuHx02OVwyN57i|JR!5&16}t7S?v91=jaM0e;0RG}C_37Y<C#vjVXe71Sozq7 z`yY{B&u(WDP`#I&oriw55y>Fr&c(3g|43S{#5}wkB-8~Y{Ioq79DlAD%f}$c87Sbu zze&+1s^@vNH<^P?(*H3ByJQsQOG^5(C+SvyYVA%LRmGoOkZF1N&KvKu7A1O?+n2q6 zd+1GwB&dxcHv|Ae7hI5ck;n`;8YI#gppX*lF=Y^b-BKP)39vDN8pxkqfc<~n3`hhT zfDwQQVgzMSfXQ8g0!@)cF%5=-`M}a(9k2~J7F-7&1b+r^{Of6Cp9@K1K6heNI|QKM zzkUMD*XRB9sDDSI?QcV>a;ge4r2#1Zs{ht=GKd@iC{w!V=->+AX>dX^{M~?HA96yt zhXB*J2RwbtLg<X(OLXS_ZFth9xyy7ZaC&AqFZOqgK+#CS3J+6&wnr^dg+I+@289Gr z39JwZV5r2|`+v{sa5$VS@Hl9sCW&;<_8C~$G+GX*_yZyR8+W!FSBj3#j*fnt?8yiQ zYcs~Vh4&yan1LutZcfgxP^peE=o)otYnhailxPQO@*M#eLtcz+Ux5me@JGq5g`Enb z2S`#fjsN#-k;nvRE{Gn4$(8~y9djx{2ZP(CX#%2s!^J(tBgK<USkrM+Y;DvQ=QPaC z?XsAw@8PqbBob+|2gv#aj3R_aWI^l7Gfo{Os3qZqR6zPfsyW4xx_>^La60bRdl>dJ zvKt$uZ35@^-~shuAOlhgEEz~G8{iiOWo>PYm;z)Kq)IK~7<L`v3-JOpX$G}p*c~-E zp}?VqsNLTh-&w8auVEOjCFY|z!!--@4|bkssgHRNj}YV{i_lZP#LkX0x=3ziEa_<K z2xAa%?5}P4+S~wvFptj`u&y-le&l#wTE^k@kIQLi+`Trnd(+oOZCI-1-WMTe-`F{Q zLRW9p)xQ(`vL%kt_1t{#lKb&mk$8ea(!<-!3ri2q!`#&#e_DHe%wqDuw~$FvLYVJH z<Mlm<+g}=U9!Hxs_3oR}hYZ-P|Gp}*A|VikkzL)37miQBd*88cb`4SuvOrg1jTi04 zy#zit%xzQ%oV=Bn1u78G3!j28^e~DpSCPY3H#xs4Ju@e$fia|a{izjqO+e$i<|Q*@ z<!}z0A4a8(xusCwrn@XY{}2O}doz<un}p8pD5_m-Jgbl?E{m>WkgxlQ8p>|G7CgsX z^y69)g6;z5k;i#?zMarskBNo&70+@?WiO%-%hkvIInCNfxt~q`gl<tO$sJ&nUMqd# z@}bK!udW@zQ{WX0s}+LgxZ-k^zNt73U5mFzIONN@YMnpY^Li0ledLYZ4;y98HXP%* zJ-p!w))p*GaU2bj2=oXu48A#Ugxc7rTN=yBV&b$#+$l^mAGKKZ%=otdF0AnhYh!9! z=a|KFB2SS?u1)et<$CnT!{QrO-%awh#&s$Uq-9y^p2n+9=UmbKkuX>qerqMR;C+6^ zu$DPZ7)D_%;A(%9S}J-G9paZJej+K)o_7${O}+ES9A?p@_11#hTlXE`F>F{29W?qz z%W5?{&OK0H+GI0hxc45n`C|fZaze$+E*@3LF2dvUr+&wg!l*oR@om$j`>mBEHE5x3 zp{%YIKFnf9$5Bex0k3Nzr_)x($$Tnlk@EO=v)GW%ADn5=M50FX=wP`<Gj`BjgETB! z=tZJRAyEyHdK5t=`iz{qjud*C+~fhGmuZA#Ri;i6B$2TZZB{CMQ0py^<KOl+%p6j9 z;t#LSjD*si`5Z|b*wC4!r@f7v*!2n<ikzmX!tc)({8Dm1HLQH2>b{DvxW>|9EfcW4 z7o^>6*rABr7)Xpo_A&kT=u|l?cv3Xs64BhU`$AJsG4sY@S}*qM=q@oFOS!>E3_m-* z_4&~pDw6uLnfr5A)Aa0|iO9?i^)J(0m(iFa*sTMfVdVhsy`S90eNoFbaw~OjI`gRW zH&F~u$HD1hoF~iq41<rAvcn#><%Zk8yxNMh{#L=^BYJPyL#Oq6RS?H?q8A_hCenp4 zZ}TcpJ3xL^f&HSl495@4uf?$;GDbA&<?U}?>cw6E6(d?w8feLM%}mbNT)(>H<@dyn zzLL8$5}L~aD8lH@kk-ggC^e-~gfAvKlE#ZKiM#bXle@#0r%3av#8;9moH7;GPons| zCga`gFSxg7Ddx|2&Y$h5iq4q9)ZV4!C`8KXF!?;Yl3lYAE9U#`SKSmV4cb9%jM2xG za>A2t`6=wM&+%~jd=9aoCL7)yQ9AvB&>5W8^HBo+U>@RnK`F|!VH$-DDW{URQ~wZ> zxT_K>M@S&WTW_CRd=VkMZ;yJt7q|Vk**%fdMZiUsRE__+B>*Ds{>gfve>#R#Iy3x6 zu<TKkPM%Dk>XwT4H!fPWx9ye-r(VsjWskM_{tdo|PCty|)dVO_<%ZPFZ*5T2bv7xZ z&un9%z9h4~pxH~)xb1E~)%=H}N%O=)Gaa@>{wqf-pd@hy&6sc6nWZ2x?u;@JS3ZYs z4g~K3FNCmqd}Y<;Hhl$h<u-kJYH8^SPle2Q!ehT#O_hSKaepWSCFC}*c<xH&rdL!~ ziddz~_7mP|JB_v1@=3KEGPNGkv~Jmsok<l)wQRArZqc=F-5E=iav-ydty{FMTXrw7 zPfM0Jwhk9Mq{h}NPp+SoEp3CCy^WA$FD88L^%E3z77}uC!b64%c<FfQMyPnW=3gkt zNO@>_FtFYi0fWIJGRb+pt|hcC2;=}HF)b-|Ozb+(EWE>km!2*~f&n%nz|4O+6JDDc zjX+bck>=<nI(hP<+H5WE0J-|YJmh`gWV@yN>(QYLx5gTywNOly%cnaGA&hkp{vm;f z%FNcZY{de;Y^Jn98EdiL2UYY@Nd)+^6+0ZNgqpfY^7u$A*5H}SPi%<hu^|3*-(^>R z=gD|+Rp%`7*ZE{P)yo~=+v+W-4n8A?fB{#1$UxW$iPtn}YPoK97q!|SS!N#b-?MJ` zDS{(mYQEZ)^c4<7^Ak0WZN?A=qvjcmhA9`6wYB&!4sv$qHKqhMW|g&@9)7|p`SC3o zOtjxoSd0jZ*#Ek{T_0Yxqy`PlQh4)JxP09Bqw!`;=W`A@BN&I+u$+WB%lTE`5Zs`M z+^Dza`OHM<o=Ux9c*u>Qd*R{Z`&Pb{z4bJ)uJZ2RbK~welz8}FE;4Pt6V@ytD*b4S zZ&T(^gOQ3#<&OmkZ%pBKawdL%=$RdkT?6W>I98^V=EWh?<~BK-?|u*|(AEI`+WGj= ztLI~<<C9yzq-UC(FA9c;aX5}z52lFIa!m&+l^Ki->ZyIDaVGw=-sH(6eRlh1u#bc9 zCI2fs10RbY>M9((l8CGS<aOHM?@AbI|J}JhcUMZ|H#M$S=aG%2U#^fgutFoo?H`<h zQPH(9vsYN5psQJ+h!ZpKl~BsQCoyJPr+I+bP-wd}A<~zs<1*WrZux;OC4MHI5=Yb3 z--%c5xS%m4Z+piEgSw33zfBcWm`!-crKh?Z%@8Vg?9lb5jSBmz-}8z=!qk^@?Cl|^ zqB7!(mvgSQQMybd5oIT2Q-}s)?S^s0jlHnS`Um-6@SK^V1xLCn(lr5gvAQOgBz0Qi zvb{7;uIjxIT#-fnc3ijoP*QA%i`KN)z3yHSu)o-ly`1;$Y4CuZ`he}k1;g20mGom? z=MVR4mJ+6_3L^4v*4ko&`|Q;)HZ28twnp1)hX24BGYOj3Vl9`kLbD;_%#=JvlQ+ti z`gFbzlg#&F`;Tn5{=UOL27{nJIMa*PepnZ4bUT`(rQHU8?SOI|Iim4ihL*}jBSaV_ zZwAE0ByecxnCj989Y~k<u}FF?5Q+;JRJL9{=exgEf(u)$S>4lHTDDZ%>Z)#<{*15X sAw9i&wUFaFjbhw$$c9Q7s^n*2yU$9R-!b&lnV>)UhZO{XNF;#qKlScO&;S4c literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e45ca49db8c66ca43ce41bd15a219db59b0c9350 GIT binary patch literal 3728 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3034091cdb7b1c98799073e1770eb57c24747d70 GIT binary patch literal 11016 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 be%&un-LKZRHeD~MJ}%HU#E9apa_0X72#Z!Y literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..93c57a6f97f529f7cbf7ff49678c423a54aa34c0 GIT binary patch literal 6184 zcmY*cbyQSQx4+cT-Cat@NC`OV&>_+t!Z0)gA|aqi!w^bJmvn<D-O>yV5+dCwt<o@W z_`di4c;~F&+IQF4zjN=p>+IvLrK}8K0hqzS2aw%KL4yD4chCQSXz7WH0RU+P#;S>d zmGYJa2<`%N!`S99dNTlEp|Gy9TH&ufIRJp>E{+HT5)1%4H+vTVAo~aac<%v#IAxmV z=aD_k1Cz_ZfpHW3FDUF0zIK>(6fvnN0HD;C|M|h+!4_tNS>_WaM(Pd}A)fmV7$c^x z14d`Z;2yphcD93yrw=CXj!P^CbIH~e7KoQ{OdJUqqr2YWjeyss3(N;omxKbN-{o=u zC=$RG=3<NCjNymf2>_sN&EdU9x0fEC06?#giNSEe8X)epo^f-x#pKd(U~G4_1J=e> zWqsx=jq!Y#XD1iaTHYE7Ru<q5Y9t^8>lEn1a~Tv;+xr62<ZWHEs$He|#l^)Nf^yhA z($dnH>+5_yybD*>&rY2t@;&TEhez9zLv_^?3YM+)trG+;ve(2^rE4W!ibibaH43Vp z$R>3;td`S2c!K^uw|wlnR;@lw6~Gk=t~H1%iS+p*!=DD)IBD{17RqxEFM^qE+Bh0_ zCXOol<V`A1ZRAR-WWM=D>3nG_gD=I<4nud(bT@cOxw!`Xy6!Wv@X0@F{yKj#Qrtt! zT}8K6Mr#f=f6bGnnUs?B4CE&HjXKgtDsk*bvLjeSsvlt)H?TrzZ=K*_uv+AM$oVXV z&AoaMT|k)ue`&I79Kv{R@)wT}nKT!)|CtJ98KK@IRZ;!ombOMILYQNYBSj!u+2`Xk z0j-{luW9B|yo2;t<%qy`q>i{JF*Lg`pgKc#;FGH{*Kb3pIUb!FAa~*qSuG94Pv{hf zPlTq$$Ww?}zMD2;_bGbUZMNS6Rv8qFaLtsVEY@eEBqQ)GwBeB%{_aA%=?EmdI?SDc z0n2=|=2lpwdIeT9k&rGHq0VkOa#hK7OCaS#S`A`epJV;{SkPbRD*W^mN^SB&{lyEV z<gWwnCCqi{pAeJaG-)Yb{GqfxzG2%wt0yXiquVYaF$V_C5T-(eM^d<BM82uv0ofFV z%7Z+eu2_@D`1Lvt1Aed1d^S3FsBBr5U9K3g%an(L=i<IFoHabJE?EbHWU>-f$Vy6b zsDUGI{a#f0^}FZh%#Rz^J3Jd1M8tnN@toFEVCyw<2@)wNGMc{Oo%x>T#%Ny9u<y~e zfkFWfy`EQPCo(>g^LUe~WO^9PKiJo->L*w29bo8PAwZQNX)&)9?O4#eV$G&(%}+6v z7jj;Ja*FHcH$H}OAs*;gD?%KH6BI|3gh_Q1o}`EgTPcF1a@f~Nus)8*Q)}ZXt{}SN zIq?9-YKZhQBcWO5vFDeJu30;k#2=h4yEdNnpiiSY6<p}23jb23+1dqk3m+BBlE3~w z+U`UlP-Y#+B)wDiqmFe{VU+)kfz7vJ^RGD>at2kbKHtSilRI_y7kmwlXHKGKe5PAH zB#nul)#kf0a(U=lUB%87Wq0zZ(-s6SSBCd_s*7kv3h}Nze;y?irPJzp#L`;9{Z@Zd zY<Aqy3pBBWosI&ILc*%Wo+kH_$y^^P{NmoAiffL*FGYTCm3aTz*#glp(5qT}(o|$_ zTJlWeg%Tl`QLUo+CXrUekYAs$9HgSguWKddqD?R3%#p2`4%I*ODUgV8Jq>5M*-5_) z?z&x}4<8B)a?aA~ALLVjx=PHj`QQxY6*Uw|n$+7X545*yVvWqWZ-L*Kn+-l2Q*rQ* z&aRK+G85^R;y)+n|FR#-8pU_pQ5sR%9EE5iC7)kHv+LMoOd0!+$8{79?9>P7$A`~% zlt*}4TeAKxZYWUxtH#rse6rzf;@h*I_(OxrB)r^7EJyUKun!K=C){a(=7qIT8MDPR zCX)OzXRhJLMFF*FY`UZJU*TaI3Yj?0Zp1Op5e63Cq%;Qt3*59VJ3o4g_U4t~Jh-sj zKQXfkqA5|Vhc>VV=l*A@L_!Gf7K@e8j^Jb-2tmDqe4tBX>pRhk1Oqxy?IWYp5z<U( zTjFP`utbyM*10Ug5Rqh6TCVj8)dyxHKg^fh?Uh~wXXsUW*u)>xGX*?jPa+|scUFVZ zGKmVKZ}GZUANDbM0#L!5Mdu3arExzFpZb@<KaW&P6MVW<A?lg^ZKeZuA6mzs7${$= zj1Vl~8hU~I88`+S12~v)86^O#TMxG2ZyKNo_TLL_lmFV0tsSa9hq>~OZ1y7>wGVV6 zX|$VclTvClUFTQyvINOp;_%!Bdto!^6S)8w<NC^!73-4@%J4#AT%Zls9X-0x^^25q z@=Lp$7@MNNG*R~AmRrm4Qf?w26Ak5bMi2$%H+i{&6@L+(k;f_155X71zyle4x_PNb z9fA*T{)%OWQ@5jP1*kd?>tA+-+&(CD>j=>2kNSk<I{HYY#)Vz>YGOh75w8d&w=oJj zK~la!`Y&Zs4=x}rbh!CL26<w>Gm+XM`G>Z?+ffvOfb|NU1svRK6N(kijGj%@d^>Yt zyz{!AZq#6!(TrEUD~8Nyg(Wg+&)P1%!fqwAYcU~uN<sSBX@%Ptpl&?B%#3&RQ))q1 z)41@QI<0H-OJdKlIQ+4>FG)}3R0Y0y9rhL^rxN5N!O43U$#G#GMytNJJ;{|lxNRR3 z?SD}5%Ngp-=D1JDDk)GGt9}G6(tQ1RJVSeKrfIDS=>r&n_sJwtkX@s~Q}QqO^Jtnf z+qN03BvVj9tIwb2z2|zx?w4QL;i>vny?xQrn80i!NjKcs`SpGUTZ5@-QN*-CFnv>^ zYX6o-O<{uQXOjN?bzOWi_D8%u@1n^EN&&GI^Rv<#W&CmSY{BeGH|Omv(b|mBj3*k2 zN&L@Zo~T`|O~fCpH*|cLvnb^3!K%B-eyoK);pVB`wG16o_di=CIH*4rFf2ccJI$*; z7t+FY-E-Ph>=zRTjc<w1)0MJZrno&>zcfLf&q9S!(BSLOI_yvXrkjZ2{~W?b1Z6gK zEm)9OCFAnp35C$-zr`|{zge}lCjk!EWN9vmASkEqn1*z^+ZOfo2x7&DbmUi*5+j`_ zgZYndUY}(PgO--wPMYs$@G2872P|lxEPlDa`VPkVMDR<~HiUmZF|I^H;mtxzlI|c@ zH?eDVYozqq=uwpJd}d`!;eLF40O!bU@h9y2x$0=HIr$5OQ0Zi?%5=Oywxx`K*!))s z_eVFnDq5zLV1&+9VhkbivIHO9X{5*4%k2dzrOoBH5?1@Y5OCfuzR7U^4gE^-9$RUY z@epmUrmChk>w_XGUPr2W#LwC=?sI;(dzf9LW?y6vPOtPts$~7+IhS0V4PbS%k%m)M zb=^M`Y+oULC|fOUL{GO8dkzO{2+^NPuAq;N7QN#3xs&~7>iNPy8W$+$f8?LO(h9R^ zbQHfViG=g5>0j3pBDnL`x7daK=$GMgj5|T~E~cC&4ih9lZO++p*;RICDc>;W;<vIr z!~7GQLAX>*^RGYVqKueN^`))S^<YSDxrNrqlE3XB?CZ#z1Kv&8NQ7|(g<y}cY)>jb z)~#rz<I~>6`yb+HgM|7MvsrlBjS8D5kn(ZC`e5@$laqE%`y&c|=<@h@Wxd~fbs;-l z+f_75c9;yAl~ZaUp!wZamiCr{NbU2@pZ&@sm0cn4>~Y-0^x<a7RCjK-*=X0KNlw@+ zOQXY@=+yfe1cBj&S?#Wkv~kl%f)Gm6nJ3CPnn{ClSx<6>y5f%>Qr>2SirPK2;JLPu zN<1a1fC#7$m3zkHba3G(=S=+ET(>h$`i&gfV-)X#G8h<zP|v4?QL$Wnp1~0aW(ixS z`O6N=``thqI&|W?ecVSjYw_16ESf<=0IsCbd9>FZZb(7TqWF2!utFCgUS`gRaZzVe zcW3l)7`|^`W8ttlvRdTVC%6y7!xbfV5eR3KdbFpuZt3x+Vv+zAL8sw4O{l{B*b5tJ z*jM3Blt1A9c=s#3UEKz*^K`*?#v~z>$_1<~+kDQ9T)XL;NPey|Rm;Bbf^KA0wSJVY z963@)8E_?TS*G{{0DR`*RyI~vU^s!jl{J73=I_)dyI0s)9D)llq+-orT3&$ef2Rfz z0+a)tz%Fo$6^f0Anc~<n*sVD9IGQ-tI9@mrI2kx&IG4C0xHh=4xLvq2xLddvc*J<j zcp`X?c&&KHAV!cjr~tH#PlYds?~0Ga&&Qv_M-zYv-~{dj;RNXfC75b=cM}Y}tel=% zl0*Ih#5g;5B<8-P-Q6wzBhTZn*zjFJcjO2F>^tk-K9u@6NrJU$pc7ZOA@Ms>uUzjX z4%$il5YNc?2IYa}V0|5Q8Utmtc}MlGu*mrZXaq>Nq{PSsRs@lG_H=9HkrOv0c=FY3 zNwBfrQ$lMHv9!i+RR|ZB-}jO{u5M0r?3{aZ=EZ9QvU=`Um(XTt9v*)7K}>x_Ce`I* zQ#o%#yJU3$vp7yHsUMcRh=ln6z1Nmgvlz~($H)CWXwkVpfm|h>BtT&SX!<{XYdhP_ z&Q4Tk=l9-PWKd8pzP$JoE3l1?H58kagyay9VW~Cj7-!O4kAa1OW(jR?c>eMmMepkm zoAKB<3IQzQ=F!+V+`uI{Meu*Wqm@;-H6utFL?Mm6@gVp@h(s{3mMH`~t`~GqlJPI2 zHDej06C)j%72e!ETyd{(xU$vIx8-sO|2?_F5*m%p3BoGT#3>PBQe&moW<{PLJ~h*m zGq8bL(Zu@a=jbf-EV}w)8QpOhFlu?$p&a0Q=-)BqReY&ALCTBA+VmFN4r)X}$nYbO zq0bJRN@Irz`XUsdGX(ecK_OP#D?Nf^y`3XaQVxP#AJy@$A$&L%pgtl2zT;kDu$jI- zKqib#hcWocWvBn$&-nOw7|}m?B;lXqJmGrT)_O(a&m=R1KAkunQ1du*SI{riRZ~&X z4NKxQELTHBzPKqUqPKhnzi116*$jC(C5$qnu9EngqcUA$YB}p%wO#Y2f@^VCP({gc z=PNvQQaDF2Tq+{KWMzKg?TxQJBx-iO@QhmPt!p-gsL(yOr*$I77AA{z$x%T%_22$z zlX~|UZC(oqtqO4l4v4QEhusSc-$0lfHrRSS^3rpz9Mb%0I^x9nqjqMyjPtxyQXD8# zAts#l8X#rGZnx$A*JLN*HleIzNvx&``nH*9z*Ox~w<*W2qbcJ@Z}j_lL0xJAv1`2z zwacqZPnmD=(FOI~SLP2PRCQNnVxNkFD#;{kCSiR^b;7S_D06-b=cten4n#WK6sMbV zA9rf$3Gz4=<H|T)a#IULbtg9{oTmQJy7k$`la}~9AYCXu%jiOqrd#!Sa07coO1(<T zYlbm2ReDR-vQIe7OvNHy!dCt!^4KZUr|J|j^v4%PlcYY(Y|_8&h@-%j{r&~YOUTo~ zSN-*~x#zI$KO_so$sZ{gj8)9DV{}n^YmRYSe=2<I5@_l^#Iz0TWn41nXr&rO50-BR zP5%4z)Zmv^y8MV@x!MD9>YBtb$W$_q((mxz0zZw_kgTuiasBeT1ik}O!yW?N^^gzF zKb^hZVg%1cCF#=s26o`@-|DjJb;_6OF(H&H*v?q{`JKH`CGrMqNul<hst>ew;`+b6 zWYUc~S{@sfbutZuWz+F8yWD=+e}VnHIR0m8{g}PRY6OHhTPa&y$za1*@4Mm)u#&}w zlAeTOa}fjOg{a>9sOtv)KE>N*?aoo;lLl08@soz3Ui&BLe!grcG~RnOULU&iAy&RB zIfK#*Y~^?+i~uReKewWh!GF(%#$Y>0r{KZg&j`t7jy;5We4kW;JM>GuKQYOb%jp9( zBNCn1n9|VE11H};|0(RsjX%>_C(`y8>g6Sm?AJERgsEE%#XR<oy%ZYMTOV3&_aH;8 zx+tz4+GMY?5^_f2?;08pGUb#X#y|ZR^KD1~b#Uo7guBgl>34Oe@gs5u=8u10$3BBb zJ2okK)IWav@!}NYedmE3R*k<d{W2a*$A?Uxx&l|KC01)n+S2gTcVJ|eXRl-V8O~SI z$$F!tlY9f3Q~k_x1)7!(x60^U_+G9!C^m^ydeKiIo!Fqytl&p;MtPnJ9+D_2Ix2)1 z{cruHPa)o7&j}tEx0K{6hl-p8^W_(K>Qe~oNNDP+R^{jZLbi70+k6+2Tk(J$q4xXa z2M>wyai70)9SHI#aAJ#KYWhWCZ?TwYrCW*26QyPlD>F<8WOEt|voj;KZ~6EzeXecp zYX1@6cO6zp#rtF_e+fkjmlU3)>g^DI*OZf*2^s=t3&=3Ji#G14Bgsl4>%XoS|E6wc zROTV#ehu#mrpAxjUdMD!3PIn_fout-108FpU{>D6c#@`%$GwpUvOW?=;pi~Ky&Jtn z-lMNAfrZDRd!-HbNCr43{1Lip<8YS~>+<0C<6G5>VJqn?^{pfQ&W8`8$6_Zsz+vv1 zIcsLd9TI-{Ye}E!LX3WGL64nd{{^zh0l3-{eUEiDwy|s4>Sdg-j6;ZB(K^Ro)9h2r zdmV0%(gRQtbC=mVinK@$p3_yV2thKr;4Ovt0xW)}xFRgZbb6&^(1rsv8${!<M5Dx{ zorh)1q@8=AukQ%`0Q&9-4cRi7D8LeC8ZW{MPi<IrJOHQ0mQ|JW8pMisA5|z=4!3+} z12_JoX!=Lcv}-(k1<nFD?$R{vk~Hm_4<o@A7>%lFm#AsiG;=61e`S03-+U{0c)k2w z<h*EM4~r7<+zQhV94&ow<KnaC=7w8tfcmmnNLWY)@t7IsGNr`84ss4;G;eruaBz6V zqSL<F<`cnHta?Dmn1~O<{36WL&{hi;Qj+&VWUPanlpOctp`YV}RGjhG(KDn%ZOmzb z&Bl7>K&t9JW=tI@=IAE5JL`SsHHPbg<Y5%JD;N7@-sCkPjy}!+8A?MU+E1LWwAw^o zaqA(7zm=qc5l7G!13D<NG;D$j?J!BiU+egR<FYo0S?}`D{(w%V!jYV6P4UYA<Yvqd zFLxi<TGJp_+=xp)8o;R>k5e(_7Obw7legXJ$Z0Y=)sH{rcxhOB$h(Xls9rM7kGek# z<CwD#=v`owA^I*RF1}n}JBp|XT>nCIefdx)ISuvcb&K4%#@n>go)~|XfD(N^jV<*s z>mb9qbanau_|<!BaZ-t@cv`)^@j*Vp_3*55>w=+$9hcwK?TrwrcWg3i>g82m>+IHM z(oMoj3y36?$Z49G2Z_Hk+RsQ(3zP&i`PwG0Mo$$ii)U%7NY+M|H<uUq9*iN2{NWXZ zg~;J?77**YwXF4!Nyd<bF~$Ba=&5-WQE=ki-0Il+R^9KN_i7Q%k<vBR&i8Fc2YNO7 zGal9ExQo#olHhSJiZqo(sdpW;75tq4{?8z5a7=M(evQ-dA#KlSq25L72eCxi@`_UO zqReH>pT0Nb$rFlEY+?-h6x~5b%#^nS#`1DiY8wy%l!7r<_Zt^3%l-)5uPdrcx!?>o zLEJ+g`UmbQ5YB~qhgvNQ#d{?r$_m#%gSBuiS9C8)E`wFvaFf5&{TiSA%ws{A$u7S7 z!<+BvI{&yJV^cpryM9*CrVGrER}FbGHo$u(c75)8naSvRT{s>Xo_JmM-l8N!a%^>s z{NQrEZ~lY&(@6+|j51>K+&6yt!SAzDQo6^BSrjmG(}n9_rF?2cp|N2#v6=nBRd`-K zDHox+c_Q$Qvyr9RI^2|ZPcIm2ykA<Y^t~&1aRv6>){!T8^BSeZhdxhhn|n6yFa!^s zZA@rzBR^HV>QiEQvj+}?`tTYFNQ<T@-OEyL&$7B7YqPlT&UUr7d=a(%lq%5p*k>LQ z)s2M>(1b6ixcu}QTAbwgaf&-KsadB1IXizwb5cHQpng*Al(U(r8>OSM78fp2c;8|- zKduF$otMDuB;hcT+aE|tZ6{=01M3f>rgw$-9Ix_1<0xQUijkDOatSn!Vm5=0qCb^# z$3?FFo3tl$=zkyE)cz#tK(!P$N&y_<SR7Kism+1=HxJ)HB%=ns*;;+ju_MT^r2PP2 zG8UOvTU|-acg8=ki{<?m$L-^)rMG0uxjuKkTPbS8dgduVs~SurjRjz#(E$1X0Nejd A?f?J) literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..53b65afcff022dc8512e61cb25f7075715de8f7c GIT binary patch literal 5028 zcmV;V6I<+ePew8T0RR91028DD4gdfE04qQM0259C0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2fd85294ab68105c5ae44fd65332fce36c49f8cd GIT binary patch literal 35924 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�IJY#%(bw266Z<^H&lC0fJYbhk5tYD#puXS_&ihfgILhP z#pZXn8oQUrlTA;Oy>QMPd%iC)Ik*`VbM^DSf^Y5I#NpdoGpDm*%BzsC=Gk}H)2I)a z65eXhHr#QV&}@jPL#8}a4V2wI>(XeyAQ{NS6EBk2x;K@WRc>TOd1WFON&!3e-E9no zus5?^bB&|IEgr)BPL3C{$S@1`T|d9D+q<?Z7f|5S&?~kTj^1qAAnMuj_S_n+#mcHl zX8ZJ+cuIj4!IcVoHh+GH9nYs$3n^FvCutk)M;&7N<SDLA&{Y0_X+L+(h!=(2)x4Mm z1p5KO$#%;JBUflLmBP?H=wN=aY8sU<MeU^xPGP<S(i$@Mi-mk~p=&*&D483OTvTsY zZTEyxqYh<+n^;{16`CkknaV?=<?cTqdgP^s9*CG;)fPN|X3HH>pIkg}zndL7*zoGp zh;^iIH=29Dc=Ck?oJOehcX+RS?wWkL^R!yMf4?4^JtDei{K@d}rna9r0yIffwLJ|< z^Hi53AZc4jAgIPU0!}ph1Q?PAxo02;pc5klkHYT=pOQk4@RY4+T{F$Ib~_1)c+b_a z4fEZuXtvvcBaoR7$04d*G>w$DYp(@spd~rRgt2VMEa!?<3e5&nN(dSc=L}ujiX1~W zPbRKG3rF;D2m3#QPm(IP7dPi3YQhZ0WL7oHqY7)!Aq#cu_ru}4Mn>QgdJ={-N*6Rk z4J=kYDDAg`lHv^R9#D79LQE4oj=6~Pu>%ZugZBRbw0}rA(mogq@l<Xse?y|$u21Q5 z0WffQJApg)(oRvBrN~6#%RIqB!GwLQiwiSTedSyx3PlWs7Kf;6yNLJ?v^85QH3^fT z<-j`UY!Nz*jX6LUAkno121+5OTeuEzU}uNsxMPgTKa~ydUN-MYmyd}FV+veeb5KG8 zRkeh{EQ7(3Mmpw>3~i(i`$ffj=kApuDm-%4&_*+&rjEp+<*BgW<#g$pJ=Jstcb$@k z-0aa2)Vshzq+`97klXNSJ|i`!`*lZXa4ZfJ-3%%-jQ}7k`xXfQqJZ7U#eR4kU)*-3 zBdD=K%7g~s*@^FnW(t@z0p%dF9OT#`trK2=!*my%0AnSGBJ}5nw;K}{-J%^|HlSG_ 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 E1ndY_VgLXD literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..e90fa2bc7ff9e2f81e57a567be2a8620ef9c8d27 GIT binary patch literal 20260 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e40ab151617cb25fce5b4e739aab4f44ff3a652d GIT binary patch literal 17272 zcmV({K+?Z=Pew8T0RR9107G~H4gdfE0F2-O07D)C0RR9100000000000000000000 z00006U;u-12s#Ou7ZC^wf#F1fx)}jB0we>36bph300bZfjw1(yG7NzV8!&ejjN31` z9cZzdtp|)m2pb0w6yp`6BDVuYRK8u1|34omhc#LN{#c6A$!^^|FtLo@sKc2X9>y@X z*c-_wI#9Gm7GIS<+~jr6Yg<82LHyxDY!-_pnrPUu>f9e)oMhE`fympEs=T5l7S7B_ zal&<9KWO~0BEgZMLRI+UGq7#sPjd1?L~CVr_v{|fJ_L9^0N`Sya<76Y0Tm)BA{HvS z|J9k6LTrKgoG<Ci5H{p;MHhIOx~}DE$?Ls3`>bS-<lWA2z*GUZfzLUDrt!S%W?E?! z+u7tp>}0d}As+}W`+(s8nXNZclwvfOyok+2?90ShiwZ<x<rj5|nyxxbJOHqiOCHz< zYP;0WNY#I3W_M48VJxbq)Z*69mr{ijndIx!FlYb}4tDc{LvV+G@ICx{+Nd3o3Eeu# zc~ZU}bfr_;I}sWr14>4SfwPtZ$n_HzO}=Yz`V7!?c6ZT6Pb}Ja#gbG!O}t`B%~DIv z=vusZu|1;O@WO_e4pvMarvGDNOdK|P|2nhzDd)E&Fa%`FAz(o^&N~O8Xyw+vQm~Nl zE{6aF$8eCRc;+{u+s%P1@uJec<*y~Dj%g-)lGk)^eviuT0n<a>0srRt$KhPXCp3_l zKVCJtYoTiC|CwsGGYcqW@Eju?Lw_OFwu{c4E0>Eu8)tVxU;w5CL_!Nv;(^i=v@5~l zl9B)rya$lFka-R{QUK$Ux&U6}<;-))xp!`3>GF!wU7afXineecA%mOlE*l^|&PpUO zXgb@VS`<cC2=yHcIM!5a2nUWWEKXymLMkM-hUn=4lG>!2%JXb9Gu1|PD^YwbXk0*Y z?nT);hGE-X-TPHhAqiAPHqhYaKquBF+0Ou~8CgsKI#<sF^K-9X-l3H!^Ak^oztOMX zTsirncORoO{x4Hui=KLt&z?nn4RS~a0iJaWB&~Y60e)$6YH-|BTQV<xN5mvHvzx=5 zmR8z9uj-~==(U&IYFlR;ZL@8&owmmZzIEL?e@#TC=Xv^9bY0K%%F7<G!*+XLO@HqD z(M9K-a8UdIt=iW1IQ{>7?WO0QdE&804ej6$n<1nQ31KAo4XGr#U@iz_Yg%cYEB*EL zyP&e#b?VxzH-v<Sg-1k2MaLLT=GeISgv6xel+?6zONP~EcQ{>cPi9tjPHtX)L7~@I zR9sS8R$ftARb5kC=dW)7=CbB#f1Apum(~D{CuGJ<sh_KswmzV{r#H|Kv?sNAq1+VI z2!LKExE}x~v=9LRQ1`^|djn5Qyd<yrDE024x`6XIOVZPSpkF_Qzx@>H9Z`PHd#dM8 zP%r;Q5#@DdOXods4fr-4fry_&2Lai<*FmAR_&S13pT@FIIa|%%e2(6{t5@e7T}2N* zJ2A>{96cvBvUO!m85GMrgKN_^E&9sRp6VwCNLDjOv#nIla|1Mp<TO(b5_gsXM{%Q< zdItl|1nXrjIKGN-7T_&7?-L|<urP04>&9(^+649RZ-~Kv*1>Firj@Ge^!<Gqt=&Y} z^g8BOuDnUnQoapu<3U}wMBTjf=YYUVBT#S<uLwP50=&CGw|lC7ovm=2(-a^xT?$wK zSb32Q3(ScqmZxbl5u?x-e-<u!xRF!{zb?yZBVm~otmk-B%@wV&VvxX-k2;P(gm~+8 zD^n%AqX>wSufs6l9;wi!(MP3MucCM6(?u`SXlS%n@m8iCI;asz8J`FUZTSK-p_TCo z*7&Q(fG|PXPXAbWt+`TpUuM-OMW-Me&BW7pv9aINbh;?;V?UGt*7-U<eS3*IfBHfX z8AJnv?-k?Q1t|d|QkOE+LsPF<+a9uOg7H^GfG+|ICh8|BZrgY(luEjzKs59u_w0nq z1zHQ?MVwWN3ukNqhinQVuo#KzZ2^R^uZdRgB8COcP%I!DBnM?k`E5@2JGywGKK%z< zJAMpzDs_a>Aatq2LL)h3a}-5521Pj*#W)VdIUXfA0VO#Rr8p_O0`-u0^;OZYuZI5K zs?*p<S6GQNIE}NAki${ratz9GEXs2nDsVh1asn!GA}Vu|Qg3KL88vJfGizc5c$Ag} zh}I+S>!t}BL1WX=g0zq?EGt{KA}gJy)%i3U+YYKtc4=)Ir#rKFHFeSGU{eY~x(nU1 zSY2Tr2bCHV66yzTvB3TX^ViSxo^7?Rii;gRXwbsqR={`ucn|f_9~(Lb#1Tj?RIvRJ zjf#Cny_rBRw!0tK&$z8jQCzwe<LR+54wUR1zSuDWV8i+#M580|(xx^|8tRC!uW?+x z6bse@ohhD{cu%~JKk50wt@}yS!7zojV2?=E9Q_+<^9;*{iRLwtu(}_GGOrDWW$mFb zTAa|l7AnfsT1-A2n`~aToFQ@!^$pQ;oLPI_)^`ef1NyI=^8zQ=giU?Y+>B+O$$BnN zo04ucSqe6<O<Y2u)rPHvZ~7RB79`C<9r%mRT1Xc}Oecf0*lRHFpw%M;2YQtExZ?5q zui&ZyV_5VJwLmuJHiYRMn%|&{c2aU?>jK6E+*;>vB9@){)>M8ev1D~WuZBSSfvH~g z5{yEu+XLgM+4CV>j;oH+7O?DTk{kUP!$}IllxdI~TLM#SXyWV04#9YvSi~Q60M;-s zKiHP@9&hr=O1ch*gaEhE<n18#MD8@+)UCynjj$vthcZihn*+1ey^RJWjM5inhoufT zXm=v8XQp2Bnkz`LJp^Qw-C&D-i~v)M;y{wa65&YQF%>gUZpvwiaHj5j;-MEe<+4P$ zQg=Nu@dkQ}?;Z4>xeqtxu|#-M_dF4NxhbzD!khZPg9*_4D85j)98U`wY5f3l!s^1I zw#HO?)b3A39sX3UGhr+0YD{~gZhso;@u#6)e;Vprl8*ZQ>1e>8jwboja|R<12Qi^P zpA`E$m)jiiu<Pb0ysK1ch9Cv3n3v5UAW6nJ4b{d%%_H;Xy5PV6mq*jv({2P9Qm#3y zhH;Rx%uS{NAL8$Ul}44dNaWMtc1eX(>9$ilifI_r{ukM~ND~2u^@@swJWPb6!W>v6 z*C_i{GOhq8P(zy6%+8C$BcpiYC{iF0(DERGEP|hmTEx*paZ<3rmz`4+7F!%!nukfu zLT$KLT#=ILD6h=3s&GorRi=odM8*&_jF;wsahE{BH<f6rY?LTk6oJI~Qj-!I8p<42 zUZz2a2oVuKQeo0d#5kekiui_1lSG6`bj}Es%xSe0ibZwRN;w(LoKHKS#b<7W(Q+Bt zfjczo^Q?yIY=oj!R)l*7dJ+2x+^NApQ$M#>vCdP7g4><4tWu5U1(L2X83BAVCtw=t zro~F8P1TQLASEgF9cmEI0ONJ(WV4~?5E@meZmYn%i2VX27OP1&M7|>dFDNzkm|Kq? ztSkwf@U6WJtUGLZ4mNsd_lh7dUra%Wq@l)J%Fe}pEk3Ba_Z~;40GZN^YtVOH){f)4 z9J2k20+wgA36G~3eW{q2YLHE(h-Sl&0I{JEM;vt-nRNlKWlCU+B?)Q%?<*Lf{F7DP zGG6vW-5^j=k`+_ZO_jjgw52Qo=8b3FJ#U+dmAvm_f=vdf2rAd!{lz%XKSHU40HrqQ zPhl(Yt|PuL^a+ej=ROydE|ddA%qd_<c&unPoit;wd9ISCH21&yqP%)90qe%o6mmZS zbCeYY`iR>iU$PM;B<87%MWn#~JsX8J&J|wMmgpLkTY9)nd><(uif4a4l9ihhaLUrW zY6g63QzFmz04;XsjT8bxpO}5Fy8^1CDkb>!?G^!1QIOt{y?%X29qLh?2orC<bQ-`| zo1z|hNPfZHAu=&OTfe&H5)o_^Mw1=2POT+m6nVHkqiCm;hC7Ho#2nry@F4ODKH9QK z-Lpufk^4p({jd5{b2K*Fra<>1cac4u?YdsILzMWL*;cM#OEtvVIVFM2KK&5DwtSN3 zG7!=wj2kf&0wUAUb7dx?q|U^*F>9L*P_g}06{&3HJ}PE1K6ZEf<Ejw0!9bJiK&!=O zIkaPs*~nXC7YU?@qdYS0<#rFAn1`sLwq)V64)7~OcpOE{!*nP>B(jww1AJnpQy3W# zcHd~~IrCCv#ERN0iYX}W3EkC1rF|*cVi7moXTDES7j-#}H5dU<!ZVK1s((GSHrtfR zPs~#cRY6k3rK$9I;gURFL&B7YC{4bQ*xKYI$No%t0Y7knlAxHwUIGz;ZbV~GJg&!_ zaSi#_8+PpOi<QHRhKQm(&3kQCfpIPxy>qdqbZ6u-0_R6euG>hUSh=StDO<7&T*>&{ zLR}M|jVpx}c|NSgZ5g+zc#>jkqvi*aJeIs*CnX2j%3lyVQ{v#`9o^L^fTUS%>ba%$ zQ><~TcF%Plz8-Otqvn;76{YnSKq)L+o99gYv6SiVnU%ZYs8NIQ%Z%@pGD?|lbP(IC z(N{jGRM29!oCQzxk$L0{HrBr$$wOle;T=>`f5S#d^E=acUHi4JqPr=#Wf-8ScL=2X zdWMMFFBAiur8DXqcF9buj{vijQH)cHlRhFkqF09{O<h0-K*JYlEs28s60JhsqExbr z0}!G<T_|L&iI{Y{jwAF)l;U#@8Pe>!rNZd`d{$XzL^kwnzmjgs(GKd8eF3nunV|sf zUU_#Hk`m3}C&0Px9!kVy-&4jkO`dW6Z9+twL7*hP9Xx6hcFII#hwD&)-#sh=eELpZ z2I6VnnRwZH@g#2xW4zWmYTpwA_gngpr~GA%iZXKaU>l}no37QGYieZ5ZNgL7OK4=q z>_VKiSLK9h+4?eF(4DvuX#wyHd17|HaHfwJdmA;wEo<(l=bqGo$sF#6mIX(^FE3p} zIwpGgXT$@H%C8${a{?Pa@^hPnuRK&KZP6WZUFvNAtPHC%kD)Z%Cuw}pp!GG%1o0u0 z<r$@kt0q3lI0e`xeM6$DSX4w{!o0#tU~PHPDmbOr7EIPxAX#P38LmCFX<V))h?qfF z{Xge$J@WaC!%4OzqDu-(+0;JPoFGDe63k-80nB9NCQr88`Q)-eXQOeVr1?aq{$$BD zBJ%^jd|td-jJgLdHX3yuvKCE8Lw;Tlg$pGJ;n1kfRGqrGwk-fB0xnF!nBeL}&CM18 zONDtet^m<1n%>!l#!jhJpf1DJ;{v>T^QhYXL*dsWB9wfQT+@+%YJ&K%&N0b`66e0N z#&M(cB(N>HJ_WC`F(}H%ebQ%tQydT|^!-{mF?Hk8N+~%_TXI5+Gqc9VaFU<JM7q^R z_&kM|aMkn6wung<JmFPY8qSVM5<__I{PR*Yt~c$KonPgRii%G<sM{`;GU^80E>^Y+ zOHQ3r@1g#tXJ-Ux+b@H&J}OO<d<={lS3IWzzM#fKwiRnl9UTE<YLw1;m^>QvMI+x8 zQJw<y-zP^8bVJ~CzOl|s_tWWhm3naS-6|2^7MLEYE@|5m(@*&rx^*(Wh5=V6G$zi1 zCr`LWBM;SQu;5gjO`pVu)#ap8%6s-6OC|doYcxMPAAo;`ZH<==-=UX`^87a^T-R_O zDfOl&MRUUK$iLcTC*q8vPbI3&`@)c9PMVzwC89=Xq1LqS_g&vr@a7GnjXY260M03d znWsjJ&FYh^P*zQyfYpOu2<$rTY>*Lx5m}umof|9dxE=0ghN8o}s_zk1dzsk881Uri zPHS&M>xbSY^`2CJP4h&Hz+W6m{DeW1hMbOh@%g0~ie`Ev>CniPbb`nmu5lX_w*W`2 z`v7x)KoebRtSLbSH}~xQE$@qDSiACMf3Umt0{-|gtjSvax1!fiqyQDuzNzYe2SBy_ zK>km#U4EOUnS7?JOFi1wx4LW#G~WtSR541uP?Z`<ZDIZx-87(F)~LJaLXOTF#yMw3 zqTMTW*~mrU+Y+?~P2nhrk9xgX!n=&QHS;8UlDMz>rT5Fp8JO&{t}WyucL=<zlDf9x znyy#Ut-Ac=dPVP5Q+R0Vh|=r@^#+Q2MlHoI5X$tNlZ{F8rfv&)^RwYsv+G5G-5D!n zhQX4e)B{gPF89Se>(!c@RUT9<+M04PEgNWeO@|b_Ry_CJ6IVl`_EAYZ(+z3O8(t|5 z$t=w2SN(}Yc7LOpS>xQs^g1~Q^g%|aYjX-APs<euUXip_Ih)^zp6~`$wQ(z`5md`G zmO+ucrUVM;qlQzni&}k|bE(cM8m*(l24hn*3?>A|1}koKkJ8wbz<Wd=hj&{Tv6GDf z?mAGdH$s~f!E}8NS9CNxwz6Y80y!t23@H#vziyh<RlLUOWL|@HqMPyCo8(Gwp^sc< z%Ug`)2fC7D`YqH4@?Dank*RLZ5K&Y{5;u&6fPGe09mcaCNLj$Z9;Eh8ugh^<vAp>g zp{U$hh9B^G5xoDli@}?+UxiM>R^OoS#I2&voJNh>q|y>MqPf{r&?9gb%SD6Rh<eEa zqr+nlF??Z&ww-X$ASv693r2hx>(WkX8!dHb;O;el?vxG;@wh?4MyntppwvgD6MI?8 zby;nrhyeZe5Blmn%M`|w;XKL|h-JPwFKV=M8@(bfJb>!4)qc&iHsCXUl@3!tgEDtW z9Ue`do0t;uV2Sdy2s+j61)$2}qcs6?v|x|1KfVWVi<8q&ewyN2A}}L&N<&Ft<gsS; z&@=jKH2<)=wWNIcSaS&QY_cuc@fvFU0OAZy)j@nWI>MZ`J1C$``<$agGasR4%VS1j zie1PuIQMx;n<J4SiOf4+0W=*aq9Nml#u5<jI3e3(*`AHD$7N0S*)=?DV32F<v}7^o zZf-VryX_=vZp8K;GH%_lRSPmQU5scygjrAlDcBqk7%b(~tXA}*I991>3pK>lg=Kf* zleuV>663L`ego|aoQ!E*Fv+<x4bcWH6i+j*MgjciMmOJBheQZob|F$qgXf>u5Pu~u zq^WYNWKq>0cU-q|n|H>*eQ4!`426^QAXDEkv09Vy7@m(O>8XI8i#6HO^>DJqY$WZk zcqn>`r{Yika|f$PE2D?;HS?TwZ@F}Wmar3tpDP+w%?nxSp=eiSA*CXPcqxsD^`?3L zfxL!@Yl0J<nO>uG44szFyi?4357VYD20)tW>g>cq-t%(J&?jLZr~}hOogp$awA_OQ zCL&0H1ga)zbWEF})ZUPlViJmc1SK&`p<Tj^ycO6PpMK(1aYH64(g8D9@ja;L=mP{E z^foeLGA8av?DV=Q_1GMSdJ)>U_I8<X37uxCzJFoCk^$N6wnINsZ7)7}@BzHZTK@T$ zmujQ6i5)x(dhO*qsvK&ID7F!ie%z%-)7GKa>$-v3Z<(`*PC3lp2MAVW{1m0c=OZQr zda9P;S<^I)matA~9d;zt#_CUDW}w<Ym|pS=!*z4UCikxu%QyOCsr2itl%Ev_T0_A^ zb!|Z2mQSAg+@f^j!ii$am6Dd}89lvO-S&VxN{HTAg1m^x8+01(dr}YhZhi|?g{7Db zjv@l5Jzf&|hIWe-fujCvi0JY>fGowuYzflpl-D?2mmw2;X50+qPBfvTprCa^HZr_& zPG1!>89riugVY`>>Q9bmCskXzBRhW7XGzv@`=n5?;RRIGQNj)-LrjOP=uU8WR;VTI z+E|y>vz!@iNZb(-<%*_o)*RgRNmhF{^*`n;IqUw9OUHZ)=ovxN)r%LQ&!o&tKH;^W zlpNyO$4ar&T1pYUUG>SPkntr`0AEn<ESC{+pU0a40b)|6TluIB4xcWguorgA2HU>o z=t>bf$l%UU!Z0M1vK564E!zWH;5g38&_o1zNYX73Z26i_Yfb6N;(jVoKxp^I3olj0 zf$B~XGQi5(uzW1Zn`sZ~zTlDG0|W}mgmNg;m6G>FL;@x5bS3;oc(VHLJVGsg@`Jym z@wGMEJkZ>IIKq;sz2Qf=jtRFU_uGQkXU=<Bqse^G%)J#S5lj6q%*>Un{WYBEKWbU~ znJZG>?fXF@orp_bNMz#3$rk*>@NWqryPj1U`o<8B4ZRV{s$}~Q2wN^YmG&xI63`q6 z+zbdF1)<0Ti%Ds~8xv!R3v%JJBWI_IMV%}tF1Ds;1tB!c4*g|v?~nxFpwcj&!H7tp z5h+&3<1D6R$Qu(4A#8h)gX4{7i{D^_v2m4IN#20+CX^yF#N3D5oA<8B&PvHM6n-}W z;CX9+sudM@cxFkY$9KXiP{}k4hX`deU%mx3G^Cd#qcw~E#mP@d_<6vfy0>NSnLpz5 zqKb;+RoCEupPOX*S#s6TLbZ(1IJ=gV6;A%S^F0vyuj+$NII5zGx9zGLIwyWV$Vu6o ztBHv*<R*ce8CzU#PmIp<v|pecRcZzjK?J?8iTdX3r4(-#IYlgxL0rOD;Nrq1!z3>1 zXYHJ8GGryGxN_%UcC^;>s$L+E9SmfJPA~}_N-tuKf2WaJcgvMpnTS^0QfHat;R4N1 zhmDyX0Y!mf0|<ceID$=moRr`rlSrRL`qH#ubH{L!hJP9k*5UudnR%6e60Nc0yL4$G z=RaJgFuG@%Pe+jM6$L3vR18Rdla@vw9{qHHAt@*yfm*d!!_qgx{E)n=o3MEzE_lA{ z-w1D1ZpqiYW#fD_cOuLdE&}}!6?`O4VGx_H%<-jHpX+?PVz}_vZDS^}LBS-FdDaNM zmHVaKvqSC)?`zEXMp?R686sA1JK{^PI@kGTPOs79F-E`yLN0oLR;6rfT|{Ged026N zVh#QAmkOWCr%(vEh=9*vfFN{2Xj;jJ-$03PP5w9_=;+d~!S8T100#{m73dit$YAgV z2v?v`Hi+RO);AmYWXblwHK(adLfa(>aRc!B3Jbk~xPZ6!@&Vo(1R@!O8ive6H=n2= zb(1>Stqe<vvbrj4v)TL~&W6EHfh)X3=SS)!D(<@fsrjj&zTi@p$yBRV!Og)cCsyNw z<3vmf&pOz(iWE6T42l_??ipjjy9yUaNedU9tE$;Lx%;43To_*1{)zu%RPS25fZJ}L zSJ<S@4D+T0Sr=Q^RpeRbMBNkWN8d%CR*Q&FP4}3e=<{dn5=z$vCB*wkxwJB>HHq}a zCtSP$s?AH{Ti4LHBni%Jby^4`w?8NU9d&wqdhGNmbu6$sz(*0|Xh5OT;nk0Zt}I1i zJpT5c`lFR1ZE}Uvk@zvb8KrmkO*>27k!lXTx=+FMATuUALsjWbSzF9G&O&KQ;25qf zE+4Qjkg=&-B=HZ$n-g17sddk$V;rf^tzlZ5L4l9D?t_lx4QV8Bz>;_ofMF0~BnpTh zs=fvE{@+jeT%RGddd_U%_W_p#wSVG|`#=B{@<PAtZjKE1Q3;eUJhD2};G0`+5XsBe z{E`68zQw2qT)$b9O6<uoMr-CFIJdX$2#VTvBr`T{VAMQkF=66>Qir?^G$9UD&*U(r zmD7Rgd%#s=DIrRStH~~61!YfduAU!VbH?~FNqk45Q!r@4VZ3SSO3g`5pik2RW14|g z%Vu5;630Eu$s^`4neYCUhyL6)q~Y5TGWzU`n_a7e5r2cQcE{}6tR>%C!-<gC{G_Px z=|=^#FpW2$iw|a(I1BQ|gTl>`)spiAZ}$y-$wx<rB)DlT2ak-xnzYjWdHfKPFV1>B z5%Tsa)=zAe1NOuxk6Q=*`MO>YudX6B(qcact5ks6`#+0y0Sl!lfn%`Zy}=5BgQ8H@ zdb>>n14g*-*z8XnDxE8~!DBLn=9tQJOha|axwdG5b<7nLlbq*>Cgy0|=?kD`4H3hq z5Wbx)F-^N^^)&e==jI(F2zYva&i6B~s|s6BM^HB@`Yg$--K96nGUJdg699x7He~Ay zg6GZ|PRx{r+YLWVXNu|bT^Cy8{OB%b%vT1t-I^0J+f#zwija<&{P_VH|Km@j>mLI^ z7sDujP$4c7avFTak7IW!cbR>U?E_p<kyvyZSyZ;Bt|;v6={Ws#>Gk<f&Fhw~lW(~$ zl?)rNUEPRFp1PBQV2y~&oH{K(9lOc(HE@Iu<*w^>wJR?D`?RhMZ-4cO$>?7jo*y1T zi<C3|q{zohm0AZ`J=yZr5*)^h1Fk@qkhmRvYvy{1So%hI3+;W{8DW~bV1IyDD5PBT zH4{JG88XFY<vm;$nukPXx#W@uO|#_ICYPtD+vQmh)<-1RPRdA=0T+(PX7c|}iL3$M zqP<<dQjKe;jVBs-N9hQQh(5?owCR-fYK}xq$|zGoeyLK7RqjxI20}gE%es3YkOA>k zJ1Q};!c$OSqGY64f<ZvSt0YE9KIu)eC0Ig|7zwWcy89Fd06B8$LTYjf)C;9hlcl4H z{$=WR6G4qrgl|<A2BS-_0E?FZhk$x|+7Eyx%;Z`=7M59(s9684J>~iq8mo8O4_ofm z(}&c`nv^=~Zzg8BZhCToZLsY|jE&}X&b>5w>a@dE{GYiCJ*+l^?#$&+MPxr-S%s(m zflG$x^JV()6XS1Yx~KJ}x&F$CO0h+wX(X*A894*(nT4fF`eg%#kK<_nOIpOJc@E5+ z4$QKPUbw0jEp(T>vI>`XMpWd?TUZ!t9FMb}&72&8rYTF=Y(icbYNYN64EQjfGiJgi zLjifP=F=mCFon>lZ!8C2($Z^`f(OTczZd~9pYC?XM)B%L$IBFO^>!ackJFSdXhKJb zMT#e7q8~ij&(BXDYw`v6>Y`d9y7bB|ardRA<5K#^x}ZZAu(>Dolhub(k`EEZO+A18 z9LCR!z!{rvfO9bqy@9Ace$T|Up2}TPQjjvjO(r8&)Tlwlg)2)8Qy=fDmf#bPV1L&W zg8E>sAFT&Nu*|s)I5AG(4ID{uf~~m7fS6eSXghrAut(=+@<uMcw)3WqA777Nj4r*h zQ_P5)mu}vEyjiut)eVS@@}*~tXQcZmnbK{1cLy?0?P5vT={iRjUkkgTOe<wF1hAEq z2?ypi*YaszKS|%&$;=hjBwO6&(K`uPa)u&4qJq+ep_UVw;vKimuxTWqq<NmMg*EVK zMGKIdlOy&0to?a9puD%VhxsusqkL|U)XTmBC!FQ3^60SKyv4A}#-rusBUhGS#BGhN za+#~+K)h?qBphpaNh>_55q?`+%ez5Js~`XH=W&UgBQ~AwNDgs&?f^Y0o4t-eh$<v7 zUnLorsOCqPEZ$LVBE7E(MS?9MJ+&%9KO=N8&ICZFEb#>4&du7f-4gGkWW;N)cwEff zN=BLN4pY_W|G&>}Q+4Y`%8#cVFW>ON3vFZH|3BHY8qePBvzdl%MQdqk_LPQw;g<=l z-(Pp0`uLqlKUVD7yUHh38YhkVNb6+(f$%GYf}egBEzLRB=Ar{@u7C8yi;pI``Lo^p zNguuV!K^s+_N<6?6Z`feQ}%T2zB)k1$rkLHGGNUK9*J^Aa?GF0mHiZkDr`Umn8P;P z8m)+eZ@UrOzRy|cvcE-B4M<;Ed$)ymEG)c`_C?x-!i632R|ommt@Q!q<PEbGm~<-Z zhM*dBJAe4dn%|7{#;j-lXU`_hJ2ffru`nmtk}t8K?H@)laowt<M7H>ISfw-ro)z05 z-FbetA}v>zj&^_m{Y%m@y!ty=`m;uPv`@J84G?gG!y9~pAUXwR8M%1&N}ta62NrF# zhSb0<R6IN6$v4)h@C!KpI}nTZ9f&v|aiH(Wfw|q7PJK7_sy)z@t?x}HcHFtzz@_@} z9XR0_HV@C|2^*+_>X7D*6rcWmY4|t!h#T&ozVqsCJ>;&cv2p!K<LX$5@eMKxll{0a z)DT@VDxrrLpzP+Q;r&aSroX%_jVO#ub4qeXP{ZPDuJLY7uso2xKYQuI-Un<psVEFH z(GSI>xqDnSHhp@f`R@j}pBakYy`Np{t}psdmDSh9_ObWxj#&p#RncpX2c+RZp9KW_ z?!NC;dEdX=mjM844s`vCBg|`F75m>b>IEgnufbXNq~F4Wm=Gf@=~okyeH|B*FDPv4 z<F^_et+F67R&@<SEr12WyB^vswufD~1xg1n>{=BjR+a*JxvPt6P18uJh>}sh89qv; zz0cJ^vWJsOzlI6Ic4V4ip?<%f3j$n&e(yrVv?DfxfWI!CBzvfVxc9Y6x6!H>mk1@2 z5=?;;JuYZxW(&Y*v|5y%d&GStSCoxbM}q=pwxB)T>0~CsNS%qKlBdM=bV6}0@hue5 z4~tk{-m2@+UgAPyPoKW~(Y&Bvw8)YtdAU<~C}otX#n{5MOwO3<CpF-_ney{XmD>9w zfIi<~AW2O=Xk;Uw;>gmg$p-<{5uWAltgE<CNa8t%<>z_1KFzN|B)QVFiC{ns(zX61 z7=+xxT|3G<$2K4|uYn*7>yB2plagPhWH<0=2?pcLu(Pg%pFm)5EEXn#wGqS#WCvQt z<M!+LF)}g_MO|*4e9QOVUmH6*vHZ)no*qt+^qk2_U!k|pTj-+_Dx#BDh;%S9)|GV- zr<kHRae!vzGASg(+nQu~Ba(7Of~}{A&Uj*Dng8*txxH@fpG{%FYMA$*kyQh1mJjT< zfIxRT=wq=5R*n3J2d`EybQ4J>l;qo+u|XP5i^q1oj;L`sPQPX19(Zw!N9As{D(!R= z`3b3TyeLWT-C61yVD@y)W#4UCh{-6EE^_F#rUh7ixxi6Tnx-AgROTXwSBP0G$@_*8 zjn>GHH#|EtTgM%N=H?;FGDDP2vzYit$8x0Vd(Go$9x#!97Emf$08483{PC!(o2L&9 zDq{avcp$P$&e-(LF<+GHqf}>UvS!t@gsHEd({cH}cQmZZ`P2P{an?jzDbL7((WF;q zr-J;1Bz_=R%fQV+)V=VGyp)W3uQe8{{hGi`2Asb#s;W=<q@rg|nI(AMXt@h!RqyMJ zYKgqul3}8#p!pTH5OKM!qsWuuERA()J^FrV7`%80;amT-7F_%D&oUmn81%QWOW6Ws z!?E?i`mh%jX=$m6*#mr?Qy6b7tJ0X1Gr3S=zZYh)bxu|7es57;W+80~tlMe{Uj!_A zzgrpN{kA62a;XfWh;ahF8qDN5pE8sRhmEFhv^l8Ml)(EhqV3TVR7UwyQmMoQA9W!W zaW>XuMftAHdm5qrQGxHlW#1Sefay<ch_=_)<%AW?P39s}vEK%YKf^u1%2)Z0G^5LD zf9<rF0TJ~FV;qSBJsnorTpSiMQBK&@kB7#DGJ2semhMaL?bWP#5m4|dA9p0w=@t_# z>SxcUcv-t;e2nH$Uk8b7`g^nFO=P(p@G7t={TDt5GiSuf-bu`e<H3o!7h5DiP3`l` z>s}!9Ml_|M$!LO9QWDXuUy-HP7E^XBP?}Z>)Yl0N`1bATY0d7eERAKFUsB=0q(r%S z5_Owo_o}7!0sNsYpEY(fI}<2VC`%a(zDR}Bf|mL-@a3;l%x%7xg{*$rEtH(kLK_@e ztfkG9>_y=L)PTzlrxv`EQJi{{?m?loO?MBx-aD(TOck7=Ryh+h&|*Rrrb<12>)R?5 z<I}bolM{T~QnUwv{ikmfn$rrm=#1B^+(<@VKDA8YHrUGX`dzjmb93tdB^90}0VTz^ z!3c%GHa;b54-55OwMMIxmKKku>&pZ63}E(5#1`oG*PHebXP}v`eiKo*CbDWO9(@<y zWsJ(&EonZAV1g$zB5xjhI22D2mbFS%7T;i0@MnQ{2ZrsIeAA>RGddWIrYtr3+t8my zQ&T}K+#IY6=I7X&l0DwUcu!Gcx~nEhQTTW~xa2WNoHeh(8Jca#U8SFHYH_3NsqK>> zu&TNk{QI%3TDf@7<a+hvs?OnjE_9da${ggQ2u*xb8{PNDvtwb_)k1@BISV>F1$i8w z#8Tjk7x$g{XhcDYmHyJ8(yY9c+xy^V*oo>nTsG=()Mreo5fEnyY_%C0%Wg1va#=Qu zHN!{A6rQAjQrgi#nSg)I^AN)|EtLW~JUkcQQyrWY@uH=a104w3x@$HVSReJ7*@V&; zBqf8GA>pR@7jNUj>odQs6aUw%5K#!1=lG%4oay;?5~$N3iR{PI<B`CqgcvO9A?-zL zj!OO^Yz^g(6sM+!)z@i?@lgt3(fjpgsPiuzUOgjCrUUZB9Lj+5_AVydnv%-P2j>q> z=jh$gq*twTgY2E8C!gpTS$i-6tGx}ZpKi$+$(C1iJb}T0Z0*~(XH-x7cwg5~y-XTA z7QY>v6}OBh;w_7tg@rt{qjV&oP$t-lig0@hBO({AZS$zy$VCK>BF2o0Zy<jnlx}0O z*Eb566PR3}JV~$sUJOw%8BOfM(1ycP6N;%K9T$Wk79&EovxNZ;9rNu#%{T2&<Y%C4 zO#Uubd9)uRz3#$MqMqikA*O(8p4R1&_0pB1Vo`}~4D>s%3Tum2+v79iGQqBGCYwgZ zOXEep(Ek-3;(%sHj05D{*UBiLw<t<pXDW4!)o6vlC(9E&u*x^LJVYoj-&Ll-@2L4; zgzZ7wk3U*D>Q4xTXV;abw(kJYJkP%WrEFPmwiFiu@97a3B#8OR&J$i%_|l}k$3T09 zm$ba%z2dHXS_&2{+=+)Yd1w!*{l!4tB#CDP1H}ypCvI^Ponz{KIGsRoO?=>=@2htS zxtMdg7{$F0*epy6=pu<T$Xtz!;Bk0CP$@dPaCS$-uFqxag`@0pLB_@7)sMFAWy_S5 z!eCSNUTzm-P6^Ny(7nj!8h!AJEF4AftQD}&n9Y5mZw8vN%JuBc0<LO!G<0-W-u(h- zY9#g!O&T29Lp1=6cV>M4wm|tY_9%XK<O#L&uu1K|yzZj~-~#YS0he)cIZP;EL)Hp- z`9($^_W`&7lwi(w@!?+i#lR?mFBq10eyeM0p!N(6n#@CciN<E_x1I9g1voKUV!aD3 zXK7DdVv1i*2xoX7-xBcxR_j*m8YQ`V2f+;gXR!~AEpg;=3b$r!@Eas2@q;L&^%n?1 zK+yYyj85W^A5bQ}k3`8~Rmc#4Zhi|M+6oLK0>2pEB;6zu|0nq1gH=tnLVQ8sp7HLN z9t5^8U$*s)Dzz4h{>_Go`~POi+xoI+N)U>0cJmJ>8$9}u^IQ&TtPC?pRyyR$?n_u7 z#CdXT{?XzHTg<n3<nuYRBhmR$_UB~KSxMcmM>YWJc-xNc^NV}<@(ShW&&668`*PlB zC^*7E%3%J{*_tfELm~r7V&VbV%UB)m{1St;VxEW0A~Z+x5_oGH3>r2%>F*4YDC3*C zs059|x7KPeVsBv=wK*$%YRp%1$DRmx{o{KZ%AZ!REW&TQcb7AzKOEO<-OCFPlx}Gv z@~55sRTqo(8Ak!HDQaeDcbLVzKjE$LpFAV@KB0Xxt{;-qAVX~0@BAt0FR-*Y<1v>; zAA{!dSNEg1knuTFBP983_1kx3M{X!?Tri&lK@eyD5KUa0-qiJkpoi{tewD{Fl9+iR zC<G(|Nle`goW=Tylg>-Pl9`Dh2%>O5yPo&vRynq?Wdwu3!-&@y_cDYHfNXu-zedD+ z7=*A9Kz-IL*moP$gK8&J&*$^x^1zUJXcXp3xv)$5X;Z88U6<G_LS{9@Q0_de-M~r3 ztMOEhp&er_V%>2LZ1oEXzDClA9u2k6;f9A*dX0`z{U?u!pRi9q(T|Qke(A|qi5+5* zdRS~+t_q1JuZ`c{|Aa8`H7N(HbEZG}QKM7@oSiyFu804W6I>iw{ffn|`-5Pw?Tn9h zyu*kk$i}Q#S56$wwPBL)$>7&`knc73#tiJ+mVmMR=dXbHZQwp8XUOP7Z8<992lGFq zDb@8pdyz7&l*Pt-)#4_EciQhNYatl2LPND_@6%$Kx?YpE0J6dmgork$alBNCEWMUm z3qi0ET2PyMgM!8M^&L+P7$Nv{DKDgakpf|(3l|A^Z9$V)Frmi2d&`tm2wjH>!FqVP z&vZgBB<0DGnL$kO%{OJsyhal6*VZ|*S=N8*K!#){tl&u@uTbY78pYAlM8d*|iVt?= zW3yS1zj-M?#G0Mr)0bI%6b-SN=W+Z6J7i_WjFBqISf;3{-%BS9gxBxgu#64i7+<GD zwrim4FR!euhgBF7EOrZJGUu8(%EXLp?m=O^$FeCBQO;Q-bIM<eeHbzR0r`6!(}2&B zXmxxXgV@V9>^1i0ve|5KFx!6bZ}(Hln`H1mi9!LZj#U}r4)m$|0`3r2C96pC>0s~W zg<sYHJIhcB!RN6sPz{U<`J=I*My31G`Xx%^JgyEzkWqTHge!8h0~nl{D_gd+AWVny zETDshu?%27H40Ataqz@td?g5d-gXtOiC`}hO9A_d#nw{Nq8NJ3b+nF3sRre+?Na%0 zGYWcEa)=h_f@5f+x!W&CZD-aKDuW$1-)P;rPk$%xuCS`G+d}u3#om3?(^XAsbVkxV z=|RBOvXiZ?MLk3;w-BlqfcTiV81e0mjLGl6`R%7~{`~&WkGF^Wi?f4WzYsxBH17)L z@RhdP-t&|Y@Oodj;;U^)g8}7Ua2PQu<j{pgix)EJQ`uaK<}cqLwl*5Ihgc2De%p<j z5hWfjP=)#ufB~)*Qk*J6E9<1tuXE0OZ#vnR(5NQEQ8{S4t6f6<dz^~@JQ-aP+N@H? zWzyLzWQ8Zy3cm@G36}!rNyN^jBlExx|38k8R_9N*`f}V`lO}3nS2`IXa-KtcE=h=e zS3?_9J%?oyAp#O~0X+4vjre8Cp_VZVD$yy0%1-c?w&kv>g*>kwQcHdM+rGQP2us75 z<&Xed)u+E#4iUou82*pMyBIR+zkeR=O~<*F+#TB5yJ~Hy9FVI$oh2Pi*Zgx{%HGqk z=jukou$;7A8U#Hz8Nfcpg$DG(ZcUtUV#>mJ?k{e<!%qW2!*s=V9Gr1ja9dYWv)tgx zX9d7hwB2Ekz0wwS;a<%7H4hkuEMWy6a{zw4Yg)lJBpFR2iE;%<K9fE3fL@yne70Hb z;vL>`WzpWRAW4C_<ar{U@FYuqqRhF-te;7oDPk5w#6rgxoz_LGD`SY@n_V<<<nw98 zWiI>8T<KRkOo2Kl%L3>7grg6jmWndT8R?i*kS@7at+rzkbVmnMp}V)UX>-{XM#bT5 z-2GSHRoA|^lA_iNq}BHm^I_%XAYne1w4XSDG6qVSm0_pr;LF46>U^OuW>J54%G0=3 z*Ee9kh<G1Walq61>L6CCPO3nCq6C%HvcjWSPlN5qN`ekXMr;gt30QH_=9)1=aQk{b ztuKe&)?4m$6$7s})oVwFIwHj;%A(tyjai&)GQ~Wo2$T}%CE~yg`#pkdXU(VnW~~y3 zn^jGG#aHHfx<Mj}Xf#GT-3=H)w%{9j0O9H{jR)Rpw`=%_kKC|Roa9M*L8N*a8B<do z>v<yJ=y^2k7Q+vt^?vVsib6GFlw0;J`7U9S;+2^PyP@w!1#rO{JaUMAD*zdEq<})n z&!?DCURgveOBj`x+Af(LjQQ3G>Xn75Dc#>C27=}P`gJla7SCqx0U!^s3@iM6Blk2! zG=(XV|KIbNr(^97fr6I*>7tKz&4@80NcMBd)?e$<#*W=TWmK!FEYv(;E^Rm8eTccG z#i2d8Ehc@^ZH-P@z&hxqbgX|qxhQiILyQZZh1-YBr7{<`w2u4U551hy(4aURmCV(i zM@bcXWo6BwzM6xYs%x30hbB<D>`OUz!&q76CbRXpyxev@T+mkEfKaanqxt`;bwBY& z2ILr&u-el`sbD>BoAqR%YY`;W+Z5c<)B{I3H;^I_*nQ-C;4u*5I)pnn%SErcoSaYe z$r0oeIb64Hkq}eGQo<%76&3K@V*kQ2IV6G~2)G66B;u~${X4!3<>iTecCoAa{t_zZ zRlRx$IGS`~y^F#-IIdBfcAS?XP$6#AvevedQPSnS0|_y7cNv7ev(1xCt=*ZrZq^Mk zwB;iMFSTrSYB=<dPvn>yEWU)%Z%2V_k!vf3|LV)v*BCt9-`iR9?Enw;Mg%|RwN6-e zkpx_$xxWI_xbCaQ)kJMnYqK^)Y%S{W7_(DGb8~&oi!21s%x{1DY@2knj|T6eR3CrG zm7cq}YET<X)>%qJkH3PY4W@sx>lTBk4yZn=K0jJkUC7LqF!hhMQ6=Qs7=dlX_PMvN zKq=s>)mb+K-PqkFFV`(#rPZgC<D<j<^);vB!=`8<Up=xS16tpR4bHn}&N8Gay+2!0 z6?>y&&t`c`!|Y`S9TOQvH|8f?$6~?S?1vmUN4wj8H!~<RSSe;OL-PnuKppE!wa)5H zRsYZ*n-*q!YysWQ?oxTgz?*4sS;97MM&DAkkS$h<SkxFa)8)mWH8qg_ho5ae7Xo;; zZ7%hqi0*D##ZyNuX^R0Mz?D6YWuP#bhk(EI*Qe9{o%OZZw66Ar(F&rVooB4C#xzf; zn-diLngZ{W`mCK=RzZ#yRRs(hR`P{kVDW%nE>9|Ivz-~!Z8?Ax6zD?Dp!(cJXy41l zA$|Gy)>b5$m%m|Y5~aNvFKaY?3zM(Iun+g*Ksq8f0`Xi|LPW>oT+M4nbbGyc&X^jA z{lgu{hZ5bI`V3|3I#Ip@b7B6F6^H`F+ucHmt#V%JaNklut~!FMe?6wLBhnj^+s-;@ zZ8l!l9mDRx7g+*RQ)&LOUH09)@-@Z*r=QPG;8*?nw6X3@$4$N8wUEyhx%QSGWL(>) zQPt<FCMcod7rAnZT9ogrYV|V1>)p-u`LwxMFH_^-O`yySP<oCiUQ07<hM+dI5z9K} z;DM&QwGp#@jt{0*E2A>fCxU<2$C9P99VQ9(sSy$!^BU8xOe}c_xUc(7HES`;CfMJ5 zb3&jk2GrY<1{4FrJlnAuE@#)~xX&<-q$tUj_Al;=*Qes@MZF4yqREnqvEfUBn=>32 zL)ux)9-AV6F4o!YjUMc8kMc9_i#uwm!c+ICaj!7bX=^PjUe91zFV14*enu8JL^4&o z^A@vfD<4fhar(si2+#uJ2ORkn<r)y^7j`@mAan#5#@SOi7DaOB&^i3Y9jP@jF-z?U zU_*LeT-WvC_#ckxr&jY4B{zDo=Ueal)GgpOy*9gl`~(^FBc6$T+HgKsD@3RTMn+8n z(Tv%Uk7VM*!yV{gA50)f8Rc{MA$Kt}b?BAIGGo~&sC}W`@BxOkCgO_DhS|*~N&MI& zRrQ^K50~(qN)l1BV53A;*0oBRgVs?JLDtN0LQmtwC?`09Ii2`$(7LJ`xj;cC^0OPU zovaa#cC~f@3i(YDBe-)jpElKgry=y*^|;^%eyGc${q{G!yTWjk$S;xc%^oeeC80zg zA7JYFE$oz+2b}1UA8})e7jUdeHLz8ZoSDWvM|~MBf*%eqCrE|6+^LC=`51J{!4hxm zd63g;d2U2Lk^O=18?bT|DjR~+AO7O2K+3y6ST-sayF2gj8K1oh@(B&j$i9UYpX2%( zF&{eKF6au`K})(2-x*J=^;<pWyqh&sRYEQZ`Jl%Oa@dN!0SD<q@e3@<zDl!X4R5q^ zp!c2fWRbu_Z%+YTcz#Ja<xMJOWh#~0Uu0ZomvQ(TM;=Bz0+O={yGjet^>~EJ<DMsh z%rZ(tkbI47d!P@Gj8(3K&JgBzHFb7L0v3pD0{hNvglEGcYB#2->t(uFQ+KJ2(H{6f zVXf6#^b`9-x_~jO(Jj?=#|gH!m>fERuw0PP&_SwK(wBNN1|RP)&i3~<*CQu(%@{Qc zRgbxD66!K&yU5YPZ5nHN<!VQ8%>k6NnwEOpdW$*cTx#2ZJ3C&kogfY!SUa2@c+}<) zQR*V+aG?fa)DP!Iokaf7trRN02f|S{WdYn5k3=(++TqdJ@y%`tN#w3)mpd;{F?3LK z|B!_4_l<hS2j;U{>ws-{9~HF#L9|t{QXFIzWTD~N!^`{DUQXN8_cp6m@F$--$R*2b z`Yh^=fZZ~3A8)2%)|TwYpd7DHcPJfF`ShX?q5Jf&dz5?_@9$sJa}q0~G&v$~Yh=%p z*4dRHG1iU>&jf!=tGG(G+kHsGuw*W*aLMrwXbX#Tu2BHaboTjlYtviSEU68G6iWhz ztxNVye1;DB5_Mwz&4k2tt1<U2(S-wRrH>>>D}c?j1zl&}j5!FU9~lm(0|I=l%X7{p z=G?c6kjZd<$q_of!$P$bDq2PHtoU}HcC{f$G1|5C)m;U5>Z}Rt<ky!>{jTH0GySwn zAXqYQS8H{Kbi1bmh~$nZM+P`&tf;wrXiik|Ed};U#g-lUPC*jJD|E@#6cLTacP>;M zn#ZXryo?E#TqUnK)w4RJxpDMQGI%)<vJ4CSe%R3~OEf(?)~uw?h6@21R?O{TjAk$a z_)1^Ra*-+A0pP?@JWSk|TFA_M@sZet!uEuAEV_zUOYM;QDXsafW|66F;JHiu#`_P| z)ag;`_^wt(EWo~6sLiMfRYy|y{z;fS*wT3c(%gVBydfOV%uBH(dT)(y_s&PH;!uh$ zgAG6OV-<?qjGc+np4SLfCe|45`KvU&Sd1%U#nNd)u)vVTTJAiR=MkD6Eutp<l;H); z8pHs)v|2$hEdN;M9hxV|1@&nAM&Hl__G-{cpXKRcxyT1qK7cT>bDf+~7r+J#4B`bk z_5(Wmw!Mjq@vW}XWVPE8=lrbQLgY)Ge$Kgdccc1g{oyOPGvZ3~<@%YvKO7(J?)b~e zXkXqee|I!9q+*!r%$D_L9J3%TmR$Lk3#GkyQ8Yj0FO!NzR}S22f9D619~|@jony1c zE!{dE*3~~V&a}ohN0m|jKzXfu$8ZE6P_B0(g~{Muk8|zNhg%$HGGe(ElC`em03H)4 z=<&s7nOS6;apF4HUmRUp%D~oXQS~`C=zQ>+&!0_eFuz6oY&s66K!NU>L^=rtwXO#2 zH$s4@7XIaWwN!=$3|W(-VUT!J1MDk?d0K#e3f0d-FD<5j*~!~VZL*bxw{X$!-FIWH zD&;|;0uvw|u=kSl1vKc$WymI5QovMWmx}qF^^rcDh;km<zkl8!wNxB7AArS<$VV0p zHfYQC#3AyhrAWSafGBX{f6~ecKuz%k1^mm0O)A~>DDgR;yRzVN4V%j)>vMO6XOf<d z7B<Iqg5(8B`Ds1F?3=R2EuH;B{{uz+zXLSZ$iq^4yLiL@3Zt@q6OA23A~25)C_n{k zi}JLtyyA^x$O2~+z+?_c;J3pK6c`pB4C_^$O_3=)C8K=VS@r2*83-C9j%wsE12RS& zw?+r!0+3<M*eGBSS9MN&ln}^agTry0ztNhktI1#OHL~+=!d5}2apzOFv~Niq{LczQ zFjva@8;8;DDhfwg%qo;KxB~*dGXM3f_OzoX>cnZka}~zd00030J+z*edpPkM8Kj1e z0RX@SAOPSoh`~odB_zyS-|ruDYBLXbiHbPO(~|I&+e|@63R>jsX9s0CF|dzhU7QG~ zkvJlyC=sQ|oT53jpIe3`3l(w@LV>{`WvEdm2PhH*;3Nsl3D#^$+Y|q`Ads9IqaIsL znEX<8pcN)|1=paJqD7gt2#c}UMoDowG@>byh*_gVA}Oj$MQc9Mif#-SIZj-!(?)-5 zphFifFov$`M6GU;s6rh&Qj;<w8d9G|)Whqr7kDV2X(~<Obs2*-iH(Md1hazTX~}qC zWNH<2M@7j-6D}7@K_Q|%sKgi$G#WBI=%~!%U_gf5<zY)OBON&r%u-c;mq!|WMdKOb z62MlC0ZRk4{H37abx%;q>h++J*QY^8OKT7esA}EH!xYTu2pbv9(l&Ts9wqL#jO2aG zrA(!^5`}U@#R?-0i$nei-)2xz^5v3c8waFExY%YyTN*2Rqd&Tz_;G#2P5p+AjN+f4 z#m!I$nHRwYga&sgsYM(WI3n_EcPwTP&mK}hdX5u5rLj4|(=e1L+(-3AWL2l2j(dTf zvBUs_(q_U!=U_zUqUI-f0>@+|G}3pSC5<YZH{POIPG+_|mXM2|I#TL+MB*2Slert= z6UvW+5DOLocP?W1Sn&%r;ZHiV{KXXVu}s@#bP-;z&YSUYv;$J5Ko&(OmscfsLPXzE zs|&+rzGGcgzf~5~lIc0)3E6j%EZCu@SsKd4!8X*q_xzm3O7z%`e&xK<j!E6Uc~eWa z<#0d4*cn?cc1hi2G+m#@TmPK7K;97C>G0*yYW0ATZ<!GJ*CW${^^wJ%KvKeU{5_1H zW8ZN!!4r?fpNWt1N->?rl&%7gg}PPNwIS3JBRFbXq}0QAhX#IoNXX%Qu)cyQQ+YXc zgjH^(sO3F2=+P%2O{7t0J59yV*lJeyP1EFQV4bG(JChm6>#SVJuFS~5Y*CM62}`nV z#Wf!Wcxc)<W*U@PIpCwA&P1?S%IsW(uR=>*byaAIt%`)Ya&_D2R+^0XTfdNxWw>Hj z^HVjg3g5WM(g4Z-1agCTe1T9ThOcjK@9rNSpPpY{-%Rfx@cH%q^ZWNtQZ&PIydX-l z*<!WX9Zr|q<MsIi!B997jl~nmR63K*<qO49xl*mw8_ia`)9v*K2vt;!g-qiOPsQ<! z_Yz1bF<$bD*F5K~#MvzgNlHr6l98<BBw`aMQTI5AfGCK8I7n~?yW5P$M0ak5&3H$1 zY~m_M@*>+*c9y5UtE-+>+}b>;o}C+=vxcU6sJsm-Y-1I*wRF{UN_q#{I(xbqg{^Ij zLebe{0Rz8fjx)#R?&Wg3or_$vxq+M$z;$2wK@fbi;s7`bS(V;{0NZ|u27&O~#>0Fr z$UUqe*u6RSQw#tAfgnfRm4J102H-rX14q5(2dtyzj+!__)+z1?05U<dvACQ_t(emt X7IHyB_z7@g-T~&)gHWZ(YH|VqvZ`!^ literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/dist/katex/katex.min.css b/node_modules/mavon-editor/dist/katex/katex.min.css new file mode 100644 index 0000000..c0cd145 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/katex.min.css @@ -0,0 +1 @@ +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.11.1"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left} diff --git a/node_modules/mavon-editor/dist/katex/katex.min.js b/node_modules/mavon-editor/dist/katex/katex.min.js new file mode 100644 index 0000000..906ce12 --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/katex.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),i=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;a=i.start;var s=i.end;a===o.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=o.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15<o.length?o.slice(s,s+15)+"\u2026":o.slice(s))}var l=new Error(n);return l.name="ParseError",l.__proto__=t.prototype,l.position=a,l};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,h={"&":"&",">":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e<S.length;e+=2)if(t>=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},e.toMarkup=function(){for(var t="",e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t},e.toText=function(){var t=function(t){return t.toText()};return this.children.map(t).join("")},t}(),T=function(t){return t.filter(function(t){return t}).join(" ")},B=function(t,e,r){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},e){e.style.isTight()&&this.classes.push("mtight");var a=e.getColor();a&&(this.style.color=a)}},C=function(t){var e=document.createElement(t);for(var r in e.className=T(this.classes),this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&e.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},q=function(t){var e="<"+t;this.classes.length&&(e+=' class="'+c.escape(T(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(e+=' style="'+c.escape(r)+'"'),this.attributes)this.attributes.hasOwnProperty(n)&&(e+=" "+n+'="'+c.escape(this.attributes[n])+'"');e+=">";for(var i=0;i<this.children.length;i++)e+=this.children[i].toMarkup();return e+="</"+t+">"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t="<img src='"+this.src+" 'alt='"+this.alt+"' ",e="";for(var r in this.style)this.style.hasOwnProperty(r)&&(e+=c.hyphenate(r)+":"+this.style[r]+";");return e&&(t+=' style="'+c.escape(e)+'"'),t+="'/>"},t}(),O={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},E=function(){function t(t,e,r,a,n,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e<k.length;e++)for(var r=k[e],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(t>=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="<span";this.classes.length&&(t=!0,e+=' class="',e+=c.escape(T(this.classes)),e+='"');var r="";for(var a in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+="</span>"):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<svg";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</svg>"},t}(),H=function(){function t(t,e){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=e}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?t.setAttribute("d",this.alternate):t.setAttribute("d",z[this.pathName]),t},e.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+z[this.pathName]+"'/>"},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="<line";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");return t+="/>"},t}();function D(t){if(t instanceof E)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}var F={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},V={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},U={"\xc5":"A","\xc7":"C","\xd0":"D","\xde":"o","\xe5":"a","\xe7":"c","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function G(t,e,r){if(!F[e])throw new Error("Font metrics not found for font: "+e+".");var a=t.charCodeAt(0),n=F[e][a];if(!n&&t[0]in U&&(a=U[t[0]].charCodeAt(0),n=F[e][a]),n||"text"!==r||M(a)&&(n=F[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Y={};var W={bin:1,close:1,inner:1,open:1,punct:1,rel:1},X={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},_={math:{},text:{}},j=_;function $(t,e,r,a,n,i){_[t][n]={font:e,group:r,replace:a},i&&a&&(_[t][a]=_[t][n])}var Z="main",K="ams",J="bin",Q="mathord",tt="op-token",et="rel";$("math",Z,et,"\u2261","\\equiv",!0),$("math",Z,et,"\u227a","\\prec",!0),$("math",Z,et,"\u227b","\\succ",!0),$("math",Z,et,"\u223c","\\sim",!0),$("math",Z,et,"\u22a5","\\perp"),$("math",Z,et,"\u2aaf","\\preceq",!0),$("math",Z,et,"\u2ab0","\\succeq",!0),$("math",Z,et,"\u2243","\\simeq",!0),$("math",Z,et,"\u2223","\\mid",!0),$("math",Z,et,"\u226a","\\ll",!0),$("math",Z,et,"\u226b","\\gg",!0),$("math",Z,et,"\u224d","\\asymp",!0),$("math",Z,et,"\u2225","\\parallel"),$("math",Z,et,"\u22c8","\\bowtie",!0),$("math",Z,et,"\u2323","\\smile",!0),$("math",Z,et,"\u2291","\\sqsubseteq",!0),$("math",Z,et,"\u2292","\\sqsupseteq",!0),$("math",Z,et,"\u2250","\\doteq",!0),$("math",Z,et,"\u2322","\\frown",!0),$("math",Z,et,"\u220b","\\ni",!0),$("math",Z,et,"\u221d","\\propto",!0),$("math",Z,et,"\u22a2","\\vdash",!0),$("math",Z,et,"\u22a3","\\dashv",!0),$("math",Z,et,"\u220b","\\owns"),$("math",Z,"punct",".","\\ldotp"),$("math",Z,"punct","\u22c5","\\cdotp"),$("math",Z,"textord","#","\\#"),$("text",Z,"textord","#","\\#"),$("math",Z,"textord","&","\\&"),$("text",Z,"textord","&","\\&"),$("math",Z,"textord","\u2135","\\aleph",!0),$("math",Z,"textord","\u2200","\\forall",!0),$("math",Z,"textord","\u210f","\\hbar",!0),$("math",Z,"textord","\u2203","\\exists",!0),$("math",Z,"textord","\u2207","\\nabla",!0),$("math",Z,"textord","\u266d","\\flat",!0),$("math",Z,"textord","\u2113","\\ell",!0),$("math",Z,"textord","\u266e","\\natural",!0),$("math",Z,"textord","\u2663","\\clubsuit",!0),$("math",Z,"textord","\u2118","\\wp",!0),$("math",Z,"textord","\u266f","\\sharp",!0),$("math",Z,"textord","\u2662","\\diamondsuit",!0),$("math",Z,"textord","\u211c","\\Re",!0),$("math",Z,"textord","\u2661","\\heartsuit",!0),$("math",Z,"textord","\u2111","\\Im",!0),$("math",Z,"textord","\u2660","\\spadesuit",!0),$("text",Z,"textord","\xa7","\\S",!0),$("text",Z,"textord","\xb6","\\P",!0),$("math",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\textdagger"),$("math",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\textdaggerdbl"),$("math",Z,"close","\u23b1","\\rmoustache",!0),$("math",Z,"open","\u23b0","\\lmoustache",!0),$("math",Z,"close","\u27ef","\\rgroup",!0),$("math",Z,"open","\u27ee","\\lgroup",!0),$("math",Z,J,"\u2213","\\mp",!0),$("math",Z,J,"\u2296","\\ominus",!0),$("math",Z,J,"\u228e","\\uplus",!0),$("math",Z,J,"\u2293","\\sqcap",!0),$("math",Z,J,"\u2217","\\ast"),$("math",Z,J,"\u2294","\\sqcup",!0),$("math",Z,J,"\u25ef","\\bigcirc"),$("math",Z,J,"\u2219","\\bullet"),$("math",Z,J,"\u2021","\\ddagger"),$("math",Z,J,"\u2240","\\wr",!0),$("math",Z,J,"\u2a3f","\\amalg"),$("math",Z,J,"&","\\And"),$("math",Z,et,"\u27f5","\\longleftarrow",!0),$("math",Z,et,"\u21d0","\\Leftarrow",!0),$("math",Z,et,"\u27f8","\\Longleftarrow",!0),$("math",Z,et,"\u27f6","\\longrightarrow",!0),$("math",Z,et,"\u21d2","\\Rightarrow",!0),$("math",Z,et,"\u27f9","\\Longrightarrow",!0),$("math",Z,et,"\u2194","\\leftrightarrow",!0),$("math",Z,et,"\u27f7","\\longleftrightarrow",!0),$("math",Z,et,"\u21d4","\\Leftrightarrow",!0),$("math",Z,et,"\u27fa","\\Longleftrightarrow",!0),$("math",Z,et,"\u21a6","\\mapsto",!0),$("math",Z,et,"\u27fc","\\longmapsto",!0),$("math",Z,et,"\u2197","\\nearrow",!0),$("math",Z,et,"\u21a9","\\hookleftarrow",!0),$("math",Z,et,"\u21aa","\\hookrightarrow",!0),$("math",Z,et,"\u2198","\\searrow",!0),$("math",Z,et,"\u21bc","\\leftharpoonup",!0),$("math",Z,et,"\u21c0","\\rightharpoonup",!0),$("math",Z,et,"\u2199","\\swarrow",!0),$("math",Z,et,"\u21bd","\\leftharpoondown",!0),$("math",Z,et,"\u21c1","\\rightharpoondown",!0),$("math",Z,et,"\u2196","\\nwarrow",!0),$("math",Z,et,"\u21cc","\\rightleftharpoons",!0),$("math",K,et,"\u226e","\\nless",!0),$("math",K,et,"\ue010","\\@nleqslant"),$("math",K,et,"\ue011","\\@nleqq"),$("math",K,et,"\u2a87","\\lneq",!0),$("math",K,et,"\u2268","\\lneqq",!0),$("math",K,et,"\ue00c","\\@lvertneqq"),$("math",K,et,"\u22e6","\\lnsim",!0),$("math",K,et,"\u2a89","\\lnapprox",!0),$("math",K,et,"\u2280","\\nprec",!0),$("math",K,et,"\u22e0","\\npreceq",!0),$("math",K,et,"\u22e8","\\precnsim",!0),$("math",K,et,"\u2ab9","\\precnapprox",!0),$("math",K,et,"\u2241","\\nsim",!0),$("math",K,et,"\ue006","\\@nshortmid"),$("math",K,et,"\u2224","\\nmid",!0),$("math",K,et,"\u22ac","\\nvdash",!0),$("math",K,et,"\u22ad","\\nvDash",!0),$("math",K,et,"\u22ea","\\ntriangleleft"),$("math",K,et,"\u22ec","\\ntrianglelefteq",!0),$("math",K,et,"\u228a","\\subsetneq",!0),$("math",K,et,"\ue01a","\\@varsubsetneq"),$("math",K,et,"\u2acb","\\subsetneqq",!0),$("math",K,et,"\ue017","\\@varsubsetneqq"),$("math",K,et,"\u226f","\\ngtr",!0),$("math",K,et,"\ue00f","\\@ngeqslant"),$("math",K,et,"\ue00e","\\@ngeqq"),$("math",K,et,"\u2a88","\\gneq",!0),$("math",K,et,"\u2269","\\gneqq",!0),$("math",K,et,"\ue00d","\\@gvertneqq"),$("math",K,et,"\u22e7","\\gnsim",!0),$("math",K,et,"\u2a8a","\\gnapprox",!0),$("math",K,et,"\u2281","\\nsucc",!0),$("math",K,et,"\u22e1","\\nsucceq",!0),$("math",K,et,"\u22e9","\\succnsim",!0),$("math",K,et,"\u2aba","\\succnapprox",!0),$("math",K,et,"\u2246","\\ncong",!0),$("math",K,et,"\ue007","\\@nshortparallel"),$("math",K,et,"\u2226","\\nparallel",!0),$("math",K,et,"\u22af","\\nVDash",!0),$("math",K,et,"\u22eb","\\ntriangleright"),$("math",K,et,"\u22ed","\\ntrianglerighteq",!0),$("math",K,et,"\ue018","\\@nsupseteqq"),$("math",K,et,"\u228b","\\supsetneq",!0),$("math",K,et,"\ue01b","\\@varsupsetneq"),$("math",K,et,"\u2acc","\\supsetneqq",!0),$("math",K,et,"\ue019","\\@varsupsetneqq"),$("math",K,et,"\u22ae","\\nVdash",!0),$("math",K,et,"\u2ab5","\\precneqq",!0),$("math",K,et,"\u2ab6","\\succneqq",!0),$("math",K,et,"\ue016","\\@nsubseteqq"),$("math",K,J,"\u22b4","\\unlhd"),$("math",K,J,"\u22b5","\\unrhd"),$("math",K,et,"\u219a","\\nleftarrow",!0),$("math",K,et,"\u219b","\\nrightarrow",!0),$("math",K,et,"\u21cd","\\nLeftarrow",!0),$("math",K,et,"\u21cf","\\nRightarrow",!0),$("math",K,et,"\u21ae","\\nleftrightarrow",!0),$("math",K,et,"\u21ce","\\nLeftrightarrow",!0),$("math",K,et,"\u25b3","\\vartriangle"),$("math",K,"textord","\u210f","\\hslash"),$("math",K,"textord","\u25bd","\\triangledown"),$("math",K,"textord","\u25ca","\\lozenge"),$("math",K,"textord","\u24c8","\\circledS"),$("math",K,"textord","\xae","\\circledR"),$("text",K,"textord","\xae","\\circledR"),$("math",K,"textord","\u2221","\\measuredangle",!0),$("math",K,"textord","\u2204","\\nexists"),$("math",K,"textord","\u2127","\\mho"),$("math",K,"textord","\u2132","\\Finv",!0),$("math",K,"textord","\u2141","\\Game",!0),$("math",K,"textord","\u2035","\\backprime"),$("math",K,"textord","\u25b2","\\blacktriangle"),$("math",K,"textord","\u25bc","\\blacktriangledown"),$("math",K,"textord","\u25a0","\\blacksquare"),$("math",K,"textord","\u29eb","\\blacklozenge"),$("math",K,"textord","\u2605","\\bigstar"),$("math",K,"textord","\u2222","\\sphericalangle",!0),$("math",K,"textord","\u2201","\\complement",!0),$("math",K,"textord","\xf0","\\eth",!0),$("math",K,"textord","\u2571","\\diagup"),$("math",K,"textord","\u2572","\\diagdown"),$("math",K,"textord","\u25a1","\\square"),$("math",K,"textord","\u25a1","\\Box"),$("math",K,"textord","\u25ca","\\Diamond"),$("math",K,"textord","\xa5","\\yen",!0),$("text",K,"textord","\xa5","\\yen",!0),$("math",K,"textord","\u2713","\\checkmark",!0),$("text",K,"textord","\u2713","\\checkmark"),$("math",K,"textord","\u2136","\\beth",!0),$("math",K,"textord","\u2138","\\daleth",!0),$("math",K,"textord","\u2137","\\gimel",!0),$("math",K,"textord","\u03dd","\\digamma",!0),$("math",K,"textord","\u03f0","\\varkappa"),$("math",K,"open","\u250c","\\ulcorner",!0),$("math",K,"close","\u2510","\\urcorner",!0),$("math",K,"open","\u2514","\\llcorner",!0),$("math",K,"close","\u2518","\\lrcorner",!0),$("math",K,et,"\u2266","\\leqq",!0),$("math",K,et,"\u2a7d","\\leqslant",!0),$("math",K,et,"\u2a95","\\eqslantless",!0),$("math",K,et,"\u2272","\\lesssim",!0),$("math",K,et,"\u2a85","\\lessapprox",!0),$("math",K,et,"\u224a","\\approxeq",!0),$("math",K,J,"\u22d6","\\lessdot"),$("math",K,et,"\u22d8","\\lll",!0),$("math",K,et,"\u2276","\\lessgtr",!0),$("math",K,et,"\u22da","\\lesseqgtr",!0),$("math",K,et,"\u2a8b","\\lesseqqgtr",!0),$("math",K,et,"\u2251","\\doteqdot"),$("math",K,et,"\u2253","\\risingdotseq",!0),$("math",K,et,"\u2252","\\fallingdotseq",!0),$("math",K,et,"\u223d","\\backsim",!0),$("math",K,et,"\u22cd","\\backsimeq",!0),$("math",K,et,"\u2ac5","\\subseteqq",!0),$("math",K,et,"\u22d0","\\Subset",!0),$("math",K,et,"\u228f","\\sqsubset",!0),$("math",K,et,"\u227c","\\preccurlyeq",!0),$("math",K,et,"\u22de","\\curlyeqprec",!0),$("math",K,et,"\u227e","\\precsim",!0),$("math",K,et,"\u2ab7","\\precapprox",!0),$("math",K,et,"\u22b2","\\vartriangleleft"),$("math",K,et,"\u22b4","\\trianglelefteq"),$("math",K,et,"\u22a8","\\vDash",!0),$("math",K,et,"\u22aa","\\Vvdash",!0),$("math",K,et,"\u2323","\\smallsmile"),$("math",K,et,"\u2322","\\smallfrown"),$("math",K,et,"\u224f","\\bumpeq",!0),$("math",K,et,"\u224e","\\Bumpeq",!0),$("math",K,et,"\u2267","\\geqq",!0),$("math",K,et,"\u2a7e","\\geqslant",!0),$("math",K,et,"\u2a96","\\eqslantgtr",!0),$("math",K,et,"\u2273","\\gtrsim",!0),$("math",K,et,"\u2a86","\\gtrapprox",!0),$("math",K,J,"\u22d7","\\gtrdot"),$("math",K,et,"\u22d9","\\ggg",!0),$("math",K,et,"\u2277","\\gtrless",!0),$("math",K,et,"\u22db","\\gtreqless",!0),$("math",K,et,"\u2a8c","\\gtreqqless",!0),$("math",K,et,"\u2256","\\eqcirc",!0),$("math",K,et,"\u2257","\\circeq",!0),$("math",K,et,"\u225c","\\triangleq",!0),$("math",K,et,"\u223c","\\thicksim"),$("math",K,et,"\u2248","\\thickapprox"),$("math",K,et,"\u2ac6","\\supseteqq",!0),$("math",K,et,"\u22d1","\\Supset",!0),$("math",K,et,"\u2290","\\sqsupset",!0),$("math",K,et,"\u227d","\\succcurlyeq",!0),$("math",K,et,"\u22df","\\curlyeqsucc",!0),$("math",K,et,"\u227f","\\succsim",!0),$("math",K,et,"\u2ab8","\\succapprox",!0),$("math",K,et,"\u22b3","\\vartriangleright"),$("math",K,et,"\u22b5","\\trianglerighteq"),$("math",K,et,"\u22a9","\\Vdash",!0),$("math",K,et,"\u2223","\\shortmid"),$("math",K,et,"\u2225","\\shortparallel"),$("math",K,et,"\u226c","\\between",!0),$("math",K,et,"\u22d4","\\pitchfork",!0),$("math",K,et,"\u221d","\\varpropto"),$("math",K,et,"\u25c0","\\blacktriangleleft"),$("math",K,et,"\u2234","\\therefore",!0),$("math",K,et,"\u220d","\\backepsilon"),$("math",K,et,"\u25b6","\\blacktriangleright"),$("math",K,et,"\u2235","\\because",!0),$("math",K,et,"\u22d8","\\llless"),$("math",K,et,"\u22d9","\\gggtr"),$("math",K,J,"\u22b2","\\lhd"),$("math",K,J,"\u22b3","\\rhd"),$("math",K,et,"\u2242","\\eqsim",!0),$("math",Z,et,"\u22c8","\\Join"),$("math",K,et,"\u2251","\\Doteq",!0),$("math",K,J,"\u2214","\\dotplus",!0),$("math",K,J,"\u2216","\\smallsetminus"),$("math",K,J,"\u22d2","\\Cap",!0),$("math",K,J,"\u22d3","\\Cup",!0),$("math",K,J,"\u2a5e","\\doublebarwedge",!0),$("math",K,J,"\u229f","\\boxminus",!0),$("math",K,J,"\u229e","\\boxplus",!0),$("math",K,J,"\u22c7","\\divideontimes",!0),$("math",K,J,"\u22c9","\\ltimes",!0),$("math",K,J,"\u22ca","\\rtimes",!0),$("math",K,J,"\u22cb","\\leftthreetimes",!0),$("math",K,J,"\u22cc","\\rightthreetimes",!0),$("math",K,J,"\u22cf","\\curlywedge",!0),$("math",K,J,"\u22ce","\\curlyvee",!0),$("math",K,J,"\u229d","\\circleddash",!0),$("math",K,J,"\u229b","\\circledast",!0),$("math",K,J,"\u22c5","\\centerdot"),$("math",K,J,"\u22ba","\\intercal",!0),$("math",K,J,"\u22d2","\\doublecap"),$("math",K,J,"\u22d3","\\doublecup"),$("math",K,J,"\u22a0","\\boxtimes",!0),$("math",K,et,"\u21e2","\\dashrightarrow",!0),$("math",K,et,"\u21e0","\\dashleftarrow",!0),$("math",K,et,"\u21c7","\\leftleftarrows",!0),$("math",K,et,"\u21c6","\\leftrightarrows",!0),$("math",K,et,"\u21da","\\Lleftarrow",!0),$("math",K,et,"\u219e","\\twoheadleftarrow",!0),$("math",K,et,"\u21a2","\\leftarrowtail",!0),$("math",K,et,"\u21ab","\\looparrowleft",!0),$("math",K,et,"\u21cb","\\leftrightharpoons",!0),$("math",K,et,"\u21b6","\\curvearrowleft",!0),$("math",K,et,"\u21ba","\\circlearrowleft",!0),$("math",K,et,"\u21b0","\\Lsh",!0),$("math",K,et,"\u21c8","\\upuparrows",!0),$("math",K,et,"\u21bf","\\upharpoonleft",!0),$("math",K,et,"\u21c3","\\downharpoonleft",!0),$("math",K,et,"\u22b8","\\multimap",!0),$("math",K,et,"\u21ad","\\leftrightsquigarrow",!0),$("math",K,et,"\u21c9","\\rightrightarrows",!0),$("math",K,et,"\u21c4","\\rightleftarrows",!0),$("math",K,et,"\u21a0","\\twoheadrightarrow",!0),$("math",K,et,"\u21a3","\\rightarrowtail",!0),$("math",K,et,"\u21ac","\\looparrowright",!0),$("math",K,et,"\u21b7","\\curvearrowright",!0),$("math",K,et,"\u21bb","\\circlearrowright",!0),$("math",K,et,"\u21b1","\\Rsh",!0),$("math",K,et,"\u21ca","\\downdownarrows",!0),$("math",K,et,"\u21be","\\upharpoonright",!0),$("math",K,et,"\u21c2","\\downharpoonright",!0),$("math",K,et,"\u21dd","\\rightsquigarrow",!0),$("math",K,et,"\u21dd","\\leadsto"),$("math",K,et,"\u21db","\\Rrightarrow",!0),$("math",K,et,"\u21be","\\restriction"),$("math",Z,"textord","\u2018","`"),$("math",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\textdollar"),$("math",Z,"textord","%","\\%"),$("text",Z,"textord","%","\\%"),$("math",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\textunderscore"),$("math",Z,"textord","\u2220","\\angle",!0),$("math",Z,"textord","\u221e","\\infty",!0),$("math",Z,"textord","\u2032","\\prime"),$("math",Z,"textord","\u25b3","\\triangle"),$("math",Z,"textord","\u0393","\\Gamma",!0),$("math",Z,"textord","\u0394","\\Delta",!0),$("math",Z,"textord","\u0398","\\Theta",!0),$("math",Z,"textord","\u039b","\\Lambda",!0),$("math",Z,"textord","\u039e","\\Xi",!0),$("math",Z,"textord","\u03a0","\\Pi",!0),$("math",Z,"textord","\u03a3","\\Sigma",!0),$("math",Z,"textord","\u03a5","\\Upsilon",!0),$("math",Z,"textord","\u03a6","\\Phi",!0),$("math",Z,"textord","\u03a8","\\Psi",!0),$("math",Z,"textord","\u03a9","\\Omega",!0),$("math",Z,"textord","A","\u0391"),$("math",Z,"textord","B","\u0392"),$("math",Z,"textord","E","\u0395"),$("math",Z,"textord","Z","\u0396"),$("math",Z,"textord","H","\u0397"),$("math",Z,"textord","I","\u0399"),$("math",Z,"textord","K","\u039a"),$("math",Z,"textord","M","\u039c"),$("math",Z,"textord","N","\u039d"),$("math",Z,"textord","O","\u039f"),$("math",Z,"textord","P","\u03a1"),$("math",Z,"textord","T","\u03a4"),$("math",Z,"textord","X","\u03a7"),$("math",Z,"textord","\xac","\\neg",!0),$("math",Z,"textord","\xac","\\lnot"),$("math",Z,"textord","\u22a4","\\top"),$("math",Z,"textord","\u22a5","\\bot"),$("math",Z,"textord","\u2205","\\emptyset"),$("math",K,"textord","\u2205","\\varnothing"),$("math",Z,Q,"\u03b1","\\alpha",!0),$("math",Z,Q,"\u03b2","\\beta",!0),$("math",Z,Q,"\u03b3","\\gamma",!0),$("math",Z,Q,"\u03b4","\\delta",!0),$("math",Z,Q,"\u03f5","\\epsilon",!0),$("math",Z,Q,"\u03b6","\\zeta",!0),$("math",Z,Q,"\u03b7","\\eta",!0),$("math",Z,Q,"\u03b8","\\theta",!0),$("math",Z,Q,"\u03b9","\\iota",!0),$("math",Z,Q,"\u03ba","\\kappa",!0),$("math",Z,Q,"\u03bb","\\lambda",!0),$("math",Z,Q,"\u03bc","\\mu",!0),$("math",Z,Q,"\u03bd","\\nu",!0),$("math",Z,Q,"\u03be","\\xi",!0),$("math",Z,Q,"\u03bf","\\omicron",!0),$("math",Z,Q,"\u03c0","\\pi",!0),$("math",Z,Q,"\u03c1","\\rho",!0),$("math",Z,Q,"\u03c3","\\sigma",!0),$("math",Z,Q,"\u03c4","\\tau",!0),$("math",Z,Q,"\u03c5","\\upsilon",!0),$("math",Z,Q,"\u03d5","\\phi",!0),$("math",Z,Q,"\u03c7","\\chi",!0),$("math",Z,Q,"\u03c8","\\psi",!0),$("math",Z,Q,"\u03c9","\\omega",!0),$("math",Z,Q,"\u03b5","\\varepsilon",!0),$("math",Z,Q,"\u03d1","\\vartheta",!0),$("math",Z,Q,"\u03d6","\\varpi",!0),$("math",Z,Q,"\u03f1","\\varrho",!0),$("math",Z,Q,"\u03c2","\\varsigma",!0),$("math",Z,Q,"\u03c6","\\varphi",!0),$("math",Z,J,"\u2217","*"),$("math",Z,J,"+","+"),$("math",Z,J,"\u2212","-"),$("math",Z,J,"\u22c5","\\cdot",!0),$("math",Z,J,"\u2218","\\circ"),$("math",Z,J,"\xf7","\\div",!0),$("math",Z,J,"\xb1","\\pm",!0),$("math",Z,J,"\xd7","\\times",!0),$("math",Z,J,"\u2229","\\cap",!0),$("math",Z,J,"\u222a","\\cup",!0),$("math",Z,J,"\u2216","\\setminus"),$("math",Z,J,"\u2227","\\land"),$("math",Z,J,"\u2228","\\lor"),$("math",Z,J,"\u2227","\\wedge",!0),$("math",Z,J,"\u2228","\\vee",!0),$("math",Z,"textord","\u221a","\\surd"),$("math",Z,"open","(","("),$("math",Z,"open","[","["),$("math",Z,"open","\u27e8","\\langle",!0),$("math",Z,"open","\u2223","\\lvert"),$("math",Z,"open","\u2225","\\lVert"),$("math",Z,"close",")",")"),$("math",Z,"close","]","]"),$("math",Z,"close","?","?"),$("math",Z,"close","!","!"),$("math",Z,"close","\u27e9","\\rangle",!0),$("math",Z,"close","\u2223","\\rvert"),$("math",Z,"close","\u2225","\\rVert"),$("math",Z,et,"=","="),$("math",Z,et,"<","<"),$("math",Z,et,">",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht<st.length;ht++){var lt=st.charAt(ht);$("math",Z,Q,lt,lt),$("text",Z,"textord",lt,lt)}$("math",K,"textord","C","\u2102"),$("text",K,"textord","C","\u2102"),$("math",K,"textord","H","\u210d"),$("text",K,"textord","H","\u210d"),$("math",K,"textord","N","\u2115"),$("text",K,"textord","N","\u2115"),$("math",K,"textord","P","\u2119"),$("text",K,"textord","P","\u2119"),$("math",K,"textord","Q","\u211a"),$("text",K,"textord","Q","\u211a"),$("math",K,"textord","R","\u211d"),$("text",K,"textord","R","\u211d"),$("math",K,"textord","Z","\u2124"),$("text",K,"textord","Z","\u2124"),$("math",Z,Q,"h","\u210e"),$("text",Z,Q,"h","\u210e");for(var mt="",ct=0;ct<st.length;ct++){var ut=st.charAt(ct);$("math",Z,Q,ut,mt=String.fromCharCode(55349,56320+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56372+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56424+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56580+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56736+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56788+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56840+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56944+ct)),$("text",Z,"textord",ut,mt),ct<26&&($("math",Z,Q,ut,mt=String.fromCharCode(55349,56632+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56476+ct)),$("text",Z,"textord",ut,mt))}$("math",Z,Q,"k",mt=String.fromCharCode(55349,56668)),$("text",Z,"textord","k",mt);for(var pt=0;pt<10;pt++){var dt=pt.toString();$("math",Z,Q,dt,mt=String.fromCharCode(55349,57294+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57314+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57324+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57334+pt)),$("text",Z,"textord",dt,mt)}for(var ft=0;ft<"\xc7\xd0\xde\xe7\xfe".length;ft++){var gt="\xc7\xd0\xde\xe7\xfe".charAt(ft);$("math",Z,Q,gt,gt),$("text",Z,"textord",gt,gt)}$("text",Z,"textord","\xf0","\xf0"),$("text",Z,"textord","\u2013","\u2013"),$("text",Z,"textord","\u2014","\u2014"),$("text",Z,"textord","\u2018","\u2018"),$("text",Z,"textord","\u2019","\u2019"),$("text",Z,"textord","\u201c","\u201c"),$("text",Z,"textord","\u201d","\u201d");var xt=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],vt=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],bt=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],yt=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],wt=function(t,e){return e.size<2?t:bt[t-1][e.size-1]},kt=function(){function t(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=yt[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}var e=t.prototype;return e.extend=function(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var a in e)e.hasOwnProperty(a)&&(r[a]=e[a]);return new t(r)},e.havingStyle=function(t){return this.style===t?this:this.extend({style:t,size:wt(this.textSize,t)})},e.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},e.havingSize=function(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:yt[t-1]})},e.havingBaseStyle=function(e){e=e||this.style.text();var r=wt(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})},e.havingBaseSizing=function(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})},e.withColor=function(t){return this.extend({color:t})},e.withPhantom=function(){return this.extend({phantom:!0})},e.withFont=function(t){return this.extend({font:t})},e.withTextFontFamily=function(t){return this.extend({fontFamily:t,font:""})},e.withTextFontWeight=function(t){return this.extend({fontWeight:t,font:""})},e.withTextFontShape=function(t){return this.extend({fontShape:t,font:""})},e.sizingClasses=function(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]},e.baseSizingClasses=function(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]},e.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(t){var e;if(!Y[e=t>=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;n<t.children.length;n++){var i=t.children[n];i.height>e&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i<e.length;i++){var o=-e[i].shift-n-e[i].elem.depth,s=o-(e[i-1].elem.height+e[i-1].elem.depth);n+=o,r.push({type:"kern",size:s}),r.push(e[i])}return{children:r,depth:a}}var h;if("top"===t.positionType){for(var l=t.positionData,m=0;m<t.children.length;m++){var c=t.children[m];l-="kern"===c.type?c.size:c.elem.height+c.elem.depth}h=l}else if("bottom"===t.positionType)h=-t.positionData;else{var u=t.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===t.positionType)h=-u.elem.depth-t.positionData;else{if("firstBaseline"!==t.positionType)throw new Error("Invalid positionType "+t.positionType+".");h=-u.elem.depth}}return{children:t.children,depth:h}}(t),a=r.children,n=r.depth,i=0,o=0;o<a.length;o++){var s=a[o];if("elem"===s.type){var h=s.elem;i=Math.max(i,h.maxFontSize,h.height)}}i+=2;var l=Rt(["pstrut"],[]);l.style.height=i+"em";for(var m=[],c=n,u=n,p=n,d=0;d<a.length;d++){var f=a[d];if("kern"===f.type)p+=f.size;else{var g=f.elem,x=f.wrapperClasses||[],v=f.wrapperStyle||{},b=Rt(x,[l,g],void 0,v);b.style.top=-i-p-g.depth+"em",f.marginLeft&&(b.style.marginLeft=f.marginLeft),f.marginRight&&(b.style.marginRight=f.marginRight),m.push(b),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var y,w=Rt(["vlist"],m);if(w.style.height=u+"em",c<0){var k=Rt([],[]),S=Rt(["vlist"],[k]);S.style.height=-c+"em";var M=Rt(["vlist-s"],[new E("\u200b")]);y=[Rt(["vlist-r"],[w,M]),Rt(["vlist-r"],[S])]}else y=[Rt(["vlist-r"],[w])];var z=Rt(["vlist-t"],y);return 2===y.length&&z.classes.push("vlist-t2"),z.height=u,z.depth=-c,z},makeOrd:function(t,e,r){var a,n=t.mode,i=t.text,s=["mord"],h="math"===n||"text"===n&&e.font,l=h?e.font:e.fontFamily;if(55349===i.charCodeAt(0)){var m=function(t,e){var r=1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536,a="math"===e?0:1;if(119808<=r&&r<120484){var n=Math.floor((r-119808)/26);return[xt[n][2],xt[n][a]]}if(120782<=r&&r<=120831){var i=Math.floor((r-120782)/10);return[vt[i][2],vt[i][a]]}if(120485===r||120486===r)return[xt[0][2],xt[0][a]];if(120486<r&&r<120782)return["",""];throw new o("Unsupported character: "+t)}(i,n),u=m[0],p=m[1];return qt(i,u,n,e,s.concat(p))}if(l){var d,f;if("boldsymbol"===l||"mathnormal"===l){var g="boldsymbol"===l?function(t,e,r,a){return Ct(t,"Math-BoldItalic",e).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,n):(a=i,c.contains(Bt,a)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(a.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});d=g.fontName,f=[g.fontClass]}else c.contains(Bt,i)?(d="Main-Italic",f=["mathit"]):h?(d=Ht[l].fontName,f=[l]):(d=Lt(l,e.fontWeight,e.fontShape),f=[l,e.fontWeight,e.fontShape]);if(Ct(i,d,n).metrics)return qt(i,d,n,e,s.concat(f));if(rt.hasOwnProperty(i)&&"Typewriter"===d.substr(0,10)){for(var x=[],v=0;v<i.length;v++)x.push(qt(i[v],d,n,e,s.concat(f)));return Et(x)}}if("mathord"===r){var b=function(t,e,r,a){return/[0-9]/.test(t.charAt(0))||c.contains(Bt,t)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return qt(i,b.fontName,n,e,s.concat([b.fontClass]))}if("textord"===r){var y=j[n][i]&&j[n][i].font;if("ams"===y){var w=Lt("amsrm",e.fontWeight,e.fontShape);return qt(i,w,n,e,s.concat("amsrm",e.fontWeight,e.fontShape))}if("main"!==y&&y){var k=Lt(y,e.fontWeight,e.fontShape);return qt(i,k,n,e,s.concat(k,e.fontWeight,e.fontShape))}var S=Lt("textrm",e.fontWeight,e.fontShape);return qt(i,S,n,e,s.concat(e.fontWeight,e.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:function(t,e){var r=Rt(["mspace"],[],e),a=Tt(t,e);return r.style.marginRight=a+"em",r},staticSvg:function(t,e){var r=Pt[t],a=r[0],n=r[1],i=r[2],o=new H(a),s=new L([o],{width:n+"em",height:i+"em",style:"width:"+n+"em",viewBox:"0 0 "+1e3*n+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),h=Ot(["overlay"],[s],e);return h.height=i,h.style.height=i+"em",h.style.width=n+"em",h},svgData:Pt,tryCombineChars:function(t){for(var e=0;e<t.length-1;e++){var r=t[e],a=t[e+1];r instanceof E&&a instanceof E&&Nt(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,t.splice(e+1,1),e--)}return t}};function Ft(t,e){var r=Vt(t,e);if(!r)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return r}function Vt(t,e){return t&&t.type===e?t:null}function Ut(t,e){var r=function(t,e){return t&&"atom"===t.type&&t.family===e?t:null}(t,e);if(!r)throw new Error('Expected node of type "atom" and family "'+e+'", but got '+(t?"atom"===t.type?"atom of family "+t.family:"node of type "+t.type:String(t)));return r}function Gt(t){var e=Yt(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Yt(t){return t&&("atom"===t.type||X.hasOwnProperty(t.type))?t:null}var Wt={number:3,unit:"mu"},Xt={number:4,unit:"mu"},_t={number:5,unit:"mu"},jt={mord:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mop:{mord:Wt,mop:Wt,mrel:_t,minner:Wt},mbin:{mord:Xt,mop:Xt,mopen:Xt,minner:Xt},mrel:{mord:_t,mop:_t,mopen:_t,minner:_t},mopen:{},mclose:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mpunct:{mord:Wt,mop:Wt,mrel:_t,mopen:Wt,mclose:Wt,mpunct:Wt,minner:Wt},minner:{mord:Wt,mop:Wt,mbin:Xt,mrel:_t,mopen:Wt,mpunct:Wt,minner:Wt}},$t={mord:{mop:Wt},mop:{mord:Wt,mop:Wt},mbin:{},mrel:{},mopen:{},mclose:{mop:Wt},mpunct:{},minner:{mop:Wt}},Zt={},Kt={},Jt={};function Qt(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs,argTypes:a.argTypes,greediness:void 0===a.greediness?1:a.greediness,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,handler:n},h=0;h<r.length;++h)Zt[r[h]]=s;e&&(i&&(Kt[e]=i),o&&(Jt[e]=o))}function te(t){Qt({type:t.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:t.htmlBuilder,mathmlBuilder:t.mathmlBuilder})}var ee=function(t){var e=Vt(t,"ordgroup");return e?e.body:[t]},re=Dt.makeSpan,ae=["leftmost","mbin","mopen","mrel","mop","mpunct"],ne=["rightmost","mrel","mclose","mpunct"],ie={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT},oe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},se=function(t,e,r,a){void 0===a&&(a=[null,null]);for(var n=[],i=0;i<t.length;i++){var o=ue(t[i],e);if(o instanceof A){var s=o.children;n.push.apply(n,s)}else n.push(o)}if(!r)return n;var h=e;if(1===t.length){var l=Vt(t[0],"sizing")||Vt(t[0],"styling");l&&("sizing"===l.type?h=e.havingSize(l.size):"styling"===l.type&&(h=e.havingStyle(ie[l.style])))}var m=re([a[0]||"leftmost"],[],e),u=re([a[1]||"rightmost"],[],e);return he(n,function(t,e){var r=e.classes[0],a=t.classes[0];"mbin"===r&&c.contains(ne,a)?e.classes[0]="mord":"mbin"===a&&c.contains(ae,r)&&(t.classes[0]="mord")},{node:m},u),he(n,function(t,e){var r=me(e),a=me(t),n=r&&a?t.hasClass("mtight")?$t[r][a]:jt[r][a]:null;if(n)return Dt.makeGlue(n,h)},{node:m},u),n},he=function t(e,r,a,n){n&&e.push(n);for(var i=0;i<e.length;i++){var o=e[i],s=le(o);if(s)t(s.children,r,a);else if("mspace"!==o.classes[0]){var h=r(o,a.node);h&&(a.insertAfter?a.insertAfter(h):(e.unshift(h),i++)),a.node=o,a.insertAfter=function(t){return function(r){e.splice(t+1,0,r),i++}}(i)}}n&&e.pop()},le=function(t){return t instanceof A||t instanceof I?t:null},me=function(t,e){return t?(e&&(t=function t(e,r){var a=le(e);if(a){var n=a.children;if(n.length){if("right"===r)return t(n[n.length-1],"right");if("left"===r)return t(n[0],"left")}}return e}(t,e)),oe[t.classes[0]]||null):null},ce=function(t,e){var r=["nulldelimiter"].concat(t.baseSizingClasses());return re(e.concat(r))},ue=function(t,e,r){if(!t)return re();if(Kt[t.type]){var a=Kt[t.type](t,e);if(r&&e.size!==r.size){a=re(e.sizingClasses(r),[a],e);var n=e.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new o("Got group of unknown type: '"+t.type+"'")};function pe(t,e){var r=re(["base"],t,e),a=re(["strut"]);return a.style.height=r.height+r.depth+"em",a.style.verticalAlign=-r.depth+"em",r.children.unshift(a),r}function de(t,e){var r=null;1===t.length&&"tag"===t[0].type&&(r=t[0].tag,t=t[0].body);for(var a,n=se(t,e,!0),i=[],o=[],s=0;s<n.length;s++)if(o.push(n[s]),n[s].hasClass("mbin")||n[s].hasClass("mrel")||n[s].hasClass("allowbreak")){for(var h=!1;s<n.length-1&&n[s+1].hasClass("mspace")&&!n[s+1].hasClass("newline");)s++,o.push(n[s]),n[s].hasClass("nobreak")&&(h=!0);h||(i.push(pe(o,e)),o=[])}else n[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<"+this.type;for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+'="',t+=c.escape(this.attributes[e]),t+='"');t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</"+this.type+">"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o<t.length;o++){var s=Me(t[o],e);if(s instanceof ge&&n instanceof ge){if("mtext"===s.type&&"mtext"===n.type&&s.getAttribute("mathvariant")===n.getAttribute("mathvariant")){var h;(h=n.children).push.apply(h,s.children);continue}if("mn"===s.type&&"mn"===n.type){var l;(l=n.children).push.apply(l,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===n.type){var m=s.children[0];if(m instanceof xe&&"."===m.text){var c;(c=n.children).push.apply(c,s.children);continue}}else if("mi"===n.type&&1===n.children.length){var u=n.children[0];if(u instanceof xe&&"\u0338"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var p=s.children[0];p instanceof xe&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w<y;w++){var k=new H(g[w]),S=new L([k],{width:"400em",height:b+"em",viewBox:"0 0 "+r+" "+v,preserveAspectRatio:p[w]+" slice"}),M=Dt.makeSvgSpan([u[w]],[S],e);if(1===y)return{span:M,minWidth:x,height:b};M.style.height=b+"em",d.push(M)}return{span:Dt.makeSpan(["stretchy"],d,e),minWidth:x,height:b}}(),a=r.span,n=r.minWidth,i=r.height;return a.height=i,a.style.height=i+"em",n>0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span<HtmlDomNode> but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i<a.length;i++){n+=Ft(a[i],"textord").text}var s=parseInt(n);if(isNaN(s))throw new o("\\@char has non-numeric argument "+n);return{type:"textord",mode:r.mode,text:String.fromCharCode(s)}}});var De=function(t,e){var r=se(t.body,e.withColor(t.color),!1);return Dt.makeFragment(r)},Fe=function(t,e){var r=ke(t.body,e.withColor(t.color)),a=new ve.MathNode("mstyle",r);return a.setAttribute("mathcolor",t.color),a};Qt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(t,e){var r=t.parser,a=Ft(e[0],"color-token").color,n=e[1];return{type:"color",mode:r.mode,color:a,body:ee(n)}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(t,e){var r=t.parser,a=t.breakOnTokenText,n=Ft(e[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=r[0],o="\\cr"===n,s=!1;return o||(s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:a.mode,newLine:s,newRow:o,size:i&&Ft(i,"size").value}},htmlBuilder:function(t,e){if(t.newRow)throw new o("\\cr valid only within a tabular/array environment");var r=Dt.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=Tt(t.size,e)+"em")),r},mathmlBuilder:function(t,e){var r=new ve.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",Tt(t.size,e)+"em")),r}});var Ve=function(t,e,r){var a=G(j.math[t]&&j.math[t].replace||t,e,r);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+e+".");return a},Ue=function(t,e,r,a){var n=r.havingBaseStyle(e),i=Dt.makeSpan(a.concat(n.sizingClasses(r)),[t],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},Ge=function(t,e,r){var a=e.havingBaseStyle(r),n=(1-e.sizeMultiplier/a.sizeMultiplier)*e.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=n+"em",t.height-=n,t.depth+=n},Ye=function(t,e,r,a,n,i){var o=function(t,e,r,a){return Dt.makeSymbol(t,"Size"+e+"-Regular",r,a)}(t,e,n,a),s=Ue(Dt.makeSpan(["delimsizing","size"+e],[o],a),w.TEXT,a,i);return r&&Ge(s,a,w.TEXT),s},We=function(t,e,r){var a;return a="Size1-Regular"===e?"delim-size1":"delim-size4",{type:"elem",elem:Dt.makeSpan(["delimsizinginner",a],[Dt.makeSpan([],[Dt.makeSymbol(t,e,r)])])}},Xe={type:"kern",size:-.005},_e=function(t,e,r,a,n,i){var o,s,h,l;o=h=l=t,s=null;var m="Size1-Regular";"\\uparrow"===t?h=l="\u23d0":"\\Uparrow"===t?h=l="\u2016":"\\downarrow"===t?o=h="\u23d0":"\\Downarrow"===t?o=h="\u2016":"\\updownarrow"===t?(o="\\uparrow",h="\u23d0",l="\\downarrow"):"\\Updownarrow"===t?(o="\\Uparrow",h="\u2016",l="\\Downarrow"):"["===t||"\\lbrack"===t?(o="\u23a1",h="\u23a2",l="\u23a3",m="Size4-Regular"):"]"===t||"\\rbrack"===t?(o="\u23a4",h="\u23a5",l="\u23a6",m="Size4-Regular"):"\\lfloor"===t||"\u230a"===t?(h=o="\u23a2",l="\u23a3",m="Size4-Regular"):"\\lceil"===t||"\u2308"===t?(o="\u23a1",h=l="\u23a2",m="Size4-Regular"):"\\rfloor"===t||"\u230b"===t?(h=o="\u23a5",l="\u23a6",m="Size4-Regular"):"\\rceil"===t||"\u2309"===t?(o="\u23a4",h=l="\u23a5",m="Size4-Regular"):"("===t||"\\lparen"===t?(o="\u239b",h="\u239c",l="\u239d",m="Size4-Regular"):")"===t||"\\rparen"===t?(o="\u239e",h="\u239f",l="\u23a0",m="Size4-Regular"):"\\{"===t||"\\lbrace"===t?(o="\u23a7",s="\u23a8",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\}"===t||"\\rbrace"===t?(o="\u23ab",s="\u23ac",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lgroup"===t||"\u27ee"===t?(o="\u23a7",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\rgroup"===t||"\u27ef"===t?(o="\u23ab",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lmoustache"===t||"\u23b0"===t?(o="\u23a7",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\rmoustache"!==t&&"\u23b1"!==t||(o="\u23ab",l="\u23a9",h="\u23aa",m="Size4-Regular");var c=Ve(o,m,n),u=c.height+c.depth,p=Ve(h,m,n),d=p.height+p.depth,f=Ve(l,m,n),g=f.height+f.depth,x=0,v=1;if(null!==s){var b=Ve(s,m,n);x=b.height+b.depth,v=2}var y=u+g+x,k=Math.max(0,Math.ceil((e-y)/(v*d))),S=y+k*v*d,M=a.fontMetrics().axisHeight;r&&(M*=a.sizeMultiplier);var z=S/2-M,A=.005*(k+1)-d,T=[];if(T.push(We(l,m,n)),null===s)for(var B=0;B<k;B++)T.push(Xe),T.push(We(h,m,n));else{for(var C=0;C<k;C++)T.push(Xe),T.push(We(h,m,n));T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(s,m,n));for(var q=0;q<k;q++)T.push(Xe),T.push(We(h,m,n))}T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(o,m,n));var N=a.havingBaseStyle(w.TEXT),I=Dt.makeVList({positionType:"bottom",positionData:z,children:T},N);return Ue(Dt.makeSpan(["delimsizing","mult"],[I],N),w.TEXT,a,i)},je=function(t,e,r,a,n){var i=function(t,e,r){e*=1e3;var a="";switch(t){case"sqrtMain":a=function(t,e){return"M95,"+(622+t+e)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+t/2.075+" -"+t+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+t)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize1":a=function(t,e){return"M263,"+(601+t+e)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+t/2.084+" -"+t+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+t)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize2":a=function(t,e){return"M983 "+(10+t+e)+"\nl"+t/3.13+" -"+t+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+t)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize3":a=function(t,e){return"M424,"+(2398+t+e)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+t/4.223+" -"+t+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+t)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+t)+" "+e+"\nh400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize4":a=function(t,e){return"M473,"+(2713+t+e)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+t/5.298+" -"+t+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+t)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+t)+" "+e+"h400000v"+(40+t)+"H1017.7z"}(e,80);break;case"sqrtTall":a=function(t,e,r){return"M702 "+(t+e)+"H400000"+(40+t)+"\nH742v"+(r-54-e-t)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+e+"H400000v"+(40+t)+"H742z"}(e,80,r)}return a}(t,a,r),o=new H(t,i),s=new L([o],{width:"400em",height:e+"em",viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Dt.makeSvgSpan(["hide-tail"],[s],n)},$e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Ze=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],Ke=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length&&"stack"!==r[n].type;n++){var i=Ve(t,rr(r[n]),"math"),o=i.height+i.depth;if("small"===r[n].type&&(o*=a.havingBaseStyle(r[n].style).sizeMultiplier),o>e)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h<n.length;h++)n[h].isMiddle?s=!0:(i=Math.max(n[h].height,i),o=Math.max(n[h].depth,o));if(i*=e.sizeMultiplier,o*=e.sizeMultiplier,r="."===t.left?ce(e,["mopen"]):hr(t.left,i,o,e,t.mode,["mopen"]),n.unshift(r),s)for(var l=1;l<n.length;l++){var m=n[l].isMiddle;m&&(n[l]=hr(m.delim,i,o,m.options,t.mode,[]))}if("."===t.right)a=ce(e,["mclose"]);else{var c=t.rightColor?e.withColor(t.rightColor):e;a=hr(t.right,i,o,c,t.mode,["mclose"])}return n.push(a),Dt.makeSpan(["minner"],n,e)},mathmlBuilder:function(t,e){ur(t);var r=ke(t.body,e);if("."!==t.left){var a=new ve.MathNode("mo",[be(t.left,t.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==t.right){var n=new ve.MathNode("mo",[be(t.right,t.mode)]);n.setAttribute("fence","true"),t.rightColor&&n.setAttribute("mathcolor",t.rightColor),r.push(n)}return ye(r)}}),Qt({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);if(!t.parser.leftrightDepth)throw new o("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:function(t,e){var r;if("."===t.delim)r=ce(e,[]);else{r=or(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};r.isMiddle=a}return r},mathmlBuilder:function(t,e){var r="\\vert"===t.delim||"|"===t.delim?be("|","text"):be(t.delim,t.mode),a=new ve.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var pr=function(t,e){var r,a,n=Dt.wrapFragment(ue(t.body,e),e),i=t.label.substr(1),o=e.sizeMultiplier,s=0,h=c.isCharacterBox(t.body);if("sout"===i)(r=Dt.makeSpan(["stretchy","sout"])).height=e.fontMetrics().defaultRuleThickness/o,s=-.5*e.fontMetrics().xHeight;else{/cancel/.test(i)?h||n.classes.push("cancel-pad"):n.classes.push("boxpad");var l=0,m=0;/box/.test(i)?(m=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),l=e.fontMetrics().fboxsep+("colorbox"===i?0:m)):l=h?.2:0,r=Ie(n,i,l,e),/fbox|boxed|fcolorbox/.test(i)&&(r.style.borderStyle="solid",r.style.borderWidth=m+"em"),s=n.depth+l,t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor,t.borderColor&&(r.style.borderColor=t.borderColor))}return a=t.backgroundColor?Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:s},{type:"elem",elem:n,shift:0}]},e):Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:r,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},e),/cancel/.test(i)&&(a.height=n.height,a.depth=n.depth),/cancel/.test(i)&&!h?Dt.makeSpan(["mord","cancel-lap"],[a],e):Dt.makeSpan(["mord"],[a],e)},dr=function(t,e){var r=0,a=new ve.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h<r.length;++h)fr[r[h]]=s;i&&(Kt[e]=i),o&&(Jt[e]=o)}function xr(t){var e=[];t.consumeSpaces();for(var r=t.fetch().text;"\\hline"===r||"\\hdashline"===r;)t.consume(),e.push("\\hdashline"===r),t.consumeSpaces(),r=t.fetch().text;return e}function vr(t,e,r){var a=e.hskipBeforeAndAfter,n=e.addJot,i=e.cols,s=e.arraystretch,h=e.colSeparationType;if(t.gullet.beginGroup(),t.gullet.macros.set("\\\\","\\cr"),!s){var l=t.gullet.expandMacroAsText("\\arraystretch");if(null==l)s=1;else if(!(s=parseFloat(l))||s<0)throw new o("Invalid \\arraystretch: "+l)}t.gullet.beginGroup();var m=[],c=[m],u=[],p=[];for(p.push(xr(t));;){var d=t.parseExpression(!1,"\\cr");t.gullet.endGroup(),t.gullet.beginGroup(),d={type:"ordgroup",mode:t.mode,body:d},r&&(d={type:"styling",mode:t.mode,style:r,body:[d]}),m.push(d);var f=t.fetch().text;if("&"===f)t.consume();else{if("\\end"===f){1===m.length&&"styling"===d.type&&0===d.body[0].body.length&&c.pop(),p.length<c.length+1&&p.push([]);break}if("\\cr"!==f)throw new o("Expected & or \\\\ or \\cr or \\end",t.nextToken);var g=Ft(t.parseFunction(),"cr");u.push(g.size),p.push(xr(t)),m=[],c.push(m)}}return t.gullet.endGroup(),t.gullet.endGroup(),{type:"array",mode:t.mode,addJot:n,arraystretch:s,body:c,cols:i,rowGaps:u,hskipBeforeAndAfter:a,hLinesBeforeRow:p,colSeparationType:h}}function br(t){return"d"===t.substr(0,1)?"display":"text"}var yr=function(t,e){var r,a,n=t.body.length,i=t.hLinesBeforeRow,s=0,h=new Array(n),l=[],m=Math.max(e.fontMetrics().arrayRuleWidth,e.minRuleThickness),u=1/e.fontMetrics().ptPerEm,p=5*u;t.colSeparationType&&"small"===t.colSeparationType&&(p=e.havingStyle(w.SCRIPT).sizeMultiplier/e.sizeMultiplier*.2778);var d=12*u,f=3*u,g=t.arraystretch*d,x=.7*g,v=.3*g,b=0;function y(t){for(var e=0;e<t.length;++e)e>0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r<t.body.length;++r){var k=t.body[r],S=x,M=v;s<k.length&&(s=k.length);var z=new Array(k.length);for(a=0;a<k.length;++a){var A=ue(k[a],e);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=t.rowGaps[r],B=0;T&&(B=Tt(T,e))>0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a<s||q<I.length;++a,++q){for(var O=I[q]||{},E=!0;"separator"===O.type;){if(E||((C=Dt.makeSpan(["arraycolsep"],[])).style.width=e.fontMetrics().doubleRuleSep+"em",R.push(C)),"|"!==O.separator&&":"!==O.separator)throw new o("Invalid separator type: "+O.separator);var L="|"===O.separator?"solid":"dashed",H=Dt.makeSpan(["vertical-separator"],[],e);H.style.height=b+"em",H.style.borderRightWidth=m+"em",H.style.borderRightStyle=L,H.style.margin="0 -"+m/2+"em",H.style.verticalAlign=-(b-N)+"em",R.push(H),O=I[++q]||{},E=!1}if(!(a>=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r<n;++r){var F=h[r],V=F[a];if(V){var U=F.pos-N;V.depth=F.depth,V.height=F.height,D.push({type:"elem",elem:V,shift:U})}}D=Dt.makeVList({positionType:"individualShift",children:D},e),D=Dt.makeSpan(["col-align-"+(O.align||"c")],[D]),R.push(D),(a<s-1||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.postgap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C))}}if(h=Dt.makeSpan(["mtable"],R),l.length>0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c<m;c++)"align"===o[c].type?(i+=wr[o[c].align],h&&(s+="none "),h=!0):"separator"===o[c].type&&h&&(s+="|"===o[c].separator?"solid ":"dashed ",h=!1);r.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&r.setAttribute("columnlines",s.trim())}if("align"===t.colSeparationType){for(var u=t.cols||[],p="",d=1;d<u.length;d++)p+=d%2?"0em ":"1em ";r.setAttribute("columnspacing",p.trim())}else"alignat"===t.colSeparationType?r.setAttribute("columnspacing","0em"):"small"===t.colSeparationType?r.setAttribute("columnspacing","0.2778em"):r.setAttribute("columnspacing","1em");var f="",g=t.hLinesBeforeRow;n+=g[0].length>0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x<g.length-1;x++)f+=0===g[x].length?"none ":g[x][0]?"dashed ":"solid ";return/[sd]/.test(f)&&r.setAttribute("rowlines",f.trim()),""!==n&&(r=new ve.MathNode("menclose",[r])).setAttribute("notation",n.trim()),t.arraystretch&&t.arraystretch<1&&(r=new ve.MathNode("mstyle",[r])).setAttribute("scriptlevel","1"),r},Sr=function(t,e){var r,a=[],n=vr(t.parser,{cols:a,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:t.mode,body:[]},h=Vt(e[0],"ordgroup");if(h){for(var l="",m=0;m<h.body.length;m++){l+=Ft(h.body[m],"textord").text}r=Number(l),i=2*r}var c=!i;n.body.forEach(function(t){for(var e=1;e<t.length;e+=2){var a=Ft(t[e],"styling");Ft(a.body[0],"ordgroup").body.unshift(s)}if(c)i<t.length&&(i=t.length);else{var n=t.length/2;if(r<n)throw new o("Too many math in a row: expected "+r+", but got "+n,t[0])}});for(var u=0;u<i;++u){var p="r",d=0;u%2==1?p="l":u>0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s<n.body.length;++s)i+=Ft(n.body[s],"textord").text;if("\\begin"===a){if(!Mr.hasOwnProperty(i))throw new o("No such environment: "+i,n);var h=Mr[i],l=r.parseArguments("\\begin{"+i+"}",h),m=l.args,c=l.optArgs,u={mode:r.mode,envName:i,parser:r},p=h.handler(u,m,c);r.expect("\\end",!1);var d=r.nextToken,f=Ft(r.parseFunction(),"environment");if(f.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+f.name+"}",d);return p}return{type:"environment",mode:r.mode,name:i,nameGroup:n}}});var zr=Dt.makeSpan;function Ar(t,e){var r=se(t.body,e,!0);return zr([t.mclass],r,e)}function Tr(t,e){var r,a=ke(t.body,e);return"minner"===t.mclass?ve.newDocumentFragment(a):("mord"===t.mclass?t.isCharacterBox?(r=a[0]).type="mi":r=new ve.MathNode("mi",a):(t.isCharacterBox?(r=a[0]).type="mo":r=new ve.MathNode("mo",a),"mbin"===t.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===t.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"!==t.mclass&&"mclose"!==t.mclass||(r.attributes.lspace="0em",r.attributes.rspace="0em")),r)}Qt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.substr(5),body:ee(n),isCharacterBox:c.isCharacterBox(n)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Br=function(t){var e="ordgroup"===t.type&&t.body.length?t.body[0]:t;return"atom"!==e.type||"bin"!==e.family&&"rel"!==e.family?"mord":"m"+e.family};Qt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(t,e){return{type:"mclass",mode:t.parser.mode,mclass:Br(e[0]),body:[e[1]],isCharacterBox:c.isCharacterBox(e[1])}}}),Qt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[1],o=e[0];r="\\stackrel"!==n?Br(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:ee(i)},h={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[h],isCharacterBox:c.isCharacterBox(h)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Cr=function(t,e){var r=t.font,a=e.withFont(r);return ue(t.body,a)},qr=function(t,e){var r=t.font,a=e.withFont(r);return Me(t.body,a)},Nr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Qt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0],i=a;return i in Nr&&(i=Nr[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:Cr,mathmlBuilder:qr}),Qt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=e[0],n=c.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:Br(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),Qt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=t.breakOnTokenText,i=r.mode,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Cr,mathmlBuilder:qr});var Ir=function(t,e){var r=e;return"display"===t?r=r.id>=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<h?h:o.depth}r=e.havingStyle(i);var l,m,c,u,p,d,f,g,x,v,b=ue(t.denom,r,e);if(t.hasBarLine?(t.barSize?(m=Tt(t.barSize,e),l=Dt.makeLineSpan("frac-line",e,m)):l=Dt.makeLineSpan("frac-line",e),m=l.height,c=l.height):(l=null,m=0,c=e.fontMetrics().defaultRuleThickness),a.size===w.DISPLAY.size||"display"===t.size?(u=e.fontMetrics().num1,p=m>0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)<p&&(u+=p-(u-o.depth-(y+.5*m))),y-.5*m-(b.height-d)<p&&(d+=p-(y-.5*m-(b.height-d)));var k=-(y-.5*m);f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:l,shift:k},{type:"elem",elem:o,shift:-u}]},e)}else{var S=u-o.depth-(b.height-d);S<p&&(u+=.5*(p-S),d+=.5*(p-S)),f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:o,shift:-u}]},e)}return r=e.havingStyle(a),f.height*=r.sizeMultiplier/e.sizeMultiplier,f.depth*=r.sizeMultiplier/e.sizeMultiplier,g=a.size===w.DISPLAY.size?e.fontMetrics().delim1:e.fontMetrics().delim2,x=null==t.leftDelim?ce(e,["mopen"]):sr(t.leftDelim,g,!0,e.havingStyle(a),t.mode,["mopen"]),v=t.continued?Dt.makeSpan([]):null==t.rightDelim?ce(e,["mclose"]):sr(t.rightDelim,g,!0,e.havingStyle(a),t.mode,["mclose"]),Dt.makeSpan(["mord"].concat(r.sizingClasses(e)),[x,Dt.makeSpan(["mfrac"],[f]),v],e)},Or=function(t,e){var r=new ve.MathNode("mfrac",[Me(t.numer,e),Me(t.denom,e)]);if(t.hasBarLine){if(t.barSize){var a=Tt(t.barSize,e);r.setAttribute("linethickness",a+"em")}}else r.setAttribute("linethickness","0px");var n=Ir(t.size,e.style);if(n.size!==e.style.size){r=new ve.MathNode("mstyle",[r]);var i=n.size===w.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=t.leftDelim||null!=t.rightDelim){var o=[];if(null!=t.leftDelim){var s=new ve.MathNode("mo",[new ve.TextNode(t.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=t.rightDelim){var h=new ve.MathNode("mo",[new ve.TextNode(t.rightDelim.replace("\\",""))]);h.setAttribute("fence","true"),o.push(h)}return ye(o)}return r};Qt({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[0],o=e[1],s=null,h=null,l="auto";switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",h=")";break;case"\\\\bracefrac":r=!1,s="\\{",h="\\}";break;case"\\\\brackfrac":r=!1,s="[",h="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\cfrac":case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:a.mode,continued:"\\cfrac"===n,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:h,size:l,barSize:null}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(t){var e,r=t.parser,a=t.funcName,n=t.token;switch(a){case"\\over":e="\\frac";break;case"\\choose":e="\\binom";break;case"\\atop":e="\\\\atopfrac";break;case"\\brace":e="\\\\bracefrac";break;case"\\brack":e="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:e,token:n}}});var Er=["display","text","script","scriptscript"],Lr=function(t){var e=null;return t.length>0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i<a.length;i++){var o=a[i];"~"===o&&(o="\\textasciitilde"),n.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:a,body:ee(s)}}}),Qt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(t,e){return{type:"htmlmathml",mode:t.parser.mode,html:ee(e[0]),mathml:ee(e[1])}},htmlBuilder:function(t,e){var r=se(t.html,e,!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){return Se(t.mathml,e)}});var Pr=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var e=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!e)throw new o("Invalid size: '"+t+"' in \\includegraphics");var r={number:+(e[1]+e[2]),unit:e[3]};if(!At(r))throw new o("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};Qt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(t,e,r){var a=t.parser,n={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},h="";if(r[0])for(var l=Ft(r[0],"raw").string.split(","),m=0;m<l.length;m++){var c=l[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":h=u;break;case"width":n=Pr(u);break;case"height":i=Pr(u);break;case"totalheight":s=Pr(u);break;default:throw new o("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Ft(e[0],"url").url;return""===h&&(h=(h=(h=p).replace(/^.*[\\\/]/,"")).substring(0,h.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:a.mode,alt:h,width:n,height:i,totalheight:s,src:p}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(t,e){var r=Tt(t.height,e),a=0;t.totalheight.number>0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x<n.name.length;x++)g.push(Dt.mathsym(n.name[x],n.mode,e));s=Dt.makeSpan(["mop"],g,e)}var v=0,b=0;return(s instanceof E||"\\oiint"===n.name||"\\oiiint"===n.name)&&!n.suppressBaseShift&&(v=(s.height-s.depth)/2-e.fontMetrics().axisHeight,b=s.italic),i?Fr(s,r,a,e,h,b,v):(v&&(s.style.position="relative",s.style.top=v+"em"),s)},Gr=function(t,e){var r;if(t.symbol)r=new ge("mo",[be(t.name,t.mode)]),c.contains(Vr,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ge("mo",ke(t.body,e));else{r=new ge("mi",[new xe(t.name.slice(1))]);var a=new ge("mo",[be("\u2061","text")]);r=t.parentIsSupSub?new ge("mo",[r,a]):fe([r,a])}return r},Yr={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};Qt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:function(t,e){var r=t.parser,a=t.funcName;return 1===a.length&&(a=Yr[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ee(a)}},htmlBuilder:Ur,mathmlBuilder:Gr});var Wr={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};Qt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return 1===r.length&&(r=Wr[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr});var Xr=function(t,e){var r,a,n,i,o=!1,s=Vt(t,"supsub");if(s?(r=s.sup,a=s.sub,n=Ft(s.base,"operatorname"),o=!0):n=Ft(t,"operatorname"),n.body.length>0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m<l.length;m++){var c=l[m];c instanceof E&&(c.text=c.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Dt.makeSpan(["mop"],l,e)}else i=Dt.makeSpan(["mop"],[],e);return o?Fr(i,r,a,e,e.style,0,0):i};function _r(t,e,r){for(var a=se(t,e,!1),n=e.sizeMultiplier/r.sizeMultiplier,i=0;i<a.length;i++){var o=a[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(a[i].classes,e.sizingClasses(r)):a[i].classes[o+1]==="reset-size"+e.size&&(a[i].classes[o+1]="reset-size"+r.size),a[i].height*=n,a[i].depth*=n}return Dt.makeFragment(a)}Qt({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"operatorname",mode:r.mode,body:ee(n),alwaysHandleSupSub:"\\operatorname*"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:Xr,mathmlBuilder:function(t,e){for(var r=ke(t.body,e.withFont("mathrm")),a=!0,n=0;n<r.length;n++){var i=r[n];if(i instanceof ve.SpaceNode);else if(i instanceof ve.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof ve.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(function(t){return t.toText()}).join("");r=[new ve.TextNode(s)]}var h=new ve.MathNode("mi",r);h.setAttribute("mathvariant","normal");var l=new ve.MathNode("mo",[be("\u2061","text")]);return t.parentIsSupSub?new ve.MathNode("mo",[h,l]):ve.newDocumentFragment([h,l])}}),te({type:"ordgroup",htmlBuilder:function(t,e){return t.semisimple?Dt.makeFragment(se(t.body,e,!1)):Dt.makeSpan(["mord"],se(t.body,e,!0),e)},mathmlBuilder:function(t,e){return Se(t.body,e,!0)}}),Qt({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle()),a=Dt.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return Dt.makeSpan(["mord","overline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("mover",[Me(t.body,e),r]);return a.setAttribute("accent","true"),a}}),Qt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"phantom",mode:r.mode,body:ee(a)}},htmlBuilder:function(t,e){var r=se(t.body,e.withPhantom(),!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){var r=ke(t.body,e);return new ve.MathNode("mphantom",r)}}),Qt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a<r.children.length;a++)r.children[a].height=0,r.children[a].depth=0;return r=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e),Dt.makeSpan(["mord"],[r],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),Qt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["inner"],[ue(t.body,e.withPhantom())]),a=Dt.makeSpan(["fix"],[]);return Dt.makeSpan(["mord","rlap"],[r,a],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),Qt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"size").value,n=e[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Tt(t.dy,e);return Dt.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]),a=t.dy.number+t.dy.unit;return r.setAttribute("voffset",a),r}}),Qt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(t,e,r){var a=t.parser,n=r[0],i=Ft(e[0],"size"),o=Ft(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&Ft(n,"size").value,width:i.value,height:o.value}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["mord","rule"],[],e),a=Tt(t.width,e),n=Tt(t.height,e),i=t.shift?Tt(t.shift,e):0;return r.style.borderRightWidth=a+"em",r.style.borderTopWidth=n+"em",r.style.bottom=i+"em",r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*e.sizeMultiplier,r},mathmlBuilder:function(t,e){var r=Tt(t.width,e),a=Tt(t.height,e),n=t.shift?Tt(t.shift,e):0,i=e.color&&e.getColor()||"black",o=new ve.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",r+"em"),o.setAttribute("height",a+"em");var s=new ve.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;h<o.body.length;++h){if("t"===(s=o.body[h].text))n=!0;else{if("b"!==s){n=!1,i=!1;break}i=!0}}else n=!0,i=!0;var l=e[0];return{type:"smash",mode:a.mode,body:l,smashHeight:n,smashDepth:i}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].height=0;if(t.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}}),Qt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=r[0],i=e[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle());0===r.height&&(r.height=e.fontMetrics().xHeight),r=Dt.wrapFragment(r,e);var a=e.fontMetrics().defaultRuleThickness,n=a;e.style.id<w.TEXT.id&&(n=e.fontMetrics().xHeight);var i=a+n/4,o=r.height+r.depth+i+a,s=ir(o,e),h=s.span,l=s.ruleWidth,m=s.advanceWidth,c=h.height-l;c>r.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)<S){p=S-(u-a.depth)+n.height;var M=.8*m.xHeight-(u-a.depth);M>0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push(Dt.makeSymbol(o,"Typewriter-Regular",t.mode,n,["mord","texttt"]))}return Dt.makeSpan(["mord","text"].concat(n.sizingClasses(e)),Dt.tryCombineChars(a),n)},mathmlBuilder:function(t,e){var r=new ve.TextNode(na(t)),a=new ve.MathNode("mtext",[r]);return a.setAttribute("mathvariant","monospace"),a}});var na=function(t){return t.body.replace(/ /g,t.star?"\u2423":"\xa0")},ia=Zt,oa=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sa=new RegExp("[\u0300-\u036f]+$"),ha="([ \r\n\t]+)|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",la=function(){function t(t,e){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=e,this.tokenRegex=new RegExp(ha,"g"),this.catcodes={"%":14}}var e=t.prototype;return e.setCatcode=function(t,e){this.catcodes[t]=e},e.lex=function(){var t=this.input,e=this.tokenRegex.lastIndex;if(e===t.length)return new n("EOF",new a(this,e,e));var r=this.tokenRegex.exec(t);if(null===r||r.index!==e)throw new o("Unexpected character: '"+t[e]+"'",new n(t[e],new a(this,e,e+1)));var i=r[2]||" ";if(14===this.catcodes[i]){var s=t.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var h=i.match(oa);return h&&(i=h[1]),new n(i,new a(this,e,this.tokenRegex.lastIndex))},t}(),ma=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=e,this.builtins=t,this.undefStack=[]}var e=t.prototype;return e.beginGroup=function(){this.undefStack.push({})},e.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var e in t)t.hasOwnProperty(e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])},e.has=function(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)},e.get=function(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]},e.set=function(t,e,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n<e;)a*=e,a+=n,t.popToken()}return"\\@char{"+a+"}"});var fa=function(t,e){var r=t.consumeArgs(1)[0];if(1!==r.length)throw new o("\\gdef's first argument must be a macro name");var a=r[0].text,n=0;for(r=t.consumeArgs(1)[0];1===r.length&&"#"===r[0].text;){if(1!==(r=t.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+r.length+'"');if(!/^[1-9]$/.test(r[0].text))throw new o('Invalid argument number "'+r[0].text+'"');if(n++,parseInt(r[0].text)!==n)throw new o('Argument number "'+r[0].text+'" out of order');r=t.consumeArgs(1)[0]}return t.macros.set(a,{tokens:r,numArgs:n},e),""};pa("\\gdef",function(t){return fa(t,!0)}),pa("\\def",function(t){return fa(t,!1)}),pa("\\global",function(t){var e=t.consumeArgs(1)[0];if(1!==e.length)throw new o("Invalid command after \\global");var r=e[0].text;if("\\def"===r)return fa(t,!0);throw new o("Invalid command '"+r+"' after \\global")});var ga=function(t,e,r){var a=t.consumeArgs(1)[0];if(1!==a.length)throw new o("\\newcommand's first argument must be a macro name");var n=a[0].text,i=t.isDefined(n);if(i&&!e)throw new o("\\newcommand{"+n+"} attempting to redefine "+n+"; use \\renewcommand");if(!i&&!r)throw new o("\\renewcommand{"+n+"} when command "+n+" does not yet exist; use \\newcommand");var s=0;if(1===(a=t.consumeArgs(1)[0]).length&&"["===a[0].text){for(var h="",l=t.expandNextToken();"]"!==l.text&&"EOF"!==l.text;)h+=l.text,l=t.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+h);s=parseInt(h),a=t.consumeArgs(1)[0]}return t.macros.set(n,{tokens:a,numArgs:s}),""};pa("\\newcommand",function(t){return ga(t,!1,!0)}),pa("\\renewcommand",function(t){return ga(t,!0,!1)}),pa("\\providecommand",function(t){return ga(t,!0,!0)}),pa("\\bgroup","{"),pa("\\egroup","}"),pa("\\lq","`"),pa("\\rq","'"),pa("\\aa","\\r a"),pa("\\AA","\\r A"),pa("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),pa("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),pa("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),pa("\u212c","\\mathscr{B}"),pa("\u2130","\\mathscr{E}"),pa("\u2131","\\mathscr{F}"),pa("\u210b","\\mathscr{H}"),pa("\u2110","\\mathscr{I}"),pa("\u2112","\\mathscr{L}"),pa("\u2133","\\mathscr{M}"),pa("\u211b","\\mathscr{R}"),pa("\u212d","\\mathfrak{C}"),pa("\u210c","\\mathfrak{H}"),pa("\u2128","\\mathfrak{Z}"),pa("\\Bbbk","\\Bbb{k}"),pa("\xb7","\\cdotp"),pa("\\llap","\\mathllap{\\textrm{#1}}"),pa("\\rlap","\\mathrlap{\\textrm{#1}}"),pa("\\clap","\\mathclap{\\textrm{#1}}"),pa("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),pa("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),pa("\\ne","\\neq"),pa("\u2260","\\neq"),pa("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),pa("\u2209","\\notin"),pa("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),pa("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),pa("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),pa("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),pa("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),pa("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),pa("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),pa("\u27c2","\\perp"),pa("\u203c","\\mathclose{!\\mkern-0.8mu!}"),pa("\u220c","\\notni"),pa("\u231c","\\ulcorner"),pa("\u231d","\\urcorner"),pa("\u231e","\\llcorner"),pa("\u231f","\\lrcorner"),pa("\xa9","\\copyright"),pa("\xae","\\textregistered"),pa("\ufe0f","\\textregistered"),pa("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),pa("\u22ee","\\vdots"),pa("\\varGamma","\\mathit{\\Gamma}"),pa("\\varDelta","\\mathit{\\Delta}"),pa("\\varTheta","\\mathit{\\Theta}"),pa("\\varLambda","\\mathit{\\Lambda}"),pa("\\varXi","\\mathit{\\Xi}"),pa("\\varPi","\\mathit{\\Pi}"),pa("\\varSigma","\\mathit{\\Sigma}"),pa("\\varUpsilon","\\mathit{\\Upsilon}"),pa("\\varPhi","\\mathit{\\Phi}"),pa("\\varPsi","\\mathit{\\Psi}"),pa("\\varOmega","\\mathit{\\Omega}"),pa("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),pa("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),pa("\\boxed","\\fbox{$\\displaystyle{#1}$}"),pa("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),pa("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),pa("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var xa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;r<t;++r){this.consumeSpaces();var a=this.popToken();if("{"===a.text){for(var n=[],i=1;0!==i;){var s=this.popToken();if(n.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",a)}n.pop(),n.reverse(),e[r]=n}else{if("EOF"===a.text)throw new o("End of input expecting macro argument");e[r]=[a]}}return e},e.expandOnce=function(){var t=this.popToken(),e=t.text,r=this._getExpansion(e);if(null==r)return this.pushToken(t),t;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a<t.length;a++){var n=Vt(t[a],"infix");if(n){if(-1!==r)throw new o("only one infix operator per group",n.token);r=a,e=n.replaceWith}}if(-1!==r&&e){var i,s,h=t.slice(0,r),l=t.slice(r+1);return i=1===h.length&&"ordgroup"===h[0].type?h[0]:{type:"ordgroup",mode:this.mode,body:h},s=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===e?this.callFunction(e,[i,t[r],s],[]):this.callFunction(e,[i,s],[])]}return t},e.handleSupSubscript=function(e){var r=this.fetch(),a=r.text;this.consume();var n=this.parseGroup(e,!1,t.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!n)throw new o("Expected group after '"+a+"'",r);return n},e.formatUnsupportedCmd=function(t){for(var e=[],r=0;r<t.length;r++)e.push({type:"textord",mode:"text",text:t[r]});var a={type:"text",mode:this.mode,body:e};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[a]}},e.parseAtom=function(t){var e,r,a=this.parseGroup("atom",!1,null,t);if("text"===this.mode)return a;for(;;){this.consumeSpaces();var n=this.fetch();if("\\limits"===n.text||"\\nolimits"===n.text){var i=Vt(a,"op");if(i){var s="\\limits"===n.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=Vt(a,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",n);var h="\\limits"===n.text;i.limits=h}this.consume()}else if("^"===n.text){if(e)throw new o("Double superscript",n);e=this.handleSupSubscript("superscript")}else if("_"===n.text){if(r)throw new o("Double subscript",n);r=this.handleSupSubscript("subscript")}else{if("'"!==n.text)break;if(e)throw new o("Double superscript",n);var l={type:"textord",mode:this.mode,text:"\\prime"},m=[l];for(this.consume();"'"===this.fetch().text;)m.push(l),this.consume();"^"===this.fetch().text&&m.push(this.handleSupSubscript("superscript")),e={type:"ordgroup",mode:this.mode,body:m}}}return e||r?{type:"supsub",mode:this.mode,base:a,sup:e,sub:r}:a},e.parseFunction=function(t,e,r){var a=this.fetch(),n=a.text,i=ia[n];if(!i)return null;if(this.consume(),null!=r&&i.greediness<=r)throw new o("Got function '"+n+"' with no arguments"+(e?" as "+e:""),a);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+n+"' in text mode",a);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+n+"' in math mode",a);var s=this.parseArguments(n,i),h=s.args,l=s.optArgs;return this.callFunction(n,h,l,a,t)},e.callFunction=function(t,e,r,a,n){var i={funcName:t,parser:this,token:a,breakOnTokenText:n},s=ia[t];if(s&&s.handler)return s.handler(i,e,r);throw new o("No function handler for "+t)},e.parseArguments=function(t,e){var r=e.numArgs+e.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=e.greediness,n=[],i=[],s=0;s<r;s++){var h=e.argTypes&&e.argTypes[s],l=s<e.numOptionalArgs,m=s>0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r<e;++r){var n=t[r],i=n.text;"-"===i&&"-"===t[r+1].text&&(r+1<e&&"-"===t[r+2].text?(t.splice(r,3,{type:"textord",mode:"text",loc:a.range(n,t[r+2]),text:"---"}),e-=2):(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:"--"}),e-=1)),"'"!==i&&"`"!==i||t[r+1].text!==i||(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:i+i}),e-=1)}},e.parseSymbol=function(){var t=this.fetch(),e=t.text;if(/^\\verb[^a-zA-Z]/.test(e)){this.consume();var r=e.slice(5),n="*"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new o("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:n}}Sa.hasOwnProperty(e[0])&&!j[this.mode][e[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+e[0]+'" used in math mode',t),e=Sa[e[0]]+e.substr(1));var i,s=sa.exec(e);if(s&&("i"===(e=e.substring(0,s.index))?e="\u0131":"j"===e&&(e="\u0237")),j[this.mode][e]){this.settings.strict&&"math"===this.mode&&"\xc7\xd0\xde\xe7\xfe".indexOf(e)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var p=s[0][u];if(!ka[p])throw new o("Unknown accent ' "+p+"'",t);var d=ka[p][this.mode];if(!d)throw new o("Accent "+p+" unsupported in "+this.mode+" mode",t);i={type:"accent",mode:this.mode,loc:a.range(t),label:d,isStretchy:!1,isShifty:!0,base:i}}return i},t}();Ma.endOfExpression=["}","\\endgroup","\\end","\\right","&"],Ma.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},Ma.SUPSUB_GREEDINESS=1;var za=function(t,e){if(!("string"==typeof t||t instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new Ma(t,e);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(r.gullet.macros.get("\\df@tag")){if(!e.displayMode)throw new o("\\tag works only in display equations");r.gullet.feed("\\df@tag"),a=[{type:"tag",mode:"text",body:a,tag:r.parse()}]}return a},Aa=function(t,e,r){e.textContent="";var a=Ba(t,r).toNode();e.appendChild(a)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Aa=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Ta=function(t,e,r){if(r.throwOnError||!(t instanceof o))throw t;var a=Dt.makeSpan(["katex-error"],[new E(e)]);return a.setAttribute("title",t.toString()),a.setAttribute("style","color:"+r.errorColor),a},Ba=function(t,e){var r=new u(e);try{var a=za(t,r);return Be(a,t,r)}catch(e){return Ta(e,t,r)}},Ca={version:"0.11.1",render:Aa,renderToString:function(t,e){return Ba(t,e).toMarkup()},ParseError:o,__parse:function(t,e){var r=new u(e);return za(t,r)},__renderToDomTree:Ba,__renderToHTMLTree:function(t,e){var r=new u(e);try{return function(t,e,r){var a=de(t,Ae(r)),n=Dt.makeSpan(["katex"],[a]);return Te(n,r)}(za(t,r),0,r)}catch(e){return Ta(e,t,r)}},__setFontMetrics:function(t,e){F[t]=e},__defineSymbol:$,__defineMacro:pa,__domTree:{Span:N,Anchor:I,SymbolNode:E,SvgNode:L,PathNode:H,LineNode:P}};e.default=Ca}]).default}); \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/katex/katex.mjs b/node_modules/mavon-editor/dist/katex/katex.mjs new file mode 100644 index 0000000..dc7eebb --- /dev/null +++ b/node_modules/mavon-editor/dist/katex/katex.mjs @@ -0,0 +1,17021 @@ +/** + * Lexing or parsing positional information for error reporting. + * This object is immutable. + */ +class SourceLocation { + // The + prefix indicates that these fields aren't writeable + // Lexer holding the input string. + // Start offset, zero-based inclusive. + // End offset, zero-based exclusive. + constructor(lexer, start, end) { + this.lexer = void 0; + this.start = void 0; + this.end = void 0; + this.lexer = lexer; + this.start = start; + this.end = end; + } + /** + * Merges two `SourceLocation`s from location providers, given they are + * provided in order of appearance. + * - Returns the first one's location if only the first is provided. + * - Returns a merged range of the first and the last if both are provided + * and their lexers match. + * - Otherwise, returns null. + */ + + + static range(first, second) { + if (!second) { + return first && first.loc; + } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) { + return null; + } else { + return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end); + } + } + +} + +/** + * Interface required to break circular dependency between Token, Lexer, and + * ParseError. + */ + +/** + * The resulting token returned from `lex`. + * + * It consists of the token text plus some position information. + * The position information is essentially a range in an input string, + * but instead of referencing the bare input string, we refer to the lexer. + * That way it is possible to attach extra metadata to the input string, + * like for example a file name or similar. + * + * The position information is optional, so it is OK to construct synthetic + * tokens if appropriate. Not providing available position information may + * lead to degraded error reporting, though. + */ +class Token { + constructor(text, // the text of this token + loc) { + this.text = void 0; + this.loc = void 0; + this.text = text; + this.loc = loc; + } + /** + * Given a pair of tokens (this and endToken), compute a `Token` encompassing + * the whole input range enclosed by these two. + */ + + + range(endToken, // last token of the range, inclusive + text) // the text of the newly constructed token + { + return new Token(text, SourceLocation.range(this, endToken)); + } + +} + +/** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + */ +class ParseError { + // Error position based on passed-in Token or ParseNode. + constructor(message, // The error message + token) // An object providing position information + { + this.position = void 0; + let error = "KaTeX parse error: " + message; + let start; + const loc = token && token.loc; + + if (loc && loc.start <= loc.end) { + // If we have the input and a position, make the error a bit fancier + // Get the input + const input = loc.lexer.input; // Prepend some information + + start = loc.start; + const end = loc.end; + + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } // Underline token in question using combining underscores + + + const underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); // Extract some context from the input and add it to the error + + let left; + + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + + let right; + + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + + error += left + underlined + right; + } // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + + + const self = new Error(error); + self.name = "ParseError"; // $FlowFixMe + + self.__proto__ = ParseError.prototype; // $FlowFixMe + + self.position = start; + return self; + } + +} // $FlowFixMe More hackery + + +ParseError.prototype.__proto__ = Error.prototype; + +/** + * This file contains a list of utility functions which are useful in other + * files. + */ + +/** + * Return whether an element is contained in a list + */ +const contains = function contains(list, elem) { + return list.indexOf(elem) !== -1; +}; +/** + * Provide a default value if a setting is undefined + * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022. + */ + + +const deflt = function deflt(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; +}; // hyphenate and escape adapted from Facebook's React under Apache 2 license + + +const uppercase = /([A-Z])/g; + +const hyphenate = function hyphenate(str) { + return str.replace(uppercase, "-$1").toLowerCase(); +}; + +const ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" +}; +const ESCAPE_REGEX = /[&><"']/g; +/** + * Escapes text to prevent scripting attacks. + */ + +function escape(text) { + return String(text).replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]); +} +/** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ + + +const getBaseElem = function getBaseElem(group) { + if (group.type === "ordgroup") { + if (group.body.length === 1) { + return getBaseElem(group.body[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.body.length === 1) { + return getBaseElem(group.body[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.body); + } else { + return group; + } +}; +/** + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. + */ + + +const isCharacterBox = function isCharacterBox(group) { + const baseElem = getBaseElem(group); // These are all they types of groups which hold single characters + + return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "atom"; +}; + +const assert = function assert(value) { + if (!value) { + throw new Error('Expected non-null, but got ' + String(value)); + } + + return value; +}; +/** + * Return the protocol of a URL, or "_relative" if the URL does not specify a + * protocol (and thus is relative). + */ + +const protocolFromUrl = function protocolFromUrl(url) { + const protocol = /^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(url); + return protocol != null ? protocol[1] : "_relative"; +}; +var utils = { + contains, + deflt, + escape, + hyphenate, + getBaseElem, + isCharacterBox, + protocolFromUrl +}; + +/* eslint no-console:0 */ + +/** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset as inline math + * (false, the default), meaning that the math starts in + * \textstyle and is placed in an inline-block); or as display + * math (true), meaning that the math starts in \displaystyle + * and is placed in a block with vertical margin. + */ +class Settings { + constructor(options) { + this.displayMode = void 0; + this.output = void 0; + this.leqno = void 0; + this.fleqn = void 0; + this.throwOnError = void 0; + this.errorColor = void 0; + this.macros = void 0; + this.minRuleThickness = void 0; + this.colorIsTextColor = void 0; + this.strict = void 0; + this.trust = void 0; + this.maxSize = void 0; + this.maxExpand = void 0; + // allow null options + options = options || {}; + this.displayMode = utils.deflt(options.displayMode, false); + this.output = utils.deflt(options.output, "htmlAndMathml"); + this.leqno = utils.deflt(options.leqno, false); + this.fleqn = utils.deflt(options.fleqn, false); + this.throwOnError = utils.deflt(options.throwOnError, true); + this.errorColor = utils.deflt(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; + this.minRuleThickness = Math.max(0, utils.deflt(options.minRuleThickness, 0)); + this.colorIsTextColor = utils.deflt(options.colorIsTextColor, false); + this.strict = utils.deflt(options.strict, "warn"); + this.trust = utils.deflt(options.trust, false); + this.maxSize = Math.max(0, utils.deflt(options.maxSize, Infinity)); + this.maxExpand = Math.max(0, utils.deflt(options.maxExpand, 1000)); + } + /** + * Report nonstrict (non-LaTeX-compatible) input. + * Can safely not be called if `this.strict` is false in JavaScript. + */ + + + reportNonstrict(errorCode, errorMsg, token) { + let strict = this.strict; + + if (typeof strict === "function") { + // Allow return value of strict function to be boolean or string + // (or null/undefined, meaning no further processing). + strict = strict(errorCode, errorMsg, token); + } + + if (!strict || strict === "ignore") { + return; + } else if (strict === true || strict === "error") { + throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': " + `${errorMsg} [${errorCode}]`, token); + } else if (strict === "warn") { + typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + `${errorMsg} [${errorCode}]`); + } else { + // won't happen in type-safe code + typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + `unrecognized '${strict}': ${errorMsg} [${errorCode}]`); + } + } + /** + * Check whether to apply strict (LaTeX-adhering) behavior for unusual + * input (like `\\`). Unlike `nonstrict`, will not throw an error; + * instead, "error" translates to a return value of `true`, while "ignore" + * translates to a return value of `false`. May still print a warning: + * "warn" prints a warning and returns `false`. + * This is for the second category of `errorCode`s listed in the README. + */ + + + useStrictBehavior(errorCode, errorMsg, token) { + let strict = this.strict; + + if (typeof strict === "function") { + // Allow return value of strict function to be boolean or string + // (or null/undefined, meaning no further processing). + // But catch any exceptions thrown by function, treating them + // like "error". + try { + strict = strict(errorCode, errorMsg, token); + } catch (error) { + strict = "error"; + } + } + + if (!strict || strict === "ignore") { + return false; + } else if (strict === true || strict === "error") { + return true; + } else if (strict === "warn") { + typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + `${errorMsg} [${errorCode}]`); + return false; + } else { + // won't happen in type-safe code + typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + `unrecognized '${strict}': ${errorMsg} [${errorCode}]`); + return false; + } + } + /** + * Check whether to test potentially dangerous input, and return + * `true` (trusted) or `false` (untrusted). The sole argument `context` + * should be an object with `command` field specifying the relevant LaTeX + * command (as a string starting with `\`), and any other arguments, etc. + * If `context` has a `url` field, a `protocol` field will automatically + * get added by this function (changing the specified object). + */ + + + isTrusted(context) { + if (context.url && !context.protocol) { + context.protocol = utils.protocolFromUrl(context.url); + } + + const trust = typeof this.trust === "function" ? this.trust(context) : this.trust; + return Boolean(trust); + } + +} + +/** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + +/** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), and a cramped flag. + */ +class Style { + constructor(id, size, cramped) { + this.id = void 0; + this.size = void 0; + this.cramped = void 0; + this.id = id; + this.size = size; + this.cramped = cramped; + } + /** + * Get the style of a superscript given a base in the current style. + */ + + + sup() { + return styles[sup[this.id]]; + } + /** + * Get the style of a subscript given a base in the current style. + */ + + + sub() { + return styles[sub[this.id]]; + } + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + + + fracNum() { + return styles[fracNum[this.id]]; + } + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + + + fracDen() { + return styles[fracDen[this.id]]; + } + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + + + cramp() { + return styles[cramp[this.id]]; + } + /** + * Get a text or display version of this style. + */ + + + text() { + return styles[text[this.id]]; + } + /** + * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + + + isTight() { + return this.size >= 2; + } + +} // Export an interface for type checking, but don't expose the implementation. +// This way, no more styles can be generated. + + +// IDs of the different styles +const D = 0; +const Dc = 1; +const T = 2; +const Tc = 3; +const S = 4; +const Sc = 5; +const SS = 6; +const SSc = 7; // Instances of the different styles + +const styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; // Lookup tables for switching from one style to another + +const sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; +const sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; +const fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; +const fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; +const cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; +const text = [D, Dc, T, Tc, T, Tc, T, Tc]; // We only export some of the styles. + +var Style$1 = { + DISPLAY: styles[D], + TEXT: styles[T], + SCRIPT: styles[S], + SCRIPTSCRIPT: styles[SS] +}; + +/* + * This file defines the Unicode scripts and script families that we + * support. To add new scripts or families, just add a new entry to the + * scriptData array below. Adding scripts to the scriptData array allows + * characters from that script to appear in \text{} environments. + */ + +/** + * Each script or script family has a name and an array of blocks. + * Each block is an array of two numbers which specify the start and + * end points (inclusive) of a block of Unicode codepoints. + */ + +/** + * Unicode block data for the families of scripts we support in \text{}. + * Scripts only need to appear here if they do not have font metrics. + */ +const scriptData = [{ + // Latin characters beyond the Latin-1 characters we have metrics for. + // Needed for Czech, Hungarian and Turkish text, for example. + name: 'latin', + blocks: [[0x0100, 0x024f], // Latin Extended-A and Latin Extended-B + [0x0300, 0x036f]] +}, { + // The Cyrillic script used by Russian and related languages. + // A Cyrillic subset used to be supported as explicitly defined + // symbols in symbols.js + name: 'cyrillic', + blocks: [[0x0400, 0x04ff]] +}, { + // The Brahmic scripts of South and Southeast Asia + // Devanagari (0900–097F) + // Bengali (0980–09FF) + // Gurmukhi (0A00–0A7F) + // Gujarati (0A80–0AFF) + // Oriya (0B00–0B7F) + // Tamil (0B80–0BFF) + // Telugu (0C00–0C7F) + // Kannada (0C80–0CFF) + // Malayalam (0D00–0D7F) + // Sinhala (0D80–0DFF) + // Thai (0E00–0E7F) + // Lao (0E80–0EFF) + // Tibetan (0F00–0FFF) + // Myanmar (1000–109F) + name: 'brahmic', + blocks: [[0x0900, 0x109F]] +}, { + name: 'georgian', + blocks: [[0x10A0, 0x10ff]] +}, { + // Chinese and Japanese. + // The "k" in cjk is for Korean, but we've separated Korean out + name: "cjk", + blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana + [0x4E00, 0x9FAF], // CJK ideograms + [0xFF00, 0xFF60]] +}, { + // Korean + name: 'hangul', + blocks: [[0xAC00, 0xD7AF]] +}]; +/** + * Given a codepoint, return the name of the script or script family + * it is from, or null if it is not part of a known block + */ + +function scriptFromCodepoint(codepoint) { + for (let i = 0; i < scriptData.length; i++) { + const script = scriptData[i]; + + for (let i = 0; i < script.blocks.length; i++) { + const block = script.blocks[i]; + + if (codepoint >= block[0] && codepoint <= block[1]) { + return script.name; + } + } + } + + return null; +} +/** + * A flattened version of all the supported blocks in a single array. + * This is an optimization to make supportedCodepoint() fast. + */ + +const allBlocks = []; +scriptData.forEach(s => s.blocks.forEach(b => allBlocks.push(...b))); +/** + * Given a codepoint, return true if it falls within one of the + * scripts or script families defined above and false otherwise. + * + * Micro benchmarks shows that this is faster than + * /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test() + * in Firefox, Chrome and Node. + */ + +function supportedCodepoint(codepoint) { + for (let i = 0; i < allBlocks.length; i += 2) { + if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) { + return true; + } + } + + return false; +} + +/** + * This file provides support to domTree.js and delimiter.js. + * It's a storehouse of path geometry for SVG images. + */ +// In all paths below, the viewBox-to-em scale is 1000:1. +const hLinePad = 80; // padding above a sqrt viniculum. Prevents image cropping. +// The viniculum of a \sqrt can be made thicker by a KaTeX rendering option. +// Think of variable extraViniculum as two detours in the SVG path. +// The detour begins at the lower left of the area labeled extraViniculum below. +// The detour proceeds one extraViniculum distance up and slightly to the right, +// displacing the radiused corner between surd and viniculum. The radius is +// traversed as usual, then the detour resumes. It goes right, to the end of +// the very long viniculumn, then down one extraViniculum distance, +// after which it resumes regular path geometry for the radical. + +/* viniculum + / + /▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒←extraViniculum + / █████████████████████←0.04em (40 unit) std viniculum thickness + / / + / / + / /\ + / / surd +*/ + +const sqrtMain = function sqrtMain(extraViniculum, hLinePad) { + // sqrtMain path geometry is from glyph U221A in the font KaTeX Main + return `M95,${622 + extraViniculum + hLinePad} +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l${extraViniculum / 2.075} -${extraViniculum} +c5.3,-9.3,12,-14,20,-14 +H400000v${40 + extraViniculum}H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M${834 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`; +}; + +const sqrtSize1 = function sqrtSize1(extraViniculum, hLinePad) { + // size1 is from glyph U221A in the font KaTeX_Size1-Regular + return `M263,${601 + extraViniculum + hLinePad}c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l${extraViniculum / 2.084} -${extraViniculum} +c4.7,-7.3,11,-11,19,-11 +H40000v${40 + extraViniculum}H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`; +}; + +const sqrtSize2 = function sqrtSize2(extraViniculum, hLinePad) { + // size2 is from glyph U221A in the font KaTeX_Size2-Regular + return `M983 ${10 + extraViniculum + hLinePad} +l${extraViniculum / 3.13} -${extraViniculum} +c4,-6.7,10,-10,18,-10 H400000v${40 + extraViniculum} +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`; +}; + +const sqrtSize3 = function sqrtSize3(extraViniculum, hLinePad) { + // size3 is from glyph U221A in the font KaTeX_Size3-Regular + return `M424,${2398 + extraViniculum + hLinePad} +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l${extraViniculum / 4.223} -${extraViniculum}c4,-6.7,10,-10,18,-10 H400000 +v${40 + extraViniculum}H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M${1001 + extraViniculum} ${hLinePad} +h400000v${40 + extraViniculum}h-400000z`; +}; + +const sqrtSize4 = function sqrtSize4(extraViniculum, hLinePad) { + // size4 is from glyph U221A in the font KaTeX_Size4-Regular + return `M473,${2713 + extraViniculum + hLinePad} +c339.3,-1799.3,509.3,-2700,510,-2702 l${extraViniculum / 5.298} -${extraViniculum} +c3.3,-7.3,9.3,-11,18,-11 H400000v${40 + extraViniculum}H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}H1017.7z`; +}; + +const sqrtTall = function sqrtTall(extraViniculum, hLinePad, viewBoxHeight) { + // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular + // One path edge has a variable length. It runs vertically from the viniculumn + // to a point near (14 units) the bottom of the surd. The viniculum + // is normally 40 units thick. So the length of the line in question is: + const vertSegment = viewBoxHeight - 54 - hLinePad - extraViniculum; + return `M702 ${extraViniculum + hLinePad}H400000${40 + extraViniculum} +H742v${vertSegment}l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 ${hLinePad}H400000v${40 + extraViniculum}H742z`; +}; + +const sqrtPath = function sqrtPath(size, extraViniculum, viewBoxHeight) { + extraViniculum = 1000 * extraViniculum; // Convert from document ems to viewBox. + + let path = ""; + + switch (size) { + case "sqrtMain": + path = sqrtMain(extraViniculum, hLinePad); + break; + + case "sqrtSize1": + path = sqrtSize1(extraViniculum, hLinePad); + break; + + case "sqrtSize2": + path = sqrtSize2(extraViniculum, hLinePad); + break; + + case "sqrtSize3": + path = sqrtSize3(extraViniculum, hLinePad); + break; + + case "sqrtSize4": + path = sqrtSize4(extraViniculum, hLinePad); + break; + + case "sqrtTall": + path = sqrtTall(extraViniculum, hLinePad, viewBoxHeight); + } + + return path; +}; +const path = { + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + doubleleftarrow: `M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`, + // doublerightarrow is from glyph U+21D2 in font KaTeX Main + doublerightarrow: `M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`, + // leftarrow is from glyph U+2190 in font KaTeX Main + leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`, + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`, + leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`, + // overgroup is from the MnSymbol package (public domain) + leftgroup: `M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`, + leftgroupunder: `M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`, + // Harpoons are from glyph U+21BD in font KaTeX Main + leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`, + leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`, + leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`, + leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`, + // hook is from glyph U+21A9 in font KaTeX Main + lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`, + leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`, + leftmapsto: `M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`, + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`, + longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`, + midbrace: `M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`, + midbraceunder: `M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`, + oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`, + oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`, + oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`, + oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`, + rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`, + rightbrace: `M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`, + rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`, + rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`, + rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`, + rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`, + rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`, + rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`, + rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`, + righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`, + rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`, + rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`, + // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular + twoheadleftarrow: `M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`, + twoheadrightarrow: `M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`, + // tilde1 is a modified version of a glyph from the MnSymbol package + tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`, + // ditto tilde2, tilde3, & tilde4 + tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`, + tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`, + tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`, + // vec is from glyph U+20D7 in font KaTeX Main + vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`, + // widehat1 is a modified version of a glyph from the MnSymbol package + widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`, + // ditto widehat2, widehat3, & widehat4 + widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + // widecheck paths are all inverted versions of widehat + widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`, + widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + // The next ten paths support reaction arrows from the mhchem package. + // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX + // baraboveleftarrow is mostly from from glyph U+2190 in font KaTeX Main + baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`, + // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main + rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`, + // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end. + // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em + baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`, + rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`, + shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`, + shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z` +}; + +/** + * This node represents a document fragment, which contains elements, but when + * placed into the DOM doesn't have any representation itself. It only contains + * children and doesn't have any DOM node properties. + */ +class DocumentFragment { + // HtmlDomNode + // Never used; needed for satisfying interface. + constructor(children) { + this.children = void 0; + this.classes = void 0; + this.height = void 0; + this.depth = void 0; + this.maxFontSize = void 0; + this.style = void 0; + this.children = children; + this.classes = []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + } + + hasClass(className) { + return utils.contains(this.classes, className); + } + /** Convert the fragment into a node. */ + + + toNode() { + const frag = document.createDocumentFragment(); + + for (let i = 0; i < this.children.length; i++) { + frag.appendChild(this.children[i].toNode()); + } + + return frag; + } + /** Convert the fragment into HTML markup. */ + + + toMarkup() { + let markup = ""; // Simply concatenate the markup for the children together. + + for (let i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + return markup; + } + /** + * Converts the math node into a string, similar to innerText. Applies to + * MathDomNode's only. + */ + + + toText() { + // To avoid this, we would subclass documentFragment separately for + // MathML, but polyfills for subclassing is expensive per PR 1469. + // $FlowFixMe: Only works for ChildType = MathDomNode. + const toText = child => child.toText(); + + return this.children.map(toText).join(""); + } + +} + +/** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + * + * TODO: refactor `span` and `anchor` into common superclass when + * target environments support class inheritance + */ + +/** + * Create an HTML className based on a list of classes. In addition to joining + * with spaces, we also remove empty classes. + */ +const createClass = function createClass(classes) { + return classes.filter(cls => cls).join(" "); +}; + +const initNode = function initNode(classes, options, style) { + this.classes = classes || []; + this.attributes = {}; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = style || {}; + + if (options) { + if (options.style.isTight()) { + this.classes.push("mtight"); + } + + const color = options.getColor(); + + if (color) { + this.style.color = color; + } + } +}; +/** + * Convert into an HTML node + */ + + +const toNode = function toNode(tagName) { + const node = document.createElement(tagName); // Apply the class + + node.className = createClass(this.classes); // Apply inline styles + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + // $FlowFixMe Flow doesn't seem to understand span.style's type. + node.style[style] = this.style[style]; + } + } // Apply attributes + + + for (const attr in this.attributes) { + if (this.attributes.hasOwnProperty(attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } // Append the children, also as HTML nodes + + + for (let i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + + return node; +}; +/** + * Convert into an HTML markup string + */ + + +const toMarkup = function toMarkup(tagName) { + let markup = `<${tagName}`; // Add the class + + if (this.classes.length) { + markup += ` class="${utils.escape(createClass(this.classes))}"`; + } + + let styles = ""; // Add the styles, after hyphenation + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += `${utils.hyphenate(style)}:${this.style[style]};`; + } + } + + if (styles) { + markup += ` style="${utils.escape(styles)}"`; + } // Add the attributes + + + for (const attr in this.attributes) { + if (this.attributes.hasOwnProperty(attr)) { + markup += ` ${attr}="${utils.escape(this.attributes[attr])}"`; + } + } + + markup += ">"; // Add the markup of the children, also as markup + + for (let i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += `</${tagName}>`; + return markup; +}; // Making the type below exact with all optional fields doesn't work due to +// - https://github.com/facebook/flow/issues/4582 +// - https://github.com/facebook/flow/issues/5688 +// However, since *all* fields are optional, $Shape<> works as suggested in 5688 +// above. +// This type does not include all CSS properties. Additional properties should +// be added as needed. + + +/** + * This node represents a span node, with a className, a list of children, and + * an inline style. It also contains information about its height, depth, and + * maxFontSize. + * + * Represents two types with different uses: SvgSpan to wrap an SVG and DomSpan + * otherwise. This typesafety is important when HTML builders access a span's + * children. + */ +class Span { + constructor(classes, children, options, style) { + this.children = void 0; + this.attributes = void 0; + this.classes = void 0; + this.height = void 0; + this.depth = void 0; + this.width = void 0; + this.maxFontSize = void 0; + this.style = void 0; + initNode.call(this, classes, options, style); + this.children = children || []; + } + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not + * all browsers support attributes the same, and having too many custom + * attributes is probably bad. + */ + + + setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + + hasClass(className) { + return utils.contains(this.classes, className); + } + + toNode() { + return toNode.call(this, "span"); + } + + toMarkup() { + return toMarkup.call(this, "span"); + } + +} +/** + * This node represents an anchor (<a>) element with a hyperlink. See `span` + * for further details. + */ + +class Anchor { + constructor(href, classes, children, options) { + this.children = void 0; + this.attributes = void 0; + this.classes = void 0; + this.height = void 0; + this.depth = void 0; + this.maxFontSize = void 0; + this.style = void 0; + initNode.call(this, classes, options); + this.children = children || []; + this.setAttribute('href', href); + } + + setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + + hasClass(className) { + return utils.contains(this.classes, className); + } + + toNode() { + return toNode.call(this, "a"); + } + + toMarkup() { + return toMarkup.call(this, "a"); + } + +} +/** + * This node represents an image embed (<img>) element. + */ + +class Img { + constructor(src, alt, style) { + this.src = void 0; + this.alt = void 0; + this.classes = void 0; + this.height = void 0; + this.depth = void 0; + this.maxFontSize = void 0; + this.style = void 0; + this.alt = alt; + this.src = src; + this.classes = ["mord"]; + this.style = style; + } + + hasClass(className) { + return utils.contains(this.classes, className); + } + + toNode() { + const node = document.createElement("img"); + node.src = this.src; + node.alt = this.alt; + node.className = "mord"; // Apply inline styles + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + // $FlowFixMe + node.style[style] = this.style[style]; + } + } + + return node; + } + + toMarkup() { + let markup = `<img src='${this.src} 'alt='${this.alt}' `; // Add the styles, after hyphenation + + let styles = ""; + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += `${utils.hyphenate(style)}:${this.style[style]};`; + } + } + + if (styles) { + markup += ` style="${utils.escape(styles)}"`; + } + + markup += "'/>"; + return markup; + } + +} +const iCombinations = { + 'î': '\u0131\u0302', + 'ï': '\u0131\u0308', + 'í': '\u0131\u0301', + // 'ī': '\u0131\u0304', // enable when we add Extended Latin + 'ì': '\u0131\u0300' +}; +/** + * A symbol node contains information about a single symbol. It either renders + * to a single text node, or a span with a single text node in it, depending on + * whether it has CSS classes, styles, or needs italic correction. + */ + +class SymbolNode { + constructor(text, height, depth, italic, skew, width, classes, style) { + this.text = void 0; + this.height = void 0; + this.depth = void 0; + this.italic = void 0; + this.skew = void 0; + this.width = void 0; + this.maxFontSize = void 0; + this.classes = void 0; + this.style = void 0; + this.text = text; + this.height = height || 0; + this.depth = depth || 0; + this.italic = italic || 0; + this.skew = skew || 0; + this.width = width || 0; + this.classes = classes || []; + this.style = style || {}; + this.maxFontSize = 0; // Mark text from non-Latin scripts with specific classes so that we + // can specify which fonts to use. This allows us to render these + // characters with a serif font in situations where the browser would + // either default to a sans serif or render a placeholder character. + // We use CSS class names like cjk_fallback, hangul_fallback and + // brahmic_fallback. See ./unicodeScripts.js for the set of possible + // script names + + const script = scriptFromCodepoint(this.text.charCodeAt(0)); + + if (script) { + this.classes.push(script + "_fallback"); + } + + if (/[îïíì]/.test(this.text)) { + // add ī when we add Extended Latin + this.text = iCombinations[this.text]; + } + } + + hasClass(className) { + return utils.contains(this.classes, className); + } + /** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ + + + toNode() { + const node = document.createTextNode(this.text); + let span = null; + + if (this.italic > 0) { + span = document.createElement("span"); + span.style.marginRight = this.italic + "em"; + } + + if (this.classes.length > 0) { + span = span || document.createElement("span"); + span.className = createClass(this.classes); + } + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + span = span || document.createElement("span"); // $FlowFixMe Flow doesn't seem to understand span.style's type. + + span.style[style] = this.style[style]; + } + } + + if (span) { + span.appendChild(node); + return span; + } else { + return node; + } + } + /** + * Creates markup for a symbol node. + */ + + + toMarkup() { + // TODO(alpert): More duplication than I'd like from + // span.prototype.toMarkup and symbolNode.prototype.toNode... + let needsSpan = false; + let markup = "<span"; + + if (this.classes.length) { + needsSpan = true; + markup += " class=\""; + markup += utils.escape(createClass(this.classes)); + markup += "\""; + } + + let styles = ""; + + if (this.italic > 0) { + styles += "margin-right:" + this.italic + "em;"; + } + + for (const style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += utils.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + needsSpan = true; + markup += " style=\"" + utils.escape(styles) + "\""; + } + + const escaped = utils.escape(this.text); + + if (needsSpan) { + markup += ">"; + markup += escaped; + markup += "</span>"; + return markup; + } else { + return escaped; + } + } + +} +/** + * SVG nodes are used to render stretchy wide elements. + */ + +class SvgNode { + constructor(children, attributes) { + this.children = void 0; + this.attributes = void 0; + this.children = children || []; + this.attributes = attributes || {}; + } + + toNode() { + const svgNS = "http://www.w3.org/2000/svg"; + const node = document.createElementNS(svgNS, "svg"); // Apply attributes + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + for (let i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + + return node; + } + + toMarkup() { + let markup = "<svg"; // Apply attributes + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += ` ${attr}='${this.attributes[attr]}'`; + } + } + + markup += ">"; + + for (let i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</svg>"; + return markup; + } + +} +class PathNode { + constructor(pathName, alternate) { + this.pathName = void 0; + this.alternate = void 0; + this.pathName = pathName; + this.alternate = alternate; // Used only for \sqrt + } + + toNode() { + const svgNS = "http://www.w3.org/2000/svg"; + const node = document.createElementNS(svgNS, "path"); + + if (this.alternate) { + node.setAttribute("d", this.alternate); + } else { + node.setAttribute("d", path[this.pathName]); + } + + return node; + } + + toMarkup() { + if (this.alternate) { + return `<path d='${this.alternate}'/>`; + } else { + return `<path d='${path[this.pathName]}'/>`; + } + } + +} +class LineNode { + constructor(attributes) { + this.attributes = void 0; + this.attributes = attributes || {}; + } + + toNode() { + const svgNS = "http://www.w3.org/2000/svg"; + const node = document.createElementNS(svgNS, "line"); // Apply attributes + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + return node; + } + + toMarkup() { + let markup = "<line"; + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += ` ${attr}='${this.attributes[attr]}'`; + } + } + + markup += "/>"; + return markup; + } + +} +function assertSymbolDomNode(group) { + if (group instanceof SymbolNode) { + return group; + } else { + throw new Error(`Expected symbolNode but got ${String(group)}.`); + } +} +function assertSpan(group) { + if (group instanceof Span) { + return group; + } else { + throw new Error(`Expected span<HtmlDomNode> but got ${String(group)}.`); + } +} + +// This file is GENERATED by buildMetrics.sh. DO NOT MODIFY. +var metricMap = { + "AMS-Regular": { + "65": [0, 0.68889, 0, 0, 0.72222], + "66": [0, 0.68889, 0, 0, 0.66667], + "67": [0, 0.68889, 0, 0, 0.72222], + "68": [0, 0.68889, 0, 0, 0.72222], + "69": [0, 0.68889, 0, 0, 0.66667], + "70": [0, 0.68889, 0, 0, 0.61111], + "71": [0, 0.68889, 0, 0, 0.77778], + "72": [0, 0.68889, 0, 0, 0.77778], + "73": [0, 0.68889, 0, 0, 0.38889], + "74": [0.16667, 0.68889, 0, 0, 0.5], + "75": [0, 0.68889, 0, 0, 0.77778], + "76": [0, 0.68889, 0, 0, 0.66667], + "77": [0, 0.68889, 0, 0, 0.94445], + "78": [0, 0.68889, 0, 0, 0.72222], + "79": [0.16667, 0.68889, 0, 0, 0.77778], + "80": [0, 0.68889, 0, 0, 0.61111], + "81": [0.16667, 0.68889, 0, 0, 0.77778], + "82": [0, 0.68889, 0, 0, 0.72222], + "83": [0, 0.68889, 0, 0, 0.55556], + "84": [0, 0.68889, 0, 0, 0.66667], + "85": [0, 0.68889, 0, 0, 0.72222], + "86": [0, 0.68889, 0, 0, 0.72222], + "87": [0, 0.68889, 0, 0, 1.0], + "88": [0, 0.68889, 0, 0, 0.72222], + "89": [0, 0.68889, 0, 0, 0.72222], + "90": [0, 0.68889, 0, 0, 0.66667], + "107": [0, 0.68889, 0, 0, 0.55556], + "165": [0, 0.675, 0.025, 0, 0.75], + "174": [0.15559, 0.69224, 0, 0, 0.94666], + "240": [0, 0.68889, 0, 0, 0.55556], + "295": [0, 0.68889, 0, 0, 0.54028], + "710": [0, 0.825, 0, 0, 2.33334], + "732": [0, 0.9, 0, 0, 2.33334], + "770": [0, 0.825, 0, 0, 2.33334], + "771": [0, 0.9, 0, 0, 2.33334], + "989": [0.08167, 0.58167, 0, 0, 0.77778], + "1008": [0, 0.43056, 0.04028, 0, 0.66667], + "8245": [0, 0.54986, 0, 0, 0.275], + "8463": [0, 0.68889, 0, 0, 0.54028], + "8487": [0, 0.68889, 0, 0, 0.72222], + "8498": [0, 0.68889, 0, 0, 0.55556], + "8502": [0, 0.68889, 0, 0, 0.66667], + "8503": [0, 0.68889, 0, 0, 0.44445], + "8504": [0, 0.68889, 0, 0, 0.66667], + "8513": [0, 0.68889, 0, 0, 0.63889], + "8592": [-0.03598, 0.46402, 0, 0, 0.5], + "8594": [-0.03598, 0.46402, 0, 0, 0.5], + "8602": [-0.13313, 0.36687, 0, 0, 1.0], + "8603": [-0.13313, 0.36687, 0, 0, 1.0], + "8606": [0.01354, 0.52239, 0, 0, 1.0], + "8608": [0.01354, 0.52239, 0, 0, 1.0], + "8610": [0.01354, 0.52239, 0, 0, 1.11111], + "8611": [0.01354, 0.52239, 0, 0, 1.11111], + "8619": [0, 0.54986, 0, 0, 1.0], + "8620": [0, 0.54986, 0, 0, 1.0], + "8621": [-0.13313, 0.37788, 0, 0, 1.38889], + "8622": [-0.13313, 0.36687, 0, 0, 1.0], + "8624": [0, 0.69224, 0, 0, 0.5], + "8625": [0, 0.69224, 0, 0, 0.5], + "8630": [0, 0.43056, 0, 0, 1.0], + "8631": [0, 0.43056, 0, 0, 1.0], + "8634": [0.08198, 0.58198, 0, 0, 0.77778], + "8635": [0.08198, 0.58198, 0, 0, 0.77778], + "8638": [0.19444, 0.69224, 0, 0, 0.41667], + "8639": [0.19444, 0.69224, 0, 0, 0.41667], + "8642": [0.19444, 0.69224, 0, 0, 0.41667], + "8643": [0.19444, 0.69224, 0, 0, 0.41667], + "8644": [0.1808, 0.675, 0, 0, 1.0], + "8646": [0.1808, 0.675, 0, 0, 1.0], + "8647": [0.1808, 0.675, 0, 0, 1.0], + "8648": [0.19444, 0.69224, 0, 0, 0.83334], + "8649": [0.1808, 0.675, 0, 0, 1.0], + "8650": [0.19444, 0.69224, 0, 0, 0.83334], + "8651": [0.01354, 0.52239, 0, 0, 1.0], + "8652": [0.01354, 0.52239, 0, 0, 1.0], + "8653": [-0.13313, 0.36687, 0, 0, 1.0], + "8654": [-0.13313, 0.36687, 0, 0, 1.0], + "8655": [-0.13313, 0.36687, 0, 0, 1.0], + "8666": [0.13667, 0.63667, 0, 0, 1.0], + "8667": [0.13667, 0.63667, 0, 0, 1.0], + "8669": [-0.13313, 0.37788, 0, 0, 1.0], + "8672": [-0.064, 0.437, 0, 0, 1.334], + "8674": [-0.064, 0.437, 0, 0, 1.334], + "8705": [0, 0.825, 0, 0, 0.5], + "8708": [0, 0.68889, 0, 0, 0.55556], + "8709": [0.08167, 0.58167, 0, 0, 0.77778], + "8717": [0, 0.43056, 0, 0, 0.42917], + "8722": [-0.03598, 0.46402, 0, 0, 0.5], + "8724": [0.08198, 0.69224, 0, 0, 0.77778], + "8726": [0.08167, 0.58167, 0, 0, 0.77778], + "8733": [0, 0.69224, 0, 0, 0.77778], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8737": [0, 0.69224, 0, 0, 0.72222], + "8738": [0.03517, 0.52239, 0, 0, 0.72222], + "8739": [0.08167, 0.58167, 0, 0, 0.22222], + "8740": [0.25142, 0.74111, 0, 0, 0.27778], + "8741": [0.08167, 0.58167, 0, 0, 0.38889], + "8742": [0.25142, 0.74111, 0, 0, 0.5], + "8756": [0, 0.69224, 0, 0, 0.66667], + "8757": [0, 0.69224, 0, 0, 0.66667], + "8764": [-0.13313, 0.36687, 0, 0, 0.77778], + "8765": [-0.13313, 0.37788, 0, 0, 0.77778], + "8769": [-0.13313, 0.36687, 0, 0, 0.77778], + "8770": [-0.03625, 0.46375, 0, 0, 0.77778], + "8774": [0.30274, 0.79383, 0, 0, 0.77778], + "8776": [-0.01688, 0.48312, 0, 0, 0.77778], + "8778": [0.08167, 0.58167, 0, 0, 0.77778], + "8782": [0.06062, 0.54986, 0, 0, 0.77778], + "8783": [0.06062, 0.54986, 0, 0, 0.77778], + "8785": [0.08198, 0.58198, 0, 0, 0.77778], + "8786": [0.08198, 0.58198, 0, 0, 0.77778], + "8787": [0.08198, 0.58198, 0, 0, 0.77778], + "8790": [0, 0.69224, 0, 0, 0.77778], + "8791": [0.22958, 0.72958, 0, 0, 0.77778], + "8796": [0.08198, 0.91667, 0, 0, 0.77778], + "8806": [0.25583, 0.75583, 0, 0, 0.77778], + "8807": [0.25583, 0.75583, 0, 0, 0.77778], + "8808": [0.25142, 0.75726, 0, 0, 0.77778], + "8809": [0.25142, 0.75726, 0, 0, 0.77778], + "8812": [0.25583, 0.75583, 0, 0, 0.5], + "8814": [0.20576, 0.70576, 0, 0, 0.77778], + "8815": [0.20576, 0.70576, 0, 0, 0.77778], + "8816": [0.30274, 0.79383, 0, 0, 0.77778], + "8817": [0.30274, 0.79383, 0, 0, 0.77778], + "8818": [0.22958, 0.72958, 0, 0, 0.77778], + "8819": [0.22958, 0.72958, 0, 0, 0.77778], + "8822": [0.1808, 0.675, 0, 0, 0.77778], + "8823": [0.1808, 0.675, 0, 0, 0.77778], + "8828": [0.13667, 0.63667, 0, 0, 0.77778], + "8829": [0.13667, 0.63667, 0, 0, 0.77778], + "8830": [0.22958, 0.72958, 0, 0, 0.77778], + "8831": [0.22958, 0.72958, 0, 0, 0.77778], + "8832": [0.20576, 0.70576, 0, 0, 0.77778], + "8833": [0.20576, 0.70576, 0, 0, 0.77778], + "8840": [0.30274, 0.79383, 0, 0, 0.77778], + "8841": [0.30274, 0.79383, 0, 0, 0.77778], + "8842": [0.13597, 0.63597, 0, 0, 0.77778], + "8843": [0.13597, 0.63597, 0, 0, 0.77778], + "8847": [0.03517, 0.54986, 0, 0, 0.77778], + "8848": [0.03517, 0.54986, 0, 0, 0.77778], + "8858": [0.08198, 0.58198, 0, 0, 0.77778], + "8859": [0.08198, 0.58198, 0, 0, 0.77778], + "8861": [0.08198, 0.58198, 0, 0, 0.77778], + "8862": [0, 0.675, 0, 0, 0.77778], + "8863": [0, 0.675, 0, 0, 0.77778], + "8864": [0, 0.675, 0, 0, 0.77778], + "8865": [0, 0.675, 0, 0, 0.77778], + "8872": [0, 0.69224, 0, 0, 0.61111], + "8873": [0, 0.69224, 0, 0, 0.72222], + "8874": [0, 0.69224, 0, 0, 0.88889], + "8876": [0, 0.68889, 0, 0, 0.61111], + "8877": [0, 0.68889, 0, 0, 0.61111], + "8878": [0, 0.68889, 0, 0, 0.72222], + "8879": [0, 0.68889, 0, 0, 0.72222], + "8882": [0.03517, 0.54986, 0, 0, 0.77778], + "8883": [0.03517, 0.54986, 0, 0, 0.77778], + "8884": [0.13667, 0.63667, 0, 0, 0.77778], + "8885": [0.13667, 0.63667, 0, 0, 0.77778], + "8888": [0, 0.54986, 0, 0, 1.11111], + "8890": [0.19444, 0.43056, 0, 0, 0.55556], + "8891": [0.19444, 0.69224, 0, 0, 0.61111], + "8892": [0.19444, 0.69224, 0, 0, 0.61111], + "8901": [0, 0.54986, 0, 0, 0.27778], + "8903": [0.08167, 0.58167, 0, 0, 0.77778], + "8905": [0.08167, 0.58167, 0, 0, 0.77778], + "8906": [0.08167, 0.58167, 0, 0, 0.77778], + "8907": [0, 0.69224, 0, 0, 0.77778], + "8908": [0, 0.69224, 0, 0, 0.77778], + "8909": [-0.03598, 0.46402, 0, 0, 0.77778], + "8910": [0, 0.54986, 0, 0, 0.76042], + "8911": [0, 0.54986, 0, 0, 0.76042], + "8912": [0.03517, 0.54986, 0, 0, 0.77778], + "8913": [0.03517, 0.54986, 0, 0, 0.77778], + "8914": [0, 0.54986, 0, 0, 0.66667], + "8915": [0, 0.54986, 0, 0, 0.66667], + "8916": [0, 0.69224, 0, 0, 0.66667], + "8918": [0.0391, 0.5391, 0, 0, 0.77778], + "8919": [0.0391, 0.5391, 0, 0, 0.77778], + "8920": [0.03517, 0.54986, 0, 0, 1.33334], + "8921": [0.03517, 0.54986, 0, 0, 1.33334], + "8922": [0.38569, 0.88569, 0, 0, 0.77778], + "8923": [0.38569, 0.88569, 0, 0, 0.77778], + "8926": [0.13667, 0.63667, 0, 0, 0.77778], + "8927": [0.13667, 0.63667, 0, 0, 0.77778], + "8928": [0.30274, 0.79383, 0, 0, 0.77778], + "8929": [0.30274, 0.79383, 0, 0, 0.77778], + "8934": [0.23222, 0.74111, 0, 0, 0.77778], + "8935": [0.23222, 0.74111, 0, 0, 0.77778], + "8936": [0.23222, 0.74111, 0, 0, 0.77778], + "8937": [0.23222, 0.74111, 0, 0, 0.77778], + "8938": [0.20576, 0.70576, 0, 0, 0.77778], + "8939": [0.20576, 0.70576, 0, 0, 0.77778], + "8940": [0.30274, 0.79383, 0, 0, 0.77778], + "8941": [0.30274, 0.79383, 0, 0, 0.77778], + "8994": [0.19444, 0.69224, 0, 0, 0.77778], + "8995": [0.19444, 0.69224, 0, 0, 0.77778], + "9416": [0.15559, 0.69224, 0, 0, 0.90222], + "9484": [0, 0.69224, 0, 0, 0.5], + "9488": [0, 0.69224, 0, 0, 0.5], + "9492": [0, 0.37788, 0, 0, 0.5], + "9496": [0, 0.37788, 0, 0, 0.5], + "9585": [0.19444, 0.68889, 0, 0, 0.88889], + "9586": [0.19444, 0.74111, 0, 0, 0.88889], + "9632": [0, 0.675, 0, 0, 0.77778], + "9633": [0, 0.675, 0, 0, 0.77778], + "9650": [0, 0.54986, 0, 0, 0.72222], + "9651": [0, 0.54986, 0, 0, 0.72222], + "9654": [0.03517, 0.54986, 0, 0, 0.77778], + "9660": [0, 0.54986, 0, 0, 0.72222], + "9661": [0, 0.54986, 0, 0, 0.72222], + "9664": [0.03517, 0.54986, 0, 0, 0.77778], + "9674": [0.11111, 0.69224, 0, 0, 0.66667], + "9733": [0.19444, 0.69224, 0, 0, 0.94445], + "10003": [0, 0.69224, 0, 0, 0.83334], + "10016": [0, 0.69224, 0, 0, 0.83334], + "10731": [0.11111, 0.69224, 0, 0, 0.66667], + "10846": [0.19444, 0.75583, 0, 0, 0.61111], + "10877": [0.13667, 0.63667, 0, 0, 0.77778], + "10878": [0.13667, 0.63667, 0, 0, 0.77778], + "10885": [0.25583, 0.75583, 0, 0, 0.77778], + "10886": [0.25583, 0.75583, 0, 0, 0.77778], + "10887": [0.13597, 0.63597, 0, 0, 0.77778], + "10888": [0.13597, 0.63597, 0, 0, 0.77778], + "10889": [0.26167, 0.75726, 0, 0, 0.77778], + "10890": [0.26167, 0.75726, 0, 0, 0.77778], + "10891": [0.48256, 0.98256, 0, 0, 0.77778], + "10892": [0.48256, 0.98256, 0, 0, 0.77778], + "10901": [0.13667, 0.63667, 0, 0, 0.77778], + "10902": [0.13667, 0.63667, 0, 0, 0.77778], + "10933": [0.25142, 0.75726, 0, 0, 0.77778], + "10934": [0.25142, 0.75726, 0, 0, 0.77778], + "10935": [0.26167, 0.75726, 0, 0, 0.77778], + "10936": [0.26167, 0.75726, 0, 0, 0.77778], + "10937": [0.26167, 0.75726, 0, 0, 0.77778], + "10938": [0.26167, 0.75726, 0, 0, 0.77778], + "10949": [0.25583, 0.75583, 0, 0, 0.77778], + "10950": [0.25583, 0.75583, 0, 0, 0.77778], + "10955": [0.28481, 0.79383, 0, 0, 0.77778], + "10956": [0.28481, 0.79383, 0, 0, 0.77778], + "57350": [0.08167, 0.58167, 0, 0, 0.22222], + "57351": [0.08167, 0.58167, 0, 0, 0.38889], + "57352": [0.08167, 0.58167, 0, 0, 0.77778], + "57353": [0, 0.43056, 0.04028, 0, 0.66667], + "57356": [0.25142, 0.75726, 0, 0, 0.77778], + "57357": [0.25142, 0.75726, 0, 0, 0.77778], + "57358": [0.41951, 0.91951, 0, 0, 0.77778], + "57359": [0.30274, 0.79383, 0, 0, 0.77778], + "57360": [0.30274, 0.79383, 0, 0, 0.77778], + "57361": [0.41951, 0.91951, 0, 0, 0.77778], + "57366": [0.25142, 0.75726, 0, 0, 0.77778], + "57367": [0.25142, 0.75726, 0, 0, 0.77778], + "57368": [0.25142, 0.75726, 0, 0, 0.77778], + "57369": [0.25142, 0.75726, 0, 0, 0.77778], + "57370": [0.13597, 0.63597, 0, 0, 0.77778], + "57371": [0.13597, 0.63597, 0, 0, 0.77778] + }, + "Caligraphic-Regular": { + "48": [0, 0.43056, 0, 0, 0.5], + "49": [0, 0.43056, 0, 0, 0.5], + "50": [0, 0.43056, 0, 0, 0.5], + "51": [0.19444, 0.43056, 0, 0, 0.5], + "52": [0.19444, 0.43056, 0, 0, 0.5], + "53": [0.19444, 0.43056, 0, 0, 0.5], + "54": [0, 0.64444, 0, 0, 0.5], + "55": [0.19444, 0.43056, 0, 0, 0.5], + "56": [0, 0.64444, 0, 0, 0.5], + "57": [0.19444, 0.43056, 0, 0, 0.5], + "65": [0, 0.68333, 0, 0.19445, 0.79847], + "66": [0, 0.68333, 0.03041, 0.13889, 0.65681], + "67": [0, 0.68333, 0.05834, 0.13889, 0.52653], + "68": [0, 0.68333, 0.02778, 0.08334, 0.77139], + "69": [0, 0.68333, 0.08944, 0.11111, 0.52778], + "70": [0, 0.68333, 0.09931, 0.11111, 0.71875], + "71": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], + "72": [0, 0.68333, 0.00965, 0.11111, 0.84452], + "73": [0, 0.68333, 0.07382, 0, 0.54452], + "74": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], + "75": [0, 0.68333, 0.01445, 0.05556, 0.76195], + "76": [0, 0.68333, 0, 0.13889, 0.68972], + "77": [0, 0.68333, 0, 0.13889, 1.2009], + "78": [0, 0.68333, 0.14736, 0.08334, 0.82049], + "79": [0, 0.68333, 0.02778, 0.11111, 0.79611], + "80": [0, 0.68333, 0.08222, 0.08334, 0.69556], + "81": [0.09722, 0.68333, 0, 0.11111, 0.81667], + "82": [0, 0.68333, 0, 0.08334, 0.8475], + "83": [0, 0.68333, 0.075, 0.13889, 0.60556], + "84": [0, 0.68333, 0.25417, 0, 0.54464], + "85": [0, 0.68333, 0.09931, 0.08334, 0.62583], + "86": [0, 0.68333, 0.08222, 0, 0.61278], + "87": [0, 0.68333, 0.08222, 0.08334, 0.98778], + "88": [0, 0.68333, 0.14643, 0.13889, 0.7133], + "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], + "90": [0, 0.68333, 0.07944, 0.13889, 0.72473] + }, + "Fraktur-Regular": { + "33": [0, 0.69141, 0, 0, 0.29574], + "34": [0, 0.69141, 0, 0, 0.21471], + "38": [0, 0.69141, 0, 0, 0.73786], + "39": [0, 0.69141, 0, 0, 0.21201], + "40": [0.24982, 0.74947, 0, 0, 0.38865], + "41": [0.24982, 0.74947, 0, 0, 0.38865], + "42": [0, 0.62119, 0, 0, 0.27764], + "43": [0.08319, 0.58283, 0, 0, 0.75623], + "44": [0, 0.10803, 0, 0, 0.27764], + "45": [0.08319, 0.58283, 0, 0, 0.75623], + "46": [0, 0.10803, 0, 0, 0.27764], + "47": [0.24982, 0.74947, 0, 0, 0.50181], + "48": [0, 0.47534, 0, 0, 0.50181], + "49": [0, 0.47534, 0, 0, 0.50181], + "50": [0, 0.47534, 0, 0, 0.50181], + "51": [0.18906, 0.47534, 0, 0, 0.50181], + "52": [0.18906, 0.47534, 0, 0, 0.50181], + "53": [0.18906, 0.47534, 0, 0, 0.50181], + "54": [0, 0.69141, 0, 0, 0.50181], + "55": [0.18906, 0.47534, 0, 0, 0.50181], + "56": [0, 0.69141, 0, 0, 0.50181], + "57": [0.18906, 0.47534, 0, 0, 0.50181], + "58": [0, 0.47534, 0, 0, 0.21606], + "59": [0.12604, 0.47534, 0, 0, 0.21606], + "61": [-0.13099, 0.36866, 0, 0, 0.75623], + "63": [0, 0.69141, 0, 0, 0.36245], + "65": [0, 0.69141, 0, 0, 0.7176], + "66": [0, 0.69141, 0, 0, 0.88397], + "67": [0, 0.69141, 0, 0, 0.61254], + "68": [0, 0.69141, 0, 0, 0.83158], + "69": [0, 0.69141, 0, 0, 0.66278], + "70": [0.12604, 0.69141, 0, 0, 0.61119], + "71": [0, 0.69141, 0, 0, 0.78539], + "72": [0.06302, 0.69141, 0, 0, 0.7203], + "73": [0, 0.69141, 0, 0, 0.55448], + "74": [0.12604, 0.69141, 0, 0, 0.55231], + "75": [0, 0.69141, 0, 0, 0.66845], + "76": [0, 0.69141, 0, 0, 0.66602], + "77": [0, 0.69141, 0, 0, 1.04953], + "78": [0, 0.69141, 0, 0, 0.83212], + "79": [0, 0.69141, 0, 0, 0.82699], + "80": [0.18906, 0.69141, 0, 0, 0.82753], + "81": [0.03781, 0.69141, 0, 0, 0.82699], + "82": [0, 0.69141, 0, 0, 0.82807], + "83": [0, 0.69141, 0, 0, 0.82861], + "84": [0, 0.69141, 0, 0, 0.66899], + "85": [0, 0.69141, 0, 0, 0.64576], + "86": [0, 0.69141, 0, 0, 0.83131], + "87": [0, 0.69141, 0, 0, 1.04602], + "88": [0, 0.69141, 0, 0, 0.71922], + "89": [0.18906, 0.69141, 0, 0, 0.83293], + "90": [0.12604, 0.69141, 0, 0, 0.60201], + "91": [0.24982, 0.74947, 0, 0, 0.27764], + "93": [0.24982, 0.74947, 0, 0, 0.27764], + "94": [0, 0.69141, 0, 0, 0.49965], + "97": [0, 0.47534, 0, 0, 0.50046], + "98": [0, 0.69141, 0, 0, 0.51315], + "99": [0, 0.47534, 0, 0, 0.38946], + "100": [0, 0.62119, 0, 0, 0.49857], + "101": [0, 0.47534, 0, 0, 0.40053], + "102": [0.18906, 0.69141, 0, 0, 0.32626], + "103": [0.18906, 0.47534, 0, 0, 0.5037], + "104": [0.18906, 0.69141, 0, 0, 0.52126], + "105": [0, 0.69141, 0, 0, 0.27899], + "106": [0, 0.69141, 0, 0, 0.28088], + "107": [0, 0.69141, 0, 0, 0.38946], + "108": [0, 0.69141, 0, 0, 0.27953], + "109": [0, 0.47534, 0, 0, 0.76676], + "110": [0, 0.47534, 0, 0, 0.52666], + "111": [0, 0.47534, 0, 0, 0.48885], + "112": [0.18906, 0.52396, 0, 0, 0.50046], + "113": [0.18906, 0.47534, 0, 0, 0.48912], + "114": [0, 0.47534, 0, 0, 0.38919], + "115": [0, 0.47534, 0, 0, 0.44266], + "116": [0, 0.62119, 0, 0, 0.33301], + "117": [0, 0.47534, 0, 0, 0.5172], + "118": [0, 0.52396, 0, 0, 0.5118], + "119": [0, 0.52396, 0, 0, 0.77351], + "120": [0.18906, 0.47534, 0, 0, 0.38865], + "121": [0.18906, 0.47534, 0, 0, 0.49884], + "122": [0.18906, 0.47534, 0, 0, 0.39054], + "8216": [0, 0.69141, 0, 0, 0.21471], + "8217": [0, 0.69141, 0, 0, 0.21471], + "58112": [0, 0.62119, 0, 0, 0.49749], + "58113": [0, 0.62119, 0, 0, 0.4983], + "58114": [0.18906, 0.69141, 0, 0, 0.33328], + "58115": [0.18906, 0.69141, 0, 0, 0.32923], + "58116": [0.18906, 0.47534, 0, 0, 0.50343], + "58117": [0, 0.69141, 0, 0, 0.33301], + "58118": [0, 0.62119, 0, 0, 0.33409], + "58119": [0, 0.47534, 0, 0, 0.50073] + }, + "Main-Bold": { + "33": [0, 0.69444, 0, 0, 0.35], + "34": [0, 0.69444, 0, 0, 0.60278], + "35": [0.19444, 0.69444, 0, 0, 0.95833], + "36": [0.05556, 0.75, 0, 0, 0.575], + "37": [0.05556, 0.75, 0, 0, 0.95833], + "38": [0, 0.69444, 0, 0, 0.89444], + "39": [0, 0.69444, 0, 0, 0.31944], + "40": [0.25, 0.75, 0, 0, 0.44722], + "41": [0.25, 0.75, 0, 0, 0.44722], + "42": [0, 0.75, 0, 0, 0.575], + "43": [0.13333, 0.63333, 0, 0, 0.89444], + "44": [0.19444, 0.15556, 0, 0, 0.31944], + "45": [0, 0.44444, 0, 0, 0.38333], + "46": [0, 0.15556, 0, 0, 0.31944], + "47": [0.25, 0.75, 0, 0, 0.575], + "48": [0, 0.64444, 0, 0, 0.575], + "49": [0, 0.64444, 0, 0, 0.575], + "50": [0, 0.64444, 0, 0, 0.575], + "51": [0, 0.64444, 0, 0, 0.575], + "52": [0, 0.64444, 0, 0, 0.575], + "53": [0, 0.64444, 0, 0, 0.575], + "54": [0, 0.64444, 0, 0, 0.575], + "55": [0, 0.64444, 0, 0, 0.575], + "56": [0, 0.64444, 0, 0, 0.575], + "57": [0, 0.64444, 0, 0, 0.575], + "58": [0, 0.44444, 0, 0, 0.31944], + "59": [0.19444, 0.44444, 0, 0, 0.31944], + "60": [0.08556, 0.58556, 0, 0, 0.89444], + "61": [-0.10889, 0.39111, 0, 0, 0.89444], + "62": [0.08556, 0.58556, 0, 0, 0.89444], + "63": [0, 0.69444, 0, 0, 0.54305], + "64": [0, 0.69444, 0, 0, 0.89444], + "65": [0, 0.68611, 0, 0, 0.86944], + "66": [0, 0.68611, 0, 0, 0.81805], + "67": [0, 0.68611, 0, 0, 0.83055], + "68": [0, 0.68611, 0, 0, 0.88194], + "69": [0, 0.68611, 0, 0, 0.75555], + "70": [0, 0.68611, 0, 0, 0.72361], + "71": [0, 0.68611, 0, 0, 0.90416], + "72": [0, 0.68611, 0, 0, 0.9], + "73": [0, 0.68611, 0, 0, 0.43611], + "74": [0, 0.68611, 0, 0, 0.59444], + "75": [0, 0.68611, 0, 0, 0.90138], + "76": [0, 0.68611, 0, 0, 0.69166], + "77": [0, 0.68611, 0, 0, 1.09166], + "78": [0, 0.68611, 0, 0, 0.9], + "79": [0, 0.68611, 0, 0, 0.86388], + "80": [0, 0.68611, 0, 0, 0.78611], + "81": [0.19444, 0.68611, 0, 0, 0.86388], + "82": [0, 0.68611, 0, 0, 0.8625], + "83": [0, 0.68611, 0, 0, 0.63889], + "84": [0, 0.68611, 0, 0, 0.8], + "85": [0, 0.68611, 0, 0, 0.88472], + "86": [0, 0.68611, 0.01597, 0, 0.86944], + "87": [0, 0.68611, 0.01597, 0, 1.18888], + "88": [0, 0.68611, 0, 0, 0.86944], + "89": [0, 0.68611, 0.02875, 0, 0.86944], + "90": [0, 0.68611, 0, 0, 0.70277], + "91": [0.25, 0.75, 0, 0, 0.31944], + "92": [0.25, 0.75, 0, 0, 0.575], + "93": [0.25, 0.75, 0, 0, 0.31944], + "94": [0, 0.69444, 0, 0, 0.575], + "95": [0.31, 0.13444, 0.03194, 0, 0.575], + "97": [0, 0.44444, 0, 0, 0.55902], + "98": [0, 0.69444, 0, 0, 0.63889], + "99": [0, 0.44444, 0, 0, 0.51111], + "100": [0, 0.69444, 0, 0, 0.63889], + "101": [0, 0.44444, 0, 0, 0.52708], + "102": [0, 0.69444, 0.10903, 0, 0.35139], + "103": [0.19444, 0.44444, 0.01597, 0, 0.575], + "104": [0, 0.69444, 0, 0, 0.63889], + "105": [0, 0.69444, 0, 0, 0.31944], + "106": [0.19444, 0.69444, 0, 0, 0.35139], + "107": [0, 0.69444, 0, 0, 0.60694], + "108": [0, 0.69444, 0, 0, 0.31944], + "109": [0, 0.44444, 0, 0, 0.95833], + "110": [0, 0.44444, 0, 0, 0.63889], + "111": [0, 0.44444, 0, 0, 0.575], + "112": [0.19444, 0.44444, 0, 0, 0.63889], + "113": [0.19444, 0.44444, 0, 0, 0.60694], + "114": [0, 0.44444, 0, 0, 0.47361], + "115": [0, 0.44444, 0, 0, 0.45361], + "116": [0, 0.63492, 0, 0, 0.44722], + "117": [0, 0.44444, 0, 0, 0.63889], + "118": [0, 0.44444, 0.01597, 0, 0.60694], + "119": [0, 0.44444, 0.01597, 0, 0.83055], + "120": [0, 0.44444, 0, 0, 0.60694], + "121": [0.19444, 0.44444, 0.01597, 0, 0.60694], + "122": [0, 0.44444, 0, 0, 0.51111], + "123": [0.25, 0.75, 0, 0, 0.575], + "124": [0.25, 0.75, 0, 0, 0.31944], + "125": [0.25, 0.75, 0, 0, 0.575], + "126": [0.35, 0.34444, 0, 0, 0.575], + "168": [0, 0.69444, 0, 0, 0.575], + "172": [0, 0.44444, 0, 0, 0.76666], + "176": [0, 0.69444, 0, 0, 0.86944], + "177": [0.13333, 0.63333, 0, 0, 0.89444], + "184": [0.17014, 0, 0, 0, 0.51111], + "198": [0, 0.68611, 0, 0, 1.04166], + "215": [0.13333, 0.63333, 0, 0, 0.89444], + "216": [0.04861, 0.73472, 0, 0, 0.89444], + "223": [0, 0.69444, 0, 0, 0.59722], + "230": [0, 0.44444, 0, 0, 0.83055], + "247": [0.13333, 0.63333, 0, 0, 0.89444], + "248": [0.09722, 0.54167, 0, 0, 0.575], + "305": [0, 0.44444, 0, 0, 0.31944], + "338": [0, 0.68611, 0, 0, 1.16944], + "339": [0, 0.44444, 0, 0, 0.89444], + "567": [0.19444, 0.44444, 0, 0, 0.35139], + "710": [0, 0.69444, 0, 0, 0.575], + "711": [0, 0.63194, 0, 0, 0.575], + "713": [0, 0.59611, 0, 0, 0.575], + "714": [0, 0.69444, 0, 0, 0.575], + "715": [0, 0.69444, 0, 0, 0.575], + "728": [0, 0.69444, 0, 0, 0.575], + "729": [0, 0.69444, 0, 0, 0.31944], + "730": [0, 0.69444, 0, 0, 0.86944], + "732": [0, 0.69444, 0, 0, 0.575], + "733": [0, 0.69444, 0, 0, 0.575], + "915": [0, 0.68611, 0, 0, 0.69166], + "916": [0, 0.68611, 0, 0, 0.95833], + "920": [0, 0.68611, 0, 0, 0.89444], + "923": [0, 0.68611, 0, 0, 0.80555], + "926": [0, 0.68611, 0, 0, 0.76666], + "928": [0, 0.68611, 0, 0, 0.9], + "931": [0, 0.68611, 0, 0, 0.83055], + "933": [0, 0.68611, 0, 0, 0.89444], + "934": [0, 0.68611, 0, 0, 0.83055], + "936": [0, 0.68611, 0, 0, 0.89444], + "937": [0, 0.68611, 0, 0, 0.83055], + "8211": [0, 0.44444, 0.03194, 0, 0.575], + "8212": [0, 0.44444, 0.03194, 0, 1.14999], + "8216": [0, 0.69444, 0, 0, 0.31944], + "8217": [0, 0.69444, 0, 0, 0.31944], + "8220": [0, 0.69444, 0, 0, 0.60278], + "8221": [0, 0.69444, 0, 0, 0.60278], + "8224": [0.19444, 0.69444, 0, 0, 0.51111], + "8225": [0.19444, 0.69444, 0, 0, 0.51111], + "8242": [0, 0.55556, 0, 0, 0.34444], + "8407": [0, 0.72444, 0.15486, 0, 0.575], + "8463": [0, 0.69444, 0, 0, 0.66759], + "8465": [0, 0.69444, 0, 0, 0.83055], + "8467": [0, 0.69444, 0, 0, 0.47361], + "8472": [0.19444, 0.44444, 0, 0, 0.74027], + "8476": [0, 0.69444, 0, 0, 0.83055], + "8501": [0, 0.69444, 0, 0, 0.70277], + "8592": [-0.10889, 0.39111, 0, 0, 1.14999], + "8593": [0.19444, 0.69444, 0, 0, 0.575], + "8594": [-0.10889, 0.39111, 0, 0, 1.14999], + "8595": [0.19444, 0.69444, 0, 0, 0.575], + "8596": [-0.10889, 0.39111, 0, 0, 1.14999], + "8597": [0.25, 0.75, 0, 0, 0.575], + "8598": [0.19444, 0.69444, 0, 0, 1.14999], + "8599": [0.19444, 0.69444, 0, 0, 1.14999], + "8600": [0.19444, 0.69444, 0, 0, 1.14999], + "8601": [0.19444, 0.69444, 0, 0, 1.14999], + "8636": [-0.10889, 0.39111, 0, 0, 1.14999], + "8637": [-0.10889, 0.39111, 0, 0, 1.14999], + "8640": [-0.10889, 0.39111, 0, 0, 1.14999], + "8641": [-0.10889, 0.39111, 0, 0, 1.14999], + "8656": [-0.10889, 0.39111, 0, 0, 1.14999], + "8657": [0.19444, 0.69444, 0, 0, 0.70277], + "8658": [-0.10889, 0.39111, 0, 0, 1.14999], + "8659": [0.19444, 0.69444, 0, 0, 0.70277], + "8660": [-0.10889, 0.39111, 0, 0, 1.14999], + "8661": [0.25, 0.75, 0, 0, 0.70277], + "8704": [0, 0.69444, 0, 0, 0.63889], + "8706": [0, 0.69444, 0.06389, 0, 0.62847], + "8707": [0, 0.69444, 0, 0, 0.63889], + "8709": [0.05556, 0.75, 0, 0, 0.575], + "8711": [0, 0.68611, 0, 0, 0.95833], + "8712": [0.08556, 0.58556, 0, 0, 0.76666], + "8715": [0.08556, 0.58556, 0, 0, 0.76666], + "8722": [0.13333, 0.63333, 0, 0, 0.89444], + "8723": [0.13333, 0.63333, 0, 0, 0.89444], + "8725": [0.25, 0.75, 0, 0, 0.575], + "8726": [0.25, 0.75, 0, 0, 0.575], + "8727": [-0.02778, 0.47222, 0, 0, 0.575], + "8728": [-0.02639, 0.47361, 0, 0, 0.575], + "8729": [-0.02639, 0.47361, 0, 0, 0.575], + "8730": [0.18, 0.82, 0, 0, 0.95833], + "8733": [0, 0.44444, 0, 0, 0.89444], + "8734": [0, 0.44444, 0, 0, 1.14999], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8739": [0.25, 0.75, 0, 0, 0.31944], + "8741": [0.25, 0.75, 0, 0, 0.575], + "8743": [0, 0.55556, 0, 0, 0.76666], + "8744": [0, 0.55556, 0, 0, 0.76666], + "8745": [0, 0.55556, 0, 0, 0.76666], + "8746": [0, 0.55556, 0, 0, 0.76666], + "8747": [0.19444, 0.69444, 0.12778, 0, 0.56875], + "8764": [-0.10889, 0.39111, 0, 0, 0.89444], + "8768": [0.19444, 0.69444, 0, 0, 0.31944], + "8771": [0.00222, 0.50222, 0, 0, 0.89444], + "8776": [0.02444, 0.52444, 0, 0, 0.89444], + "8781": [0.00222, 0.50222, 0, 0, 0.89444], + "8801": [0.00222, 0.50222, 0, 0, 0.89444], + "8804": [0.19667, 0.69667, 0, 0, 0.89444], + "8805": [0.19667, 0.69667, 0, 0, 0.89444], + "8810": [0.08556, 0.58556, 0, 0, 1.14999], + "8811": [0.08556, 0.58556, 0, 0, 1.14999], + "8826": [0.08556, 0.58556, 0, 0, 0.89444], + "8827": [0.08556, 0.58556, 0, 0, 0.89444], + "8834": [0.08556, 0.58556, 0, 0, 0.89444], + "8835": [0.08556, 0.58556, 0, 0, 0.89444], + "8838": [0.19667, 0.69667, 0, 0, 0.89444], + "8839": [0.19667, 0.69667, 0, 0, 0.89444], + "8846": [0, 0.55556, 0, 0, 0.76666], + "8849": [0.19667, 0.69667, 0, 0, 0.89444], + "8850": [0.19667, 0.69667, 0, 0, 0.89444], + "8851": [0, 0.55556, 0, 0, 0.76666], + "8852": [0, 0.55556, 0, 0, 0.76666], + "8853": [0.13333, 0.63333, 0, 0, 0.89444], + "8854": [0.13333, 0.63333, 0, 0, 0.89444], + "8855": [0.13333, 0.63333, 0, 0, 0.89444], + "8856": [0.13333, 0.63333, 0, 0, 0.89444], + "8857": [0.13333, 0.63333, 0, 0, 0.89444], + "8866": [0, 0.69444, 0, 0, 0.70277], + "8867": [0, 0.69444, 0, 0, 0.70277], + "8868": [0, 0.69444, 0, 0, 0.89444], + "8869": [0, 0.69444, 0, 0, 0.89444], + "8900": [-0.02639, 0.47361, 0, 0, 0.575], + "8901": [-0.02639, 0.47361, 0, 0, 0.31944], + "8902": [-0.02778, 0.47222, 0, 0, 0.575], + "8968": [0.25, 0.75, 0, 0, 0.51111], + "8969": [0.25, 0.75, 0, 0, 0.51111], + "8970": [0.25, 0.75, 0, 0, 0.51111], + "8971": [0.25, 0.75, 0, 0, 0.51111], + "8994": [-0.13889, 0.36111, 0, 0, 1.14999], + "8995": [-0.13889, 0.36111, 0, 0, 1.14999], + "9651": [0.19444, 0.69444, 0, 0, 1.02222], + "9657": [-0.02778, 0.47222, 0, 0, 0.575], + "9661": [0.19444, 0.69444, 0, 0, 1.02222], + "9667": [-0.02778, 0.47222, 0, 0, 0.575], + "9711": [0.19444, 0.69444, 0, 0, 1.14999], + "9824": [0.12963, 0.69444, 0, 0, 0.89444], + "9825": [0.12963, 0.69444, 0, 0, 0.89444], + "9826": [0.12963, 0.69444, 0, 0, 0.89444], + "9827": [0.12963, 0.69444, 0, 0, 0.89444], + "9837": [0, 0.75, 0, 0, 0.44722], + "9838": [0.19444, 0.69444, 0, 0, 0.44722], + "9839": [0.19444, 0.69444, 0, 0, 0.44722], + "10216": [0.25, 0.75, 0, 0, 0.44722], + "10217": [0.25, 0.75, 0, 0, 0.44722], + "10815": [0, 0.68611, 0, 0, 0.9], + "10927": [0.19667, 0.69667, 0, 0, 0.89444], + "10928": [0.19667, 0.69667, 0, 0, 0.89444], + "57376": [0.19444, 0.69444, 0, 0, 0] + }, + "Main-BoldItalic": { + "33": [0, 0.69444, 0.11417, 0, 0.38611], + "34": [0, 0.69444, 0.07939, 0, 0.62055], + "35": [0.19444, 0.69444, 0.06833, 0, 0.94444], + "37": [0.05556, 0.75, 0.12861, 0, 0.94444], + "38": [0, 0.69444, 0.08528, 0, 0.88555], + "39": [0, 0.69444, 0.12945, 0, 0.35555], + "40": [0.25, 0.75, 0.15806, 0, 0.47333], + "41": [0.25, 0.75, 0.03306, 0, 0.47333], + "42": [0, 0.75, 0.14333, 0, 0.59111], + "43": [0.10333, 0.60333, 0.03306, 0, 0.88555], + "44": [0.19444, 0.14722, 0, 0, 0.35555], + "45": [0, 0.44444, 0.02611, 0, 0.41444], + "46": [0, 0.14722, 0, 0, 0.35555], + "47": [0.25, 0.75, 0.15806, 0, 0.59111], + "48": [0, 0.64444, 0.13167, 0, 0.59111], + "49": [0, 0.64444, 0.13167, 0, 0.59111], + "50": [0, 0.64444, 0.13167, 0, 0.59111], + "51": [0, 0.64444, 0.13167, 0, 0.59111], + "52": [0.19444, 0.64444, 0.13167, 0, 0.59111], + "53": [0, 0.64444, 0.13167, 0, 0.59111], + "54": [0, 0.64444, 0.13167, 0, 0.59111], + "55": [0.19444, 0.64444, 0.13167, 0, 0.59111], + "56": [0, 0.64444, 0.13167, 0, 0.59111], + "57": [0, 0.64444, 0.13167, 0, 0.59111], + "58": [0, 0.44444, 0.06695, 0, 0.35555], + "59": [0.19444, 0.44444, 0.06695, 0, 0.35555], + "61": [-0.10889, 0.39111, 0.06833, 0, 0.88555], + "63": [0, 0.69444, 0.11472, 0, 0.59111], + "64": [0, 0.69444, 0.09208, 0, 0.88555], + "65": [0, 0.68611, 0, 0, 0.86555], + "66": [0, 0.68611, 0.0992, 0, 0.81666], + "67": [0, 0.68611, 0.14208, 0, 0.82666], + "68": [0, 0.68611, 0.09062, 0, 0.87555], + "69": [0, 0.68611, 0.11431, 0, 0.75666], + "70": [0, 0.68611, 0.12903, 0, 0.72722], + "71": [0, 0.68611, 0.07347, 0, 0.89527], + "72": [0, 0.68611, 0.17208, 0, 0.8961], + "73": [0, 0.68611, 0.15681, 0, 0.47166], + "74": [0, 0.68611, 0.145, 0, 0.61055], + "75": [0, 0.68611, 0.14208, 0, 0.89499], + "76": [0, 0.68611, 0, 0, 0.69777], + "77": [0, 0.68611, 0.17208, 0, 1.07277], + "78": [0, 0.68611, 0.17208, 0, 0.8961], + "79": [0, 0.68611, 0.09062, 0, 0.85499], + "80": [0, 0.68611, 0.0992, 0, 0.78721], + "81": [0.19444, 0.68611, 0.09062, 0, 0.85499], + "82": [0, 0.68611, 0.02559, 0, 0.85944], + "83": [0, 0.68611, 0.11264, 0, 0.64999], + "84": [0, 0.68611, 0.12903, 0, 0.7961], + "85": [0, 0.68611, 0.17208, 0, 0.88083], + "86": [0, 0.68611, 0.18625, 0, 0.86555], + "87": [0, 0.68611, 0.18625, 0, 1.15999], + "88": [0, 0.68611, 0.15681, 0, 0.86555], + "89": [0, 0.68611, 0.19803, 0, 0.86555], + "90": [0, 0.68611, 0.14208, 0, 0.70888], + "91": [0.25, 0.75, 0.1875, 0, 0.35611], + "93": [0.25, 0.75, 0.09972, 0, 0.35611], + "94": [0, 0.69444, 0.06709, 0, 0.59111], + "95": [0.31, 0.13444, 0.09811, 0, 0.59111], + "97": [0, 0.44444, 0.09426, 0, 0.59111], + "98": [0, 0.69444, 0.07861, 0, 0.53222], + "99": [0, 0.44444, 0.05222, 0, 0.53222], + "100": [0, 0.69444, 0.10861, 0, 0.59111], + "101": [0, 0.44444, 0.085, 0, 0.53222], + "102": [0.19444, 0.69444, 0.21778, 0, 0.4], + "103": [0.19444, 0.44444, 0.105, 0, 0.53222], + "104": [0, 0.69444, 0.09426, 0, 0.59111], + "105": [0, 0.69326, 0.11387, 0, 0.35555], + "106": [0.19444, 0.69326, 0.1672, 0, 0.35555], + "107": [0, 0.69444, 0.11111, 0, 0.53222], + "108": [0, 0.69444, 0.10861, 0, 0.29666], + "109": [0, 0.44444, 0.09426, 0, 0.94444], + "110": [0, 0.44444, 0.09426, 0, 0.64999], + "111": [0, 0.44444, 0.07861, 0, 0.59111], + "112": [0.19444, 0.44444, 0.07861, 0, 0.59111], + "113": [0.19444, 0.44444, 0.105, 0, 0.53222], + "114": [0, 0.44444, 0.11111, 0, 0.50167], + "115": [0, 0.44444, 0.08167, 0, 0.48694], + "116": [0, 0.63492, 0.09639, 0, 0.385], + "117": [0, 0.44444, 0.09426, 0, 0.62055], + "118": [0, 0.44444, 0.11111, 0, 0.53222], + "119": [0, 0.44444, 0.11111, 0, 0.76777], + "120": [0, 0.44444, 0.12583, 0, 0.56055], + "121": [0.19444, 0.44444, 0.105, 0, 0.56166], + "122": [0, 0.44444, 0.13889, 0, 0.49055], + "126": [0.35, 0.34444, 0.11472, 0, 0.59111], + "163": [0, 0.69444, 0, 0, 0.86853], + "168": [0, 0.69444, 0.11473, 0, 0.59111], + "176": [0, 0.69444, 0, 0, 0.94888], + "184": [0.17014, 0, 0, 0, 0.53222], + "198": [0, 0.68611, 0.11431, 0, 1.02277], + "216": [0.04861, 0.73472, 0.09062, 0, 0.88555], + "223": [0.19444, 0.69444, 0.09736, 0, 0.665], + "230": [0, 0.44444, 0.085, 0, 0.82666], + "248": [0.09722, 0.54167, 0.09458, 0, 0.59111], + "305": [0, 0.44444, 0.09426, 0, 0.35555], + "338": [0, 0.68611, 0.11431, 0, 1.14054], + "339": [0, 0.44444, 0.085, 0, 0.82666], + "567": [0.19444, 0.44444, 0.04611, 0, 0.385], + "710": [0, 0.69444, 0.06709, 0, 0.59111], + "711": [0, 0.63194, 0.08271, 0, 0.59111], + "713": [0, 0.59444, 0.10444, 0, 0.59111], + "714": [0, 0.69444, 0.08528, 0, 0.59111], + "715": [0, 0.69444, 0, 0, 0.59111], + "728": [0, 0.69444, 0.10333, 0, 0.59111], + "729": [0, 0.69444, 0.12945, 0, 0.35555], + "730": [0, 0.69444, 0, 0, 0.94888], + "732": [0, 0.69444, 0.11472, 0, 0.59111], + "733": [0, 0.69444, 0.11472, 0, 0.59111], + "915": [0, 0.68611, 0.12903, 0, 0.69777], + "916": [0, 0.68611, 0, 0, 0.94444], + "920": [0, 0.68611, 0.09062, 0, 0.88555], + "923": [0, 0.68611, 0, 0, 0.80666], + "926": [0, 0.68611, 0.15092, 0, 0.76777], + "928": [0, 0.68611, 0.17208, 0, 0.8961], + "931": [0, 0.68611, 0.11431, 0, 0.82666], + "933": [0, 0.68611, 0.10778, 0, 0.88555], + "934": [0, 0.68611, 0.05632, 0, 0.82666], + "936": [0, 0.68611, 0.10778, 0, 0.88555], + "937": [0, 0.68611, 0.0992, 0, 0.82666], + "8211": [0, 0.44444, 0.09811, 0, 0.59111], + "8212": [0, 0.44444, 0.09811, 0, 1.18221], + "8216": [0, 0.69444, 0.12945, 0, 0.35555], + "8217": [0, 0.69444, 0.12945, 0, 0.35555], + "8220": [0, 0.69444, 0.16772, 0, 0.62055], + "8221": [0, 0.69444, 0.07939, 0, 0.62055] + }, + "Main-Italic": { + "33": [0, 0.69444, 0.12417, 0, 0.30667], + "34": [0, 0.69444, 0.06961, 0, 0.51444], + "35": [0.19444, 0.69444, 0.06616, 0, 0.81777], + "37": [0.05556, 0.75, 0.13639, 0, 0.81777], + "38": [0, 0.69444, 0.09694, 0, 0.76666], + "39": [0, 0.69444, 0.12417, 0, 0.30667], + "40": [0.25, 0.75, 0.16194, 0, 0.40889], + "41": [0.25, 0.75, 0.03694, 0, 0.40889], + "42": [0, 0.75, 0.14917, 0, 0.51111], + "43": [0.05667, 0.56167, 0.03694, 0, 0.76666], + "44": [0.19444, 0.10556, 0, 0, 0.30667], + "45": [0, 0.43056, 0.02826, 0, 0.35778], + "46": [0, 0.10556, 0, 0, 0.30667], + "47": [0.25, 0.75, 0.16194, 0, 0.51111], + "48": [0, 0.64444, 0.13556, 0, 0.51111], + "49": [0, 0.64444, 0.13556, 0, 0.51111], + "50": [0, 0.64444, 0.13556, 0, 0.51111], + "51": [0, 0.64444, 0.13556, 0, 0.51111], + "52": [0.19444, 0.64444, 0.13556, 0, 0.51111], + "53": [0, 0.64444, 0.13556, 0, 0.51111], + "54": [0, 0.64444, 0.13556, 0, 0.51111], + "55": [0.19444, 0.64444, 0.13556, 0, 0.51111], + "56": [0, 0.64444, 0.13556, 0, 0.51111], + "57": [0, 0.64444, 0.13556, 0, 0.51111], + "58": [0, 0.43056, 0.0582, 0, 0.30667], + "59": [0.19444, 0.43056, 0.0582, 0, 0.30667], + "61": [-0.13313, 0.36687, 0.06616, 0, 0.76666], + "63": [0, 0.69444, 0.1225, 0, 0.51111], + "64": [0, 0.69444, 0.09597, 0, 0.76666], + "65": [0, 0.68333, 0, 0, 0.74333], + "66": [0, 0.68333, 0.10257, 0, 0.70389], + "67": [0, 0.68333, 0.14528, 0, 0.71555], + "68": [0, 0.68333, 0.09403, 0, 0.755], + "69": [0, 0.68333, 0.12028, 0, 0.67833], + "70": [0, 0.68333, 0.13305, 0, 0.65277], + "71": [0, 0.68333, 0.08722, 0, 0.77361], + "72": [0, 0.68333, 0.16389, 0, 0.74333], + "73": [0, 0.68333, 0.15806, 0, 0.38555], + "74": [0, 0.68333, 0.14028, 0, 0.525], + "75": [0, 0.68333, 0.14528, 0, 0.76888], + "76": [0, 0.68333, 0, 0, 0.62722], + "77": [0, 0.68333, 0.16389, 0, 0.89666], + "78": [0, 0.68333, 0.16389, 0, 0.74333], + "79": [0, 0.68333, 0.09403, 0, 0.76666], + "80": [0, 0.68333, 0.10257, 0, 0.67833], + "81": [0.19444, 0.68333, 0.09403, 0, 0.76666], + "82": [0, 0.68333, 0.03868, 0, 0.72944], + "83": [0, 0.68333, 0.11972, 0, 0.56222], + "84": [0, 0.68333, 0.13305, 0, 0.71555], + "85": [0, 0.68333, 0.16389, 0, 0.74333], + "86": [0, 0.68333, 0.18361, 0, 0.74333], + "87": [0, 0.68333, 0.18361, 0, 0.99888], + "88": [0, 0.68333, 0.15806, 0, 0.74333], + "89": [0, 0.68333, 0.19383, 0, 0.74333], + "90": [0, 0.68333, 0.14528, 0, 0.61333], + "91": [0.25, 0.75, 0.1875, 0, 0.30667], + "93": [0.25, 0.75, 0.10528, 0, 0.30667], + "94": [0, 0.69444, 0.06646, 0, 0.51111], + "95": [0.31, 0.12056, 0.09208, 0, 0.51111], + "97": [0, 0.43056, 0.07671, 0, 0.51111], + "98": [0, 0.69444, 0.06312, 0, 0.46], + "99": [0, 0.43056, 0.05653, 0, 0.46], + "100": [0, 0.69444, 0.10333, 0, 0.51111], + "101": [0, 0.43056, 0.07514, 0, 0.46], + "102": [0.19444, 0.69444, 0.21194, 0, 0.30667], + "103": [0.19444, 0.43056, 0.08847, 0, 0.46], + "104": [0, 0.69444, 0.07671, 0, 0.51111], + "105": [0, 0.65536, 0.1019, 0, 0.30667], + "106": [0.19444, 0.65536, 0.14467, 0, 0.30667], + "107": [0, 0.69444, 0.10764, 0, 0.46], + "108": [0, 0.69444, 0.10333, 0, 0.25555], + "109": [0, 0.43056, 0.07671, 0, 0.81777], + "110": [0, 0.43056, 0.07671, 0, 0.56222], + "111": [0, 0.43056, 0.06312, 0, 0.51111], + "112": [0.19444, 0.43056, 0.06312, 0, 0.51111], + "113": [0.19444, 0.43056, 0.08847, 0, 0.46], + "114": [0, 0.43056, 0.10764, 0, 0.42166], + "115": [0, 0.43056, 0.08208, 0, 0.40889], + "116": [0, 0.61508, 0.09486, 0, 0.33222], + "117": [0, 0.43056, 0.07671, 0, 0.53666], + "118": [0, 0.43056, 0.10764, 0, 0.46], + "119": [0, 0.43056, 0.10764, 0, 0.66444], + "120": [0, 0.43056, 0.12042, 0, 0.46389], + "121": [0.19444, 0.43056, 0.08847, 0, 0.48555], + "122": [0, 0.43056, 0.12292, 0, 0.40889], + "126": [0.35, 0.31786, 0.11585, 0, 0.51111], + "163": [0, 0.69444, 0, 0, 0.76909], + "168": [0, 0.66786, 0.10474, 0, 0.51111], + "176": [0, 0.69444, 0, 0, 0.83129], + "184": [0.17014, 0, 0, 0, 0.46], + "198": [0, 0.68333, 0.12028, 0, 0.88277], + "216": [0.04861, 0.73194, 0.09403, 0, 0.76666], + "223": [0.19444, 0.69444, 0.10514, 0, 0.53666], + "230": [0, 0.43056, 0.07514, 0, 0.71555], + "248": [0.09722, 0.52778, 0.09194, 0, 0.51111], + "305": [0, 0.43056, 0, 0.02778, 0.32246], + "338": [0, 0.68333, 0.12028, 0, 0.98499], + "339": [0, 0.43056, 0.07514, 0, 0.71555], + "567": [0.19444, 0.43056, 0, 0.08334, 0.38403], + "710": [0, 0.69444, 0.06646, 0, 0.51111], + "711": [0, 0.62847, 0.08295, 0, 0.51111], + "713": [0, 0.56167, 0.10333, 0, 0.51111], + "714": [0, 0.69444, 0.09694, 0, 0.51111], + "715": [0, 0.69444, 0, 0, 0.51111], + "728": [0, 0.69444, 0.10806, 0, 0.51111], + "729": [0, 0.66786, 0.11752, 0, 0.30667], + "730": [0, 0.69444, 0, 0, 0.83129], + "732": [0, 0.66786, 0.11585, 0, 0.51111], + "733": [0, 0.69444, 0.1225, 0, 0.51111], + "915": [0, 0.68333, 0.13305, 0, 0.62722], + "916": [0, 0.68333, 0, 0, 0.81777], + "920": [0, 0.68333, 0.09403, 0, 0.76666], + "923": [0, 0.68333, 0, 0, 0.69222], + "926": [0, 0.68333, 0.15294, 0, 0.66444], + "928": [0, 0.68333, 0.16389, 0, 0.74333], + "931": [0, 0.68333, 0.12028, 0, 0.71555], + "933": [0, 0.68333, 0.11111, 0, 0.76666], + "934": [0, 0.68333, 0.05986, 0, 0.71555], + "936": [0, 0.68333, 0.11111, 0, 0.76666], + "937": [0, 0.68333, 0.10257, 0, 0.71555], + "8211": [0, 0.43056, 0.09208, 0, 0.51111], + "8212": [0, 0.43056, 0.09208, 0, 1.02222], + "8216": [0, 0.69444, 0.12417, 0, 0.30667], + "8217": [0, 0.69444, 0.12417, 0, 0.30667], + "8220": [0, 0.69444, 0.1685, 0, 0.51444], + "8221": [0, 0.69444, 0.06961, 0, 0.51444], + "8463": [0, 0.68889, 0, 0, 0.54028] + }, + "Main-Regular": { + "32": [0, 0, 0, 0, 0.25], + "33": [0, 0.69444, 0, 0, 0.27778], + "34": [0, 0.69444, 0, 0, 0.5], + "35": [0.19444, 0.69444, 0, 0, 0.83334], + "36": [0.05556, 0.75, 0, 0, 0.5], + "37": [0.05556, 0.75, 0, 0, 0.83334], + "38": [0, 0.69444, 0, 0, 0.77778], + "39": [0, 0.69444, 0, 0, 0.27778], + "40": [0.25, 0.75, 0, 0, 0.38889], + "41": [0.25, 0.75, 0, 0, 0.38889], + "42": [0, 0.75, 0, 0, 0.5], + "43": [0.08333, 0.58333, 0, 0, 0.77778], + "44": [0.19444, 0.10556, 0, 0, 0.27778], + "45": [0, 0.43056, 0, 0, 0.33333], + "46": [0, 0.10556, 0, 0, 0.27778], + "47": [0.25, 0.75, 0, 0, 0.5], + "48": [0, 0.64444, 0, 0, 0.5], + "49": [0, 0.64444, 0, 0, 0.5], + "50": [0, 0.64444, 0, 0, 0.5], + "51": [0, 0.64444, 0, 0, 0.5], + "52": [0, 0.64444, 0, 0, 0.5], + "53": [0, 0.64444, 0, 0, 0.5], + "54": [0, 0.64444, 0, 0, 0.5], + "55": [0, 0.64444, 0, 0, 0.5], + "56": [0, 0.64444, 0, 0, 0.5], + "57": [0, 0.64444, 0, 0, 0.5], + "58": [0, 0.43056, 0, 0, 0.27778], + "59": [0.19444, 0.43056, 0, 0, 0.27778], + "60": [0.0391, 0.5391, 0, 0, 0.77778], + "61": [-0.13313, 0.36687, 0, 0, 0.77778], + "62": [0.0391, 0.5391, 0, 0, 0.77778], + "63": [0, 0.69444, 0, 0, 0.47222], + "64": [0, 0.69444, 0, 0, 0.77778], + "65": [0, 0.68333, 0, 0, 0.75], + "66": [0, 0.68333, 0, 0, 0.70834], + "67": [0, 0.68333, 0, 0, 0.72222], + "68": [0, 0.68333, 0, 0, 0.76389], + "69": [0, 0.68333, 0, 0, 0.68056], + "70": [0, 0.68333, 0, 0, 0.65278], + "71": [0, 0.68333, 0, 0, 0.78472], + "72": [0, 0.68333, 0, 0, 0.75], + "73": [0, 0.68333, 0, 0, 0.36111], + "74": [0, 0.68333, 0, 0, 0.51389], + "75": [0, 0.68333, 0, 0, 0.77778], + "76": [0, 0.68333, 0, 0, 0.625], + "77": [0, 0.68333, 0, 0, 0.91667], + "78": [0, 0.68333, 0, 0, 0.75], + "79": [0, 0.68333, 0, 0, 0.77778], + "80": [0, 0.68333, 0, 0, 0.68056], + "81": [0.19444, 0.68333, 0, 0, 0.77778], + "82": [0, 0.68333, 0, 0, 0.73611], + "83": [0, 0.68333, 0, 0, 0.55556], + "84": [0, 0.68333, 0, 0, 0.72222], + "85": [0, 0.68333, 0, 0, 0.75], + "86": [0, 0.68333, 0.01389, 0, 0.75], + "87": [0, 0.68333, 0.01389, 0, 1.02778], + "88": [0, 0.68333, 0, 0, 0.75], + "89": [0, 0.68333, 0.025, 0, 0.75], + "90": [0, 0.68333, 0, 0, 0.61111], + "91": [0.25, 0.75, 0, 0, 0.27778], + "92": [0.25, 0.75, 0, 0, 0.5], + "93": [0.25, 0.75, 0, 0, 0.27778], + "94": [0, 0.69444, 0, 0, 0.5], + "95": [0.31, 0.12056, 0.02778, 0, 0.5], + "97": [0, 0.43056, 0, 0, 0.5], + "98": [0, 0.69444, 0, 0, 0.55556], + "99": [0, 0.43056, 0, 0, 0.44445], + "100": [0, 0.69444, 0, 0, 0.55556], + "101": [0, 0.43056, 0, 0, 0.44445], + "102": [0, 0.69444, 0.07778, 0, 0.30556], + "103": [0.19444, 0.43056, 0.01389, 0, 0.5], + "104": [0, 0.69444, 0, 0, 0.55556], + "105": [0, 0.66786, 0, 0, 0.27778], + "106": [0.19444, 0.66786, 0, 0, 0.30556], + "107": [0, 0.69444, 0, 0, 0.52778], + "108": [0, 0.69444, 0, 0, 0.27778], + "109": [0, 0.43056, 0, 0, 0.83334], + "110": [0, 0.43056, 0, 0, 0.55556], + "111": [0, 0.43056, 0, 0, 0.5], + "112": [0.19444, 0.43056, 0, 0, 0.55556], + "113": [0.19444, 0.43056, 0, 0, 0.52778], + "114": [0, 0.43056, 0, 0, 0.39167], + "115": [0, 0.43056, 0, 0, 0.39445], + "116": [0, 0.61508, 0, 0, 0.38889], + "117": [0, 0.43056, 0, 0, 0.55556], + "118": [0, 0.43056, 0.01389, 0, 0.52778], + "119": [0, 0.43056, 0.01389, 0, 0.72222], + "120": [0, 0.43056, 0, 0, 0.52778], + "121": [0.19444, 0.43056, 0.01389, 0, 0.52778], + "122": [0, 0.43056, 0, 0, 0.44445], + "123": [0.25, 0.75, 0, 0, 0.5], + "124": [0.25, 0.75, 0, 0, 0.27778], + "125": [0.25, 0.75, 0, 0, 0.5], + "126": [0.35, 0.31786, 0, 0, 0.5], + "160": [0, 0, 0, 0, 0.25], + "167": [0.19444, 0.69444, 0, 0, 0.44445], + "168": [0, 0.66786, 0, 0, 0.5], + "172": [0, 0.43056, 0, 0, 0.66667], + "176": [0, 0.69444, 0, 0, 0.75], + "177": [0.08333, 0.58333, 0, 0, 0.77778], + "182": [0.19444, 0.69444, 0, 0, 0.61111], + "184": [0.17014, 0, 0, 0, 0.44445], + "198": [0, 0.68333, 0, 0, 0.90278], + "215": [0.08333, 0.58333, 0, 0, 0.77778], + "216": [0.04861, 0.73194, 0, 0, 0.77778], + "223": [0, 0.69444, 0, 0, 0.5], + "230": [0, 0.43056, 0, 0, 0.72222], + "247": [0.08333, 0.58333, 0, 0, 0.77778], + "248": [0.09722, 0.52778, 0, 0, 0.5], + "305": [0, 0.43056, 0, 0, 0.27778], + "338": [0, 0.68333, 0, 0, 1.01389], + "339": [0, 0.43056, 0, 0, 0.77778], + "567": [0.19444, 0.43056, 0, 0, 0.30556], + "710": [0, 0.69444, 0, 0, 0.5], + "711": [0, 0.62847, 0, 0, 0.5], + "713": [0, 0.56778, 0, 0, 0.5], + "714": [0, 0.69444, 0, 0, 0.5], + "715": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0, 0, 0.5], + "729": [0, 0.66786, 0, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.75], + "732": [0, 0.66786, 0, 0, 0.5], + "733": [0, 0.69444, 0, 0, 0.5], + "915": [0, 0.68333, 0, 0, 0.625], + "916": [0, 0.68333, 0, 0, 0.83334], + "920": [0, 0.68333, 0, 0, 0.77778], + "923": [0, 0.68333, 0, 0, 0.69445], + "926": [0, 0.68333, 0, 0, 0.66667], + "928": [0, 0.68333, 0, 0, 0.75], + "931": [0, 0.68333, 0, 0, 0.72222], + "933": [0, 0.68333, 0, 0, 0.77778], + "934": [0, 0.68333, 0, 0, 0.72222], + "936": [0, 0.68333, 0, 0, 0.77778], + "937": [0, 0.68333, 0, 0, 0.72222], + "8211": [0, 0.43056, 0.02778, 0, 0.5], + "8212": [0, 0.43056, 0.02778, 0, 1.0], + "8216": [0, 0.69444, 0, 0, 0.27778], + "8217": [0, 0.69444, 0, 0, 0.27778], + "8220": [0, 0.69444, 0, 0, 0.5], + "8221": [0, 0.69444, 0, 0, 0.5], + "8224": [0.19444, 0.69444, 0, 0, 0.44445], + "8225": [0.19444, 0.69444, 0, 0, 0.44445], + "8230": [0, 0.12, 0, 0, 1.172], + "8242": [0, 0.55556, 0, 0, 0.275], + "8407": [0, 0.71444, 0.15382, 0, 0.5], + "8463": [0, 0.68889, 0, 0, 0.54028], + "8465": [0, 0.69444, 0, 0, 0.72222], + "8467": [0, 0.69444, 0, 0.11111, 0.41667], + "8472": [0.19444, 0.43056, 0, 0.11111, 0.63646], + "8476": [0, 0.69444, 0, 0, 0.72222], + "8501": [0, 0.69444, 0, 0, 0.61111], + "8592": [-0.13313, 0.36687, 0, 0, 1.0], + "8593": [0.19444, 0.69444, 0, 0, 0.5], + "8594": [-0.13313, 0.36687, 0, 0, 1.0], + "8595": [0.19444, 0.69444, 0, 0, 0.5], + "8596": [-0.13313, 0.36687, 0, 0, 1.0], + "8597": [0.25, 0.75, 0, 0, 0.5], + "8598": [0.19444, 0.69444, 0, 0, 1.0], + "8599": [0.19444, 0.69444, 0, 0, 1.0], + "8600": [0.19444, 0.69444, 0, 0, 1.0], + "8601": [0.19444, 0.69444, 0, 0, 1.0], + "8614": [0.011, 0.511, 0, 0, 1.0], + "8617": [0.011, 0.511, 0, 0, 1.126], + "8618": [0.011, 0.511, 0, 0, 1.126], + "8636": [-0.13313, 0.36687, 0, 0, 1.0], + "8637": [-0.13313, 0.36687, 0, 0, 1.0], + "8640": [-0.13313, 0.36687, 0, 0, 1.0], + "8641": [-0.13313, 0.36687, 0, 0, 1.0], + "8652": [0.011, 0.671, 0, 0, 1.0], + "8656": [-0.13313, 0.36687, 0, 0, 1.0], + "8657": [0.19444, 0.69444, 0, 0, 0.61111], + "8658": [-0.13313, 0.36687, 0, 0, 1.0], + "8659": [0.19444, 0.69444, 0, 0, 0.61111], + "8660": [-0.13313, 0.36687, 0, 0, 1.0], + "8661": [0.25, 0.75, 0, 0, 0.61111], + "8704": [0, 0.69444, 0, 0, 0.55556], + "8706": [0, 0.69444, 0.05556, 0.08334, 0.5309], + "8707": [0, 0.69444, 0, 0, 0.55556], + "8709": [0.05556, 0.75, 0, 0, 0.5], + "8711": [0, 0.68333, 0, 0, 0.83334], + "8712": [0.0391, 0.5391, 0, 0, 0.66667], + "8715": [0.0391, 0.5391, 0, 0, 0.66667], + "8722": [0.08333, 0.58333, 0, 0, 0.77778], + "8723": [0.08333, 0.58333, 0, 0, 0.77778], + "8725": [0.25, 0.75, 0, 0, 0.5], + "8726": [0.25, 0.75, 0, 0, 0.5], + "8727": [-0.03472, 0.46528, 0, 0, 0.5], + "8728": [-0.05555, 0.44445, 0, 0, 0.5], + "8729": [-0.05555, 0.44445, 0, 0, 0.5], + "8730": [0.2, 0.8, 0, 0, 0.83334], + "8733": [0, 0.43056, 0, 0, 0.77778], + "8734": [0, 0.43056, 0, 0, 1.0], + "8736": [0, 0.69224, 0, 0, 0.72222], + "8739": [0.25, 0.75, 0, 0, 0.27778], + "8741": [0.25, 0.75, 0, 0, 0.5], + "8743": [0, 0.55556, 0, 0, 0.66667], + "8744": [0, 0.55556, 0, 0, 0.66667], + "8745": [0, 0.55556, 0, 0, 0.66667], + "8746": [0, 0.55556, 0, 0, 0.66667], + "8747": [0.19444, 0.69444, 0.11111, 0, 0.41667], + "8764": [-0.13313, 0.36687, 0, 0, 0.77778], + "8768": [0.19444, 0.69444, 0, 0, 0.27778], + "8771": [-0.03625, 0.46375, 0, 0, 0.77778], + "8773": [-0.022, 0.589, 0, 0, 1.0], + "8776": [-0.01688, 0.48312, 0, 0, 0.77778], + "8781": [-0.03625, 0.46375, 0, 0, 0.77778], + "8784": [-0.133, 0.67, 0, 0, 0.778], + "8801": [-0.03625, 0.46375, 0, 0, 0.77778], + "8804": [0.13597, 0.63597, 0, 0, 0.77778], + "8805": [0.13597, 0.63597, 0, 0, 0.77778], + "8810": [0.0391, 0.5391, 0, 0, 1.0], + "8811": [0.0391, 0.5391, 0, 0, 1.0], + "8826": [0.0391, 0.5391, 0, 0, 0.77778], + "8827": [0.0391, 0.5391, 0, 0, 0.77778], + "8834": [0.0391, 0.5391, 0, 0, 0.77778], + "8835": [0.0391, 0.5391, 0, 0, 0.77778], + "8838": [0.13597, 0.63597, 0, 0, 0.77778], + "8839": [0.13597, 0.63597, 0, 0, 0.77778], + "8846": [0, 0.55556, 0, 0, 0.66667], + "8849": [0.13597, 0.63597, 0, 0, 0.77778], + "8850": [0.13597, 0.63597, 0, 0, 0.77778], + "8851": [0, 0.55556, 0, 0, 0.66667], + "8852": [0, 0.55556, 0, 0, 0.66667], + "8853": [0.08333, 0.58333, 0, 0, 0.77778], + "8854": [0.08333, 0.58333, 0, 0, 0.77778], + "8855": [0.08333, 0.58333, 0, 0, 0.77778], + "8856": [0.08333, 0.58333, 0, 0, 0.77778], + "8857": [0.08333, 0.58333, 0, 0, 0.77778], + "8866": [0, 0.69444, 0, 0, 0.61111], + "8867": [0, 0.69444, 0, 0, 0.61111], + "8868": [0, 0.69444, 0, 0, 0.77778], + "8869": [0, 0.69444, 0, 0, 0.77778], + "8872": [0.249, 0.75, 0, 0, 0.867], + "8900": [-0.05555, 0.44445, 0, 0, 0.5], + "8901": [-0.05555, 0.44445, 0, 0, 0.27778], + "8902": [-0.03472, 0.46528, 0, 0, 0.5], + "8904": [0.005, 0.505, 0, 0, 0.9], + "8942": [0.03, 0.9, 0, 0, 0.278], + "8943": [-0.19, 0.31, 0, 0, 1.172], + "8945": [-0.1, 0.82, 0, 0, 1.282], + "8968": [0.25, 0.75, 0, 0, 0.44445], + "8969": [0.25, 0.75, 0, 0, 0.44445], + "8970": [0.25, 0.75, 0, 0, 0.44445], + "8971": [0.25, 0.75, 0, 0, 0.44445], + "8994": [-0.14236, 0.35764, 0, 0, 1.0], + "8995": [-0.14236, 0.35764, 0, 0, 1.0], + "9136": [0.244, 0.744, 0, 0, 0.412], + "9137": [0.244, 0.744, 0, 0, 0.412], + "9651": [0.19444, 0.69444, 0, 0, 0.88889], + "9657": [-0.03472, 0.46528, 0, 0, 0.5], + "9661": [0.19444, 0.69444, 0, 0, 0.88889], + "9667": [-0.03472, 0.46528, 0, 0, 0.5], + "9711": [0.19444, 0.69444, 0, 0, 1.0], + "9824": [0.12963, 0.69444, 0, 0, 0.77778], + "9825": [0.12963, 0.69444, 0, 0, 0.77778], + "9826": [0.12963, 0.69444, 0, 0, 0.77778], + "9827": [0.12963, 0.69444, 0, 0, 0.77778], + "9837": [0, 0.75, 0, 0, 0.38889], + "9838": [0.19444, 0.69444, 0, 0, 0.38889], + "9839": [0.19444, 0.69444, 0, 0, 0.38889], + "10216": [0.25, 0.75, 0, 0, 0.38889], + "10217": [0.25, 0.75, 0, 0, 0.38889], + "10222": [0.244, 0.744, 0, 0, 0.412], + "10223": [0.244, 0.744, 0, 0, 0.412], + "10229": [0.011, 0.511, 0, 0, 1.609], + "10230": [0.011, 0.511, 0, 0, 1.638], + "10231": [0.011, 0.511, 0, 0, 1.859], + "10232": [0.024, 0.525, 0, 0, 1.609], + "10233": [0.024, 0.525, 0, 0, 1.638], + "10234": [0.024, 0.525, 0, 0, 1.858], + "10236": [0.011, 0.511, 0, 0, 1.638], + "10815": [0, 0.68333, 0, 0, 0.75], + "10927": [0.13597, 0.63597, 0, 0, 0.77778], + "10928": [0.13597, 0.63597, 0, 0, 0.77778], + "57376": [0.19444, 0.69444, 0, 0, 0] + }, + "Math-BoldItalic": { + "65": [0, 0.68611, 0, 0, 0.86944], + "66": [0, 0.68611, 0.04835, 0, 0.8664], + "67": [0, 0.68611, 0.06979, 0, 0.81694], + "68": [0, 0.68611, 0.03194, 0, 0.93812], + "69": [0, 0.68611, 0.05451, 0, 0.81007], + "70": [0, 0.68611, 0.15972, 0, 0.68889], + "71": [0, 0.68611, 0, 0, 0.88673], + "72": [0, 0.68611, 0.08229, 0, 0.98229], + "73": [0, 0.68611, 0.07778, 0, 0.51111], + "74": [0, 0.68611, 0.10069, 0, 0.63125], + "75": [0, 0.68611, 0.06979, 0, 0.97118], + "76": [0, 0.68611, 0, 0, 0.75555], + "77": [0, 0.68611, 0.11424, 0, 1.14201], + "78": [0, 0.68611, 0.11424, 0, 0.95034], + "79": [0, 0.68611, 0.03194, 0, 0.83666], + "80": [0, 0.68611, 0.15972, 0, 0.72309], + "81": [0.19444, 0.68611, 0, 0, 0.86861], + "82": [0, 0.68611, 0.00421, 0, 0.87235], + "83": [0, 0.68611, 0.05382, 0, 0.69271], + "84": [0, 0.68611, 0.15972, 0, 0.63663], + "85": [0, 0.68611, 0.11424, 0, 0.80027], + "86": [0, 0.68611, 0.25555, 0, 0.67778], + "87": [0, 0.68611, 0.15972, 0, 1.09305], + "88": [0, 0.68611, 0.07778, 0, 0.94722], + "89": [0, 0.68611, 0.25555, 0, 0.67458], + "90": [0, 0.68611, 0.06979, 0, 0.77257], + "97": [0, 0.44444, 0, 0, 0.63287], + "98": [0, 0.69444, 0, 0, 0.52083], + "99": [0, 0.44444, 0, 0, 0.51342], + "100": [0, 0.69444, 0, 0, 0.60972], + "101": [0, 0.44444, 0, 0, 0.55361], + "102": [0.19444, 0.69444, 0.11042, 0, 0.56806], + "103": [0.19444, 0.44444, 0.03704, 0, 0.5449], + "104": [0, 0.69444, 0, 0, 0.66759], + "105": [0, 0.69326, 0, 0, 0.4048], + "106": [0.19444, 0.69326, 0.0622, 0, 0.47083], + "107": [0, 0.69444, 0.01852, 0, 0.6037], + "108": [0, 0.69444, 0.0088, 0, 0.34815], + "109": [0, 0.44444, 0, 0, 1.0324], + "110": [0, 0.44444, 0, 0, 0.71296], + "111": [0, 0.44444, 0, 0, 0.58472], + "112": [0.19444, 0.44444, 0, 0, 0.60092], + "113": [0.19444, 0.44444, 0.03704, 0, 0.54213], + "114": [0, 0.44444, 0.03194, 0, 0.5287], + "115": [0, 0.44444, 0, 0, 0.53125], + "116": [0, 0.63492, 0, 0, 0.41528], + "117": [0, 0.44444, 0, 0, 0.68102], + "118": [0, 0.44444, 0.03704, 0, 0.56666], + "119": [0, 0.44444, 0.02778, 0, 0.83148], + "120": [0, 0.44444, 0, 0, 0.65903], + "121": [0.19444, 0.44444, 0.03704, 0, 0.59028], + "122": [0, 0.44444, 0.04213, 0, 0.55509], + "915": [0, 0.68611, 0.15972, 0, 0.65694], + "916": [0, 0.68611, 0, 0, 0.95833], + "920": [0, 0.68611, 0.03194, 0, 0.86722], + "923": [0, 0.68611, 0, 0, 0.80555], + "926": [0, 0.68611, 0.07458, 0, 0.84125], + "928": [0, 0.68611, 0.08229, 0, 0.98229], + "931": [0, 0.68611, 0.05451, 0, 0.88507], + "933": [0, 0.68611, 0.15972, 0, 0.67083], + "934": [0, 0.68611, 0, 0, 0.76666], + "936": [0, 0.68611, 0.11653, 0, 0.71402], + "937": [0, 0.68611, 0.04835, 0, 0.8789], + "945": [0, 0.44444, 0, 0, 0.76064], + "946": [0.19444, 0.69444, 0.03403, 0, 0.65972], + "947": [0.19444, 0.44444, 0.06389, 0, 0.59003], + "948": [0, 0.69444, 0.03819, 0, 0.52222], + "949": [0, 0.44444, 0, 0, 0.52882], + "950": [0.19444, 0.69444, 0.06215, 0, 0.50833], + "951": [0.19444, 0.44444, 0.03704, 0, 0.6], + "952": [0, 0.69444, 0.03194, 0, 0.5618], + "953": [0, 0.44444, 0, 0, 0.41204], + "954": [0, 0.44444, 0, 0, 0.66759], + "955": [0, 0.69444, 0, 0, 0.67083], + "956": [0.19444, 0.44444, 0, 0, 0.70787], + "957": [0, 0.44444, 0.06898, 0, 0.57685], + "958": [0.19444, 0.69444, 0.03021, 0, 0.50833], + "959": [0, 0.44444, 0, 0, 0.58472], + "960": [0, 0.44444, 0.03704, 0, 0.68241], + "961": [0.19444, 0.44444, 0, 0, 0.6118], + "962": [0.09722, 0.44444, 0.07917, 0, 0.42361], + "963": [0, 0.44444, 0.03704, 0, 0.68588], + "964": [0, 0.44444, 0.13472, 0, 0.52083], + "965": [0, 0.44444, 0.03704, 0, 0.63055], + "966": [0.19444, 0.44444, 0, 0, 0.74722], + "967": [0.19444, 0.44444, 0, 0, 0.71805], + "968": [0.19444, 0.69444, 0.03704, 0, 0.75833], + "969": [0, 0.44444, 0.03704, 0, 0.71782], + "977": [0, 0.69444, 0, 0, 0.69155], + "981": [0.19444, 0.69444, 0, 0, 0.7125], + "982": [0, 0.44444, 0.03194, 0, 0.975], + "1009": [0.19444, 0.44444, 0, 0, 0.6118], + "1013": [0, 0.44444, 0, 0, 0.48333] + }, + "Math-Italic": { + "65": [0, 0.68333, 0, 0.13889, 0.75], + "66": [0, 0.68333, 0.05017, 0.08334, 0.75851], + "67": [0, 0.68333, 0.07153, 0.08334, 0.71472], + "68": [0, 0.68333, 0.02778, 0.05556, 0.82792], + "69": [0, 0.68333, 0.05764, 0.08334, 0.7382], + "70": [0, 0.68333, 0.13889, 0.08334, 0.64306], + "71": [0, 0.68333, 0, 0.08334, 0.78625], + "72": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "73": [0, 0.68333, 0.07847, 0.11111, 0.43958], + "74": [0, 0.68333, 0.09618, 0.16667, 0.55451], + "75": [0, 0.68333, 0.07153, 0.05556, 0.84931], + "76": [0, 0.68333, 0, 0.02778, 0.68056], + "77": [0, 0.68333, 0.10903, 0.08334, 0.97014], + "78": [0, 0.68333, 0.10903, 0.08334, 0.80347], + "79": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "80": [0, 0.68333, 0.13889, 0.08334, 0.64201], + "81": [0.19444, 0.68333, 0, 0.08334, 0.79056], + "82": [0, 0.68333, 0.00773, 0.08334, 0.75929], + "83": [0, 0.68333, 0.05764, 0.08334, 0.6132], + "84": [0, 0.68333, 0.13889, 0.08334, 0.58438], + "85": [0, 0.68333, 0.10903, 0.02778, 0.68278], + "86": [0, 0.68333, 0.22222, 0, 0.58333], + "87": [0, 0.68333, 0.13889, 0, 0.94445], + "88": [0, 0.68333, 0.07847, 0.08334, 0.82847], + "89": [0, 0.68333, 0.22222, 0, 0.58056], + "90": [0, 0.68333, 0.07153, 0.08334, 0.68264], + "97": [0, 0.43056, 0, 0, 0.52859], + "98": [0, 0.69444, 0, 0, 0.42917], + "99": [0, 0.43056, 0, 0.05556, 0.43276], + "100": [0, 0.69444, 0, 0.16667, 0.52049], + "101": [0, 0.43056, 0, 0.05556, 0.46563], + "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + "104": [0, 0.69444, 0, 0, 0.57616], + "105": [0, 0.65952, 0, 0, 0.34451], + "106": [0.19444, 0.65952, 0.05724, 0, 0.41181], + "107": [0, 0.69444, 0.03148, 0, 0.5206], + "108": [0, 0.69444, 0.01968, 0.08334, 0.29838], + "109": [0, 0.43056, 0, 0, 0.87801], + "110": [0, 0.43056, 0, 0, 0.60023], + "111": [0, 0.43056, 0, 0.05556, 0.48472], + "112": [0.19444, 0.43056, 0, 0.08334, 0.50313], + "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + "114": [0, 0.43056, 0.02778, 0.05556, 0.45116], + "115": [0, 0.43056, 0, 0.05556, 0.46875], + "116": [0, 0.61508, 0, 0.08334, 0.36111], + "117": [0, 0.43056, 0, 0.02778, 0.57246], + "118": [0, 0.43056, 0.03588, 0.02778, 0.48472], + "119": [0, 0.43056, 0.02691, 0.08334, 0.71592], + "120": [0, 0.43056, 0, 0.02778, 0.57153], + "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + "122": [0, 0.43056, 0.04398, 0.05556, 0.46505], + "915": [0, 0.68333, 0.13889, 0.08334, 0.61528], + "916": [0, 0.68333, 0, 0.16667, 0.83334], + "920": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "923": [0, 0.68333, 0, 0.16667, 0.69445], + "926": [0, 0.68333, 0.07569, 0.08334, 0.74236], + "928": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "931": [0, 0.68333, 0.05764, 0.08334, 0.77986], + "933": [0, 0.68333, 0.13889, 0.05556, 0.58333], + "934": [0, 0.68333, 0, 0.08334, 0.66667], + "936": [0, 0.68333, 0.11, 0.05556, 0.61222], + "937": [0, 0.68333, 0.05017, 0.08334, 0.7724], + "945": [0, 0.43056, 0.0037, 0.02778, 0.6397], + "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + "947": [0.19444, 0.43056, 0.05556, 0, 0.51773], + "948": [0, 0.69444, 0.03785, 0.05556, 0.44444], + "949": [0, 0.43056, 0, 0.08334, 0.46632], + "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + "952": [0, 0.69444, 0.02778, 0.08334, 0.46944], + "953": [0, 0.43056, 0, 0.05556, 0.35394], + "954": [0, 0.43056, 0, 0, 0.57616], + "955": [0, 0.69444, 0, 0, 0.58334], + "956": [0.19444, 0.43056, 0, 0.02778, 0.60255], + "957": [0, 0.43056, 0.06366, 0.02778, 0.49398], + "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + "959": [0, 0.43056, 0, 0.05556, 0.48472], + "960": [0, 0.43056, 0.03588, 0, 0.57003], + "961": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + "963": [0, 0.43056, 0.03588, 0, 0.57141], + "964": [0, 0.43056, 0.1132, 0.02778, 0.43715], + "965": [0, 0.43056, 0.03588, 0.02778, 0.54028], + "966": [0.19444, 0.43056, 0, 0.08334, 0.65417], + "967": [0.19444, 0.43056, 0, 0.05556, 0.62569], + "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + "969": [0, 0.43056, 0.03588, 0, 0.62245], + "977": [0, 0.69444, 0, 0.08334, 0.59144], + "981": [0.19444, 0.69444, 0, 0.08334, 0.59583], + "982": [0, 0.43056, 0.02778, 0, 0.82813], + "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "1013": [0, 0.43056, 0, 0.05556, 0.4059] + }, + "Math-Regular": { + "65": [0, 0.68333, 0, 0.13889, 0.75], + "66": [0, 0.68333, 0.05017, 0.08334, 0.75851], + "67": [0, 0.68333, 0.07153, 0.08334, 0.71472], + "68": [0, 0.68333, 0.02778, 0.05556, 0.82792], + "69": [0, 0.68333, 0.05764, 0.08334, 0.7382], + "70": [0, 0.68333, 0.13889, 0.08334, 0.64306], + "71": [0, 0.68333, 0, 0.08334, 0.78625], + "72": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "73": [0, 0.68333, 0.07847, 0.11111, 0.43958], + "74": [0, 0.68333, 0.09618, 0.16667, 0.55451], + "75": [0, 0.68333, 0.07153, 0.05556, 0.84931], + "76": [0, 0.68333, 0, 0.02778, 0.68056], + "77": [0, 0.68333, 0.10903, 0.08334, 0.97014], + "78": [0, 0.68333, 0.10903, 0.08334, 0.80347], + "79": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "80": [0, 0.68333, 0.13889, 0.08334, 0.64201], + "81": [0.19444, 0.68333, 0, 0.08334, 0.79056], + "82": [0, 0.68333, 0.00773, 0.08334, 0.75929], + "83": [0, 0.68333, 0.05764, 0.08334, 0.6132], + "84": [0, 0.68333, 0.13889, 0.08334, 0.58438], + "85": [0, 0.68333, 0.10903, 0.02778, 0.68278], + "86": [0, 0.68333, 0.22222, 0, 0.58333], + "87": [0, 0.68333, 0.13889, 0, 0.94445], + "88": [0, 0.68333, 0.07847, 0.08334, 0.82847], + "89": [0, 0.68333, 0.22222, 0, 0.58056], + "90": [0, 0.68333, 0.07153, 0.08334, 0.68264], + "97": [0, 0.43056, 0, 0, 0.52859], + "98": [0, 0.69444, 0, 0, 0.42917], + "99": [0, 0.43056, 0, 0.05556, 0.43276], + "100": [0, 0.69444, 0, 0.16667, 0.52049], + "101": [0, 0.43056, 0, 0.05556, 0.46563], + "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + "104": [0, 0.69444, 0, 0, 0.57616], + "105": [0, 0.65952, 0, 0, 0.34451], + "106": [0.19444, 0.65952, 0.05724, 0, 0.41181], + "107": [0, 0.69444, 0.03148, 0, 0.5206], + "108": [0, 0.69444, 0.01968, 0.08334, 0.29838], + "109": [0, 0.43056, 0, 0, 0.87801], + "110": [0, 0.43056, 0, 0, 0.60023], + "111": [0, 0.43056, 0, 0.05556, 0.48472], + "112": [0.19444, 0.43056, 0, 0.08334, 0.50313], + "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + "114": [0, 0.43056, 0.02778, 0.05556, 0.45116], + "115": [0, 0.43056, 0, 0.05556, 0.46875], + "116": [0, 0.61508, 0, 0.08334, 0.36111], + "117": [0, 0.43056, 0, 0.02778, 0.57246], + "118": [0, 0.43056, 0.03588, 0.02778, 0.48472], + "119": [0, 0.43056, 0.02691, 0.08334, 0.71592], + "120": [0, 0.43056, 0, 0.02778, 0.57153], + "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + "122": [0, 0.43056, 0.04398, 0.05556, 0.46505], + "915": [0, 0.68333, 0.13889, 0.08334, 0.61528], + "916": [0, 0.68333, 0, 0.16667, 0.83334], + "920": [0, 0.68333, 0.02778, 0.08334, 0.76278], + "923": [0, 0.68333, 0, 0.16667, 0.69445], + "926": [0, 0.68333, 0.07569, 0.08334, 0.74236], + "928": [0, 0.68333, 0.08125, 0.05556, 0.83125], + "931": [0, 0.68333, 0.05764, 0.08334, 0.77986], + "933": [0, 0.68333, 0.13889, 0.05556, 0.58333], + "934": [0, 0.68333, 0, 0.08334, 0.66667], + "936": [0, 0.68333, 0.11, 0.05556, 0.61222], + "937": [0, 0.68333, 0.05017, 0.08334, 0.7724], + "945": [0, 0.43056, 0.0037, 0.02778, 0.6397], + "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + "947": [0.19444, 0.43056, 0.05556, 0, 0.51773], + "948": [0, 0.69444, 0.03785, 0.05556, 0.44444], + "949": [0, 0.43056, 0, 0.08334, 0.46632], + "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + "952": [0, 0.69444, 0.02778, 0.08334, 0.46944], + "953": [0, 0.43056, 0, 0.05556, 0.35394], + "954": [0, 0.43056, 0, 0, 0.57616], + "955": [0, 0.69444, 0, 0, 0.58334], + "956": [0.19444, 0.43056, 0, 0.02778, 0.60255], + "957": [0, 0.43056, 0.06366, 0.02778, 0.49398], + "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + "959": [0, 0.43056, 0, 0.05556, 0.48472], + "960": [0, 0.43056, 0.03588, 0, 0.57003], + "961": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + "963": [0, 0.43056, 0.03588, 0, 0.57141], + "964": [0, 0.43056, 0.1132, 0.02778, 0.43715], + "965": [0, 0.43056, 0.03588, 0.02778, 0.54028], + "966": [0.19444, 0.43056, 0, 0.08334, 0.65417], + "967": [0.19444, 0.43056, 0, 0.05556, 0.62569], + "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + "969": [0, 0.43056, 0.03588, 0, 0.62245], + "977": [0, 0.69444, 0, 0.08334, 0.59144], + "981": [0.19444, 0.69444, 0, 0.08334, 0.59583], + "982": [0, 0.43056, 0.02778, 0, 0.82813], + "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702], + "1013": [0, 0.43056, 0, 0.05556, 0.4059] + }, + "SansSerif-Bold": { + "33": [0, 0.69444, 0, 0, 0.36667], + "34": [0, 0.69444, 0, 0, 0.55834], + "35": [0.19444, 0.69444, 0, 0, 0.91667], + "36": [0.05556, 0.75, 0, 0, 0.55], + "37": [0.05556, 0.75, 0, 0, 1.02912], + "38": [0, 0.69444, 0, 0, 0.83056], + "39": [0, 0.69444, 0, 0, 0.30556], + "40": [0.25, 0.75, 0, 0, 0.42778], + "41": [0.25, 0.75, 0, 0, 0.42778], + "42": [0, 0.75, 0, 0, 0.55], + "43": [0.11667, 0.61667, 0, 0, 0.85556], + "44": [0.10556, 0.13056, 0, 0, 0.30556], + "45": [0, 0.45833, 0, 0, 0.36667], + "46": [0, 0.13056, 0, 0, 0.30556], + "47": [0.25, 0.75, 0, 0, 0.55], + "48": [0, 0.69444, 0, 0, 0.55], + "49": [0, 0.69444, 0, 0, 0.55], + "50": [0, 0.69444, 0, 0, 0.55], + "51": [0, 0.69444, 0, 0, 0.55], + "52": [0, 0.69444, 0, 0, 0.55], + "53": [0, 0.69444, 0, 0, 0.55], + "54": [0, 0.69444, 0, 0, 0.55], + "55": [0, 0.69444, 0, 0, 0.55], + "56": [0, 0.69444, 0, 0, 0.55], + "57": [0, 0.69444, 0, 0, 0.55], + "58": [0, 0.45833, 0, 0, 0.30556], + "59": [0.10556, 0.45833, 0, 0, 0.30556], + "61": [-0.09375, 0.40625, 0, 0, 0.85556], + "63": [0, 0.69444, 0, 0, 0.51945], + "64": [0, 0.69444, 0, 0, 0.73334], + "65": [0, 0.69444, 0, 0, 0.73334], + "66": [0, 0.69444, 0, 0, 0.73334], + "67": [0, 0.69444, 0, 0, 0.70278], + "68": [0, 0.69444, 0, 0, 0.79445], + "69": [0, 0.69444, 0, 0, 0.64167], + "70": [0, 0.69444, 0, 0, 0.61111], + "71": [0, 0.69444, 0, 0, 0.73334], + "72": [0, 0.69444, 0, 0, 0.79445], + "73": [0, 0.69444, 0, 0, 0.33056], + "74": [0, 0.69444, 0, 0, 0.51945], + "75": [0, 0.69444, 0, 0, 0.76389], + "76": [0, 0.69444, 0, 0, 0.58056], + "77": [0, 0.69444, 0, 0, 0.97778], + "78": [0, 0.69444, 0, 0, 0.79445], + "79": [0, 0.69444, 0, 0, 0.79445], + "80": [0, 0.69444, 0, 0, 0.70278], + "81": [0.10556, 0.69444, 0, 0, 0.79445], + "82": [0, 0.69444, 0, 0, 0.70278], + "83": [0, 0.69444, 0, 0, 0.61111], + "84": [0, 0.69444, 0, 0, 0.73334], + "85": [0, 0.69444, 0, 0, 0.76389], + "86": [0, 0.69444, 0.01528, 0, 0.73334], + "87": [0, 0.69444, 0.01528, 0, 1.03889], + "88": [0, 0.69444, 0, 0, 0.73334], + "89": [0, 0.69444, 0.0275, 0, 0.73334], + "90": [0, 0.69444, 0, 0, 0.67223], + "91": [0.25, 0.75, 0, 0, 0.34306], + "93": [0.25, 0.75, 0, 0, 0.34306], + "94": [0, 0.69444, 0, 0, 0.55], + "95": [0.35, 0.10833, 0.03056, 0, 0.55], + "97": [0, 0.45833, 0, 0, 0.525], + "98": [0, 0.69444, 0, 0, 0.56111], + "99": [0, 0.45833, 0, 0, 0.48889], + "100": [0, 0.69444, 0, 0, 0.56111], + "101": [0, 0.45833, 0, 0, 0.51111], + "102": [0, 0.69444, 0.07639, 0, 0.33611], + "103": [0.19444, 0.45833, 0.01528, 0, 0.55], + "104": [0, 0.69444, 0, 0, 0.56111], + "105": [0, 0.69444, 0, 0, 0.25556], + "106": [0.19444, 0.69444, 0, 0, 0.28611], + "107": [0, 0.69444, 0, 0, 0.53056], + "108": [0, 0.69444, 0, 0, 0.25556], + "109": [0, 0.45833, 0, 0, 0.86667], + "110": [0, 0.45833, 0, 0, 0.56111], + "111": [0, 0.45833, 0, 0, 0.55], + "112": [0.19444, 0.45833, 0, 0, 0.56111], + "113": [0.19444, 0.45833, 0, 0, 0.56111], + "114": [0, 0.45833, 0.01528, 0, 0.37222], + "115": [0, 0.45833, 0, 0, 0.42167], + "116": [0, 0.58929, 0, 0, 0.40417], + "117": [0, 0.45833, 0, 0, 0.56111], + "118": [0, 0.45833, 0.01528, 0, 0.5], + "119": [0, 0.45833, 0.01528, 0, 0.74445], + "120": [0, 0.45833, 0, 0, 0.5], + "121": [0.19444, 0.45833, 0.01528, 0, 0.5], + "122": [0, 0.45833, 0, 0, 0.47639], + "126": [0.35, 0.34444, 0, 0, 0.55], + "168": [0, 0.69444, 0, 0, 0.55], + "176": [0, 0.69444, 0, 0, 0.73334], + "180": [0, 0.69444, 0, 0, 0.55], + "184": [0.17014, 0, 0, 0, 0.48889], + "305": [0, 0.45833, 0, 0, 0.25556], + "567": [0.19444, 0.45833, 0, 0, 0.28611], + "710": [0, 0.69444, 0, 0, 0.55], + "711": [0, 0.63542, 0, 0, 0.55], + "713": [0, 0.63778, 0, 0, 0.55], + "728": [0, 0.69444, 0, 0, 0.55], + "729": [0, 0.69444, 0, 0, 0.30556], + "730": [0, 0.69444, 0, 0, 0.73334], + "732": [0, 0.69444, 0, 0, 0.55], + "733": [0, 0.69444, 0, 0, 0.55], + "915": [0, 0.69444, 0, 0, 0.58056], + "916": [0, 0.69444, 0, 0, 0.91667], + "920": [0, 0.69444, 0, 0, 0.85556], + "923": [0, 0.69444, 0, 0, 0.67223], + "926": [0, 0.69444, 0, 0, 0.73334], + "928": [0, 0.69444, 0, 0, 0.79445], + "931": [0, 0.69444, 0, 0, 0.79445], + "933": [0, 0.69444, 0, 0, 0.85556], + "934": [0, 0.69444, 0, 0, 0.79445], + "936": [0, 0.69444, 0, 0, 0.85556], + "937": [0, 0.69444, 0, 0, 0.79445], + "8211": [0, 0.45833, 0.03056, 0, 0.55], + "8212": [0, 0.45833, 0.03056, 0, 1.10001], + "8216": [0, 0.69444, 0, 0, 0.30556], + "8217": [0, 0.69444, 0, 0, 0.30556], + "8220": [0, 0.69444, 0, 0, 0.55834], + "8221": [0, 0.69444, 0, 0, 0.55834] + }, + "SansSerif-Italic": { + "33": [0, 0.69444, 0.05733, 0, 0.31945], + "34": [0, 0.69444, 0.00316, 0, 0.5], + "35": [0.19444, 0.69444, 0.05087, 0, 0.83334], + "36": [0.05556, 0.75, 0.11156, 0, 0.5], + "37": [0.05556, 0.75, 0.03126, 0, 0.83334], + "38": [0, 0.69444, 0.03058, 0, 0.75834], + "39": [0, 0.69444, 0.07816, 0, 0.27778], + "40": [0.25, 0.75, 0.13164, 0, 0.38889], + "41": [0.25, 0.75, 0.02536, 0, 0.38889], + "42": [0, 0.75, 0.11775, 0, 0.5], + "43": [0.08333, 0.58333, 0.02536, 0, 0.77778], + "44": [0.125, 0.08333, 0, 0, 0.27778], + "45": [0, 0.44444, 0.01946, 0, 0.33333], + "46": [0, 0.08333, 0, 0, 0.27778], + "47": [0.25, 0.75, 0.13164, 0, 0.5], + "48": [0, 0.65556, 0.11156, 0, 0.5], + "49": [0, 0.65556, 0.11156, 0, 0.5], + "50": [0, 0.65556, 0.11156, 0, 0.5], + "51": [0, 0.65556, 0.11156, 0, 0.5], + "52": [0, 0.65556, 0.11156, 0, 0.5], + "53": [0, 0.65556, 0.11156, 0, 0.5], + "54": [0, 0.65556, 0.11156, 0, 0.5], + "55": [0, 0.65556, 0.11156, 0, 0.5], + "56": [0, 0.65556, 0.11156, 0, 0.5], + "57": [0, 0.65556, 0.11156, 0, 0.5], + "58": [0, 0.44444, 0.02502, 0, 0.27778], + "59": [0.125, 0.44444, 0.02502, 0, 0.27778], + "61": [-0.13, 0.37, 0.05087, 0, 0.77778], + "63": [0, 0.69444, 0.11809, 0, 0.47222], + "64": [0, 0.69444, 0.07555, 0, 0.66667], + "65": [0, 0.69444, 0, 0, 0.66667], + "66": [0, 0.69444, 0.08293, 0, 0.66667], + "67": [0, 0.69444, 0.11983, 0, 0.63889], + "68": [0, 0.69444, 0.07555, 0, 0.72223], + "69": [0, 0.69444, 0.11983, 0, 0.59722], + "70": [0, 0.69444, 0.13372, 0, 0.56945], + "71": [0, 0.69444, 0.11983, 0, 0.66667], + "72": [0, 0.69444, 0.08094, 0, 0.70834], + "73": [0, 0.69444, 0.13372, 0, 0.27778], + "74": [0, 0.69444, 0.08094, 0, 0.47222], + "75": [0, 0.69444, 0.11983, 0, 0.69445], + "76": [0, 0.69444, 0, 0, 0.54167], + "77": [0, 0.69444, 0.08094, 0, 0.875], + "78": [0, 0.69444, 0.08094, 0, 0.70834], + "79": [0, 0.69444, 0.07555, 0, 0.73611], + "80": [0, 0.69444, 0.08293, 0, 0.63889], + "81": [0.125, 0.69444, 0.07555, 0, 0.73611], + "82": [0, 0.69444, 0.08293, 0, 0.64584], + "83": [0, 0.69444, 0.09205, 0, 0.55556], + "84": [0, 0.69444, 0.13372, 0, 0.68056], + "85": [0, 0.69444, 0.08094, 0, 0.6875], + "86": [0, 0.69444, 0.1615, 0, 0.66667], + "87": [0, 0.69444, 0.1615, 0, 0.94445], + "88": [0, 0.69444, 0.13372, 0, 0.66667], + "89": [0, 0.69444, 0.17261, 0, 0.66667], + "90": [0, 0.69444, 0.11983, 0, 0.61111], + "91": [0.25, 0.75, 0.15942, 0, 0.28889], + "93": [0.25, 0.75, 0.08719, 0, 0.28889], + "94": [0, 0.69444, 0.0799, 0, 0.5], + "95": [0.35, 0.09444, 0.08616, 0, 0.5], + "97": [0, 0.44444, 0.00981, 0, 0.48056], + "98": [0, 0.69444, 0.03057, 0, 0.51667], + "99": [0, 0.44444, 0.08336, 0, 0.44445], + "100": [0, 0.69444, 0.09483, 0, 0.51667], + "101": [0, 0.44444, 0.06778, 0, 0.44445], + "102": [0, 0.69444, 0.21705, 0, 0.30556], + "103": [0.19444, 0.44444, 0.10836, 0, 0.5], + "104": [0, 0.69444, 0.01778, 0, 0.51667], + "105": [0, 0.67937, 0.09718, 0, 0.23889], + "106": [0.19444, 0.67937, 0.09162, 0, 0.26667], + "107": [0, 0.69444, 0.08336, 0, 0.48889], + "108": [0, 0.69444, 0.09483, 0, 0.23889], + "109": [0, 0.44444, 0.01778, 0, 0.79445], + "110": [0, 0.44444, 0.01778, 0, 0.51667], + "111": [0, 0.44444, 0.06613, 0, 0.5], + "112": [0.19444, 0.44444, 0.0389, 0, 0.51667], + "113": [0.19444, 0.44444, 0.04169, 0, 0.51667], + "114": [0, 0.44444, 0.10836, 0, 0.34167], + "115": [0, 0.44444, 0.0778, 0, 0.38333], + "116": [0, 0.57143, 0.07225, 0, 0.36111], + "117": [0, 0.44444, 0.04169, 0, 0.51667], + "118": [0, 0.44444, 0.10836, 0, 0.46111], + "119": [0, 0.44444, 0.10836, 0, 0.68334], + "120": [0, 0.44444, 0.09169, 0, 0.46111], + "121": [0.19444, 0.44444, 0.10836, 0, 0.46111], + "122": [0, 0.44444, 0.08752, 0, 0.43472], + "126": [0.35, 0.32659, 0.08826, 0, 0.5], + "168": [0, 0.67937, 0.06385, 0, 0.5], + "176": [0, 0.69444, 0, 0, 0.73752], + "184": [0.17014, 0, 0, 0, 0.44445], + "305": [0, 0.44444, 0.04169, 0, 0.23889], + "567": [0.19444, 0.44444, 0.04169, 0, 0.26667], + "710": [0, 0.69444, 0.0799, 0, 0.5], + "711": [0, 0.63194, 0.08432, 0, 0.5], + "713": [0, 0.60889, 0.08776, 0, 0.5], + "714": [0, 0.69444, 0.09205, 0, 0.5], + "715": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0.09483, 0, 0.5], + "729": [0, 0.67937, 0.07774, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.73752], + "732": [0, 0.67659, 0.08826, 0, 0.5], + "733": [0, 0.69444, 0.09205, 0, 0.5], + "915": [0, 0.69444, 0.13372, 0, 0.54167], + "916": [0, 0.69444, 0, 0, 0.83334], + "920": [0, 0.69444, 0.07555, 0, 0.77778], + "923": [0, 0.69444, 0, 0, 0.61111], + "926": [0, 0.69444, 0.12816, 0, 0.66667], + "928": [0, 0.69444, 0.08094, 0, 0.70834], + "931": [0, 0.69444, 0.11983, 0, 0.72222], + "933": [0, 0.69444, 0.09031, 0, 0.77778], + "934": [0, 0.69444, 0.04603, 0, 0.72222], + "936": [0, 0.69444, 0.09031, 0, 0.77778], + "937": [0, 0.69444, 0.08293, 0, 0.72222], + "8211": [0, 0.44444, 0.08616, 0, 0.5], + "8212": [0, 0.44444, 0.08616, 0, 1.0], + "8216": [0, 0.69444, 0.07816, 0, 0.27778], + "8217": [0, 0.69444, 0.07816, 0, 0.27778], + "8220": [0, 0.69444, 0.14205, 0, 0.5], + "8221": [0, 0.69444, 0.00316, 0, 0.5] + }, + "SansSerif-Regular": { + "33": [0, 0.69444, 0, 0, 0.31945], + "34": [0, 0.69444, 0, 0, 0.5], + "35": [0.19444, 0.69444, 0, 0, 0.83334], + "36": [0.05556, 0.75, 0, 0, 0.5], + "37": [0.05556, 0.75, 0, 0, 0.83334], + "38": [0, 0.69444, 0, 0, 0.75834], + "39": [0, 0.69444, 0, 0, 0.27778], + "40": [0.25, 0.75, 0, 0, 0.38889], + "41": [0.25, 0.75, 0, 0, 0.38889], + "42": [0, 0.75, 0, 0, 0.5], + "43": [0.08333, 0.58333, 0, 0, 0.77778], + "44": [0.125, 0.08333, 0, 0, 0.27778], + "45": [0, 0.44444, 0, 0, 0.33333], + "46": [0, 0.08333, 0, 0, 0.27778], + "47": [0.25, 0.75, 0, 0, 0.5], + "48": [0, 0.65556, 0, 0, 0.5], + "49": [0, 0.65556, 0, 0, 0.5], + "50": [0, 0.65556, 0, 0, 0.5], + "51": [0, 0.65556, 0, 0, 0.5], + "52": [0, 0.65556, 0, 0, 0.5], + "53": [0, 0.65556, 0, 0, 0.5], + "54": [0, 0.65556, 0, 0, 0.5], + "55": [0, 0.65556, 0, 0, 0.5], + "56": [0, 0.65556, 0, 0, 0.5], + "57": [0, 0.65556, 0, 0, 0.5], + "58": [0, 0.44444, 0, 0, 0.27778], + "59": [0.125, 0.44444, 0, 0, 0.27778], + "61": [-0.13, 0.37, 0, 0, 0.77778], + "63": [0, 0.69444, 0, 0, 0.47222], + "64": [0, 0.69444, 0, 0, 0.66667], + "65": [0, 0.69444, 0, 0, 0.66667], + "66": [0, 0.69444, 0, 0, 0.66667], + "67": [0, 0.69444, 0, 0, 0.63889], + "68": [0, 0.69444, 0, 0, 0.72223], + "69": [0, 0.69444, 0, 0, 0.59722], + "70": [0, 0.69444, 0, 0, 0.56945], + "71": [0, 0.69444, 0, 0, 0.66667], + "72": [0, 0.69444, 0, 0, 0.70834], + "73": [0, 0.69444, 0, 0, 0.27778], + "74": [0, 0.69444, 0, 0, 0.47222], + "75": [0, 0.69444, 0, 0, 0.69445], + "76": [0, 0.69444, 0, 0, 0.54167], + "77": [0, 0.69444, 0, 0, 0.875], + "78": [0, 0.69444, 0, 0, 0.70834], + "79": [0, 0.69444, 0, 0, 0.73611], + "80": [0, 0.69444, 0, 0, 0.63889], + "81": [0.125, 0.69444, 0, 0, 0.73611], + "82": [0, 0.69444, 0, 0, 0.64584], + "83": [0, 0.69444, 0, 0, 0.55556], + "84": [0, 0.69444, 0, 0, 0.68056], + "85": [0, 0.69444, 0, 0, 0.6875], + "86": [0, 0.69444, 0.01389, 0, 0.66667], + "87": [0, 0.69444, 0.01389, 0, 0.94445], + "88": [0, 0.69444, 0, 0, 0.66667], + "89": [0, 0.69444, 0.025, 0, 0.66667], + "90": [0, 0.69444, 0, 0, 0.61111], + "91": [0.25, 0.75, 0, 0, 0.28889], + "93": [0.25, 0.75, 0, 0, 0.28889], + "94": [0, 0.69444, 0, 0, 0.5], + "95": [0.35, 0.09444, 0.02778, 0, 0.5], + "97": [0, 0.44444, 0, 0, 0.48056], + "98": [0, 0.69444, 0, 0, 0.51667], + "99": [0, 0.44444, 0, 0, 0.44445], + "100": [0, 0.69444, 0, 0, 0.51667], + "101": [0, 0.44444, 0, 0, 0.44445], + "102": [0, 0.69444, 0.06944, 0, 0.30556], + "103": [0.19444, 0.44444, 0.01389, 0, 0.5], + "104": [0, 0.69444, 0, 0, 0.51667], + "105": [0, 0.67937, 0, 0, 0.23889], + "106": [0.19444, 0.67937, 0, 0, 0.26667], + "107": [0, 0.69444, 0, 0, 0.48889], + "108": [0, 0.69444, 0, 0, 0.23889], + "109": [0, 0.44444, 0, 0, 0.79445], + "110": [0, 0.44444, 0, 0, 0.51667], + "111": [0, 0.44444, 0, 0, 0.5], + "112": [0.19444, 0.44444, 0, 0, 0.51667], + "113": [0.19444, 0.44444, 0, 0, 0.51667], + "114": [0, 0.44444, 0.01389, 0, 0.34167], + "115": [0, 0.44444, 0, 0, 0.38333], + "116": [0, 0.57143, 0, 0, 0.36111], + "117": [0, 0.44444, 0, 0, 0.51667], + "118": [0, 0.44444, 0.01389, 0, 0.46111], + "119": [0, 0.44444, 0.01389, 0, 0.68334], + "120": [0, 0.44444, 0, 0, 0.46111], + "121": [0.19444, 0.44444, 0.01389, 0, 0.46111], + "122": [0, 0.44444, 0, 0, 0.43472], + "126": [0.35, 0.32659, 0, 0, 0.5], + "168": [0, 0.67937, 0, 0, 0.5], + "176": [0, 0.69444, 0, 0, 0.66667], + "184": [0.17014, 0, 0, 0, 0.44445], + "305": [0, 0.44444, 0, 0, 0.23889], + "567": [0.19444, 0.44444, 0, 0, 0.26667], + "710": [0, 0.69444, 0, 0, 0.5], + "711": [0, 0.63194, 0, 0, 0.5], + "713": [0, 0.60889, 0, 0, 0.5], + "714": [0, 0.69444, 0, 0, 0.5], + "715": [0, 0.69444, 0, 0, 0.5], + "728": [0, 0.69444, 0, 0, 0.5], + "729": [0, 0.67937, 0, 0, 0.27778], + "730": [0, 0.69444, 0, 0, 0.66667], + "732": [0, 0.67659, 0, 0, 0.5], + "733": [0, 0.69444, 0, 0, 0.5], + "915": [0, 0.69444, 0, 0, 0.54167], + "916": [0, 0.69444, 0, 0, 0.83334], + "920": [0, 0.69444, 0, 0, 0.77778], + "923": [0, 0.69444, 0, 0, 0.61111], + "926": [0, 0.69444, 0, 0, 0.66667], + "928": [0, 0.69444, 0, 0, 0.70834], + "931": [0, 0.69444, 0, 0, 0.72222], + "933": [0, 0.69444, 0, 0, 0.77778], + "934": [0, 0.69444, 0, 0, 0.72222], + "936": [0, 0.69444, 0, 0, 0.77778], + "937": [0, 0.69444, 0, 0, 0.72222], + "8211": [0, 0.44444, 0.02778, 0, 0.5], + "8212": [0, 0.44444, 0.02778, 0, 1.0], + "8216": [0, 0.69444, 0, 0, 0.27778], + "8217": [0, 0.69444, 0, 0, 0.27778], + "8220": [0, 0.69444, 0, 0, 0.5], + "8221": [0, 0.69444, 0, 0, 0.5] + }, + "Script-Regular": { + "65": [0, 0.7, 0.22925, 0, 0.80253], + "66": [0, 0.7, 0.04087, 0, 0.90757], + "67": [0, 0.7, 0.1689, 0, 0.66619], + "68": [0, 0.7, 0.09371, 0, 0.77443], + "69": [0, 0.7, 0.18583, 0, 0.56162], + "70": [0, 0.7, 0.13634, 0, 0.89544], + "71": [0, 0.7, 0.17322, 0, 0.60961], + "72": [0, 0.7, 0.29694, 0, 0.96919], + "73": [0, 0.7, 0.19189, 0, 0.80907], + "74": [0.27778, 0.7, 0.19189, 0, 1.05159], + "75": [0, 0.7, 0.31259, 0, 0.91364], + "76": [0, 0.7, 0.19189, 0, 0.87373], + "77": [0, 0.7, 0.15981, 0, 1.08031], + "78": [0, 0.7, 0.3525, 0, 0.9015], + "79": [0, 0.7, 0.08078, 0, 0.73787], + "80": [0, 0.7, 0.08078, 0, 1.01262], + "81": [0, 0.7, 0.03305, 0, 0.88282], + "82": [0, 0.7, 0.06259, 0, 0.85], + "83": [0, 0.7, 0.19189, 0, 0.86767], + "84": [0, 0.7, 0.29087, 0, 0.74697], + "85": [0, 0.7, 0.25815, 0, 0.79996], + "86": [0, 0.7, 0.27523, 0, 0.62204], + "87": [0, 0.7, 0.27523, 0, 0.80532], + "88": [0, 0.7, 0.26006, 0, 0.94445], + "89": [0, 0.7, 0.2939, 0, 0.70961], + "90": [0, 0.7, 0.24037, 0, 0.8212] + }, + "Size1-Regular": { + "40": [0.35001, 0.85, 0, 0, 0.45834], + "41": [0.35001, 0.85, 0, 0, 0.45834], + "47": [0.35001, 0.85, 0, 0, 0.57778], + "91": [0.35001, 0.85, 0, 0, 0.41667], + "92": [0.35001, 0.85, 0, 0, 0.57778], + "93": [0.35001, 0.85, 0, 0, 0.41667], + "123": [0.35001, 0.85, 0, 0, 0.58334], + "125": [0.35001, 0.85, 0, 0, 0.58334], + "710": [0, 0.72222, 0, 0, 0.55556], + "732": [0, 0.72222, 0, 0, 0.55556], + "770": [0, 0.72222, 0, 0, 0.55556], + "771": [0, 0.72222, 0, 0, 0.55556], + "8214": [-0.00099, 0.601, 0, 0, 0.77778], + "8593": [1e-05, 0.6, 0, 0, 0.66667], + "8595": [1e-05, 0.6, 0, 0, 0.66667], + "8657": [1e-05, 0.6, 0, 0, 0.77778], + "8659": [1e-05, 0.6, 0, 0, 0.77778], + "8719": [0.25001, 0.75, 0, 0, 0.94445], + "8720": [0.25001, 0.75, 0, 0, 0.94445], + "8721": [0.25001, 0.75, 0, 0, 1.05556], + "8730": [0.35001, 0.85, 0, 0, 1.0], + "8739": [-0.00599, 0.606, 0, 0, 0.33333], + "8741": [-0.00599, 0.606, 0, 0, 0.55556], + "8747": [0.30612, 0.805, 0.19445, 0, 0.47222], + "8748": [0.306, 0.805, 0.19445, 0, 0.47222], + "8749": [0.306, 0.805, 0.19445, 0, 0.47222], + "8750": [0.30612, 0.805, 0.19445, 0, 0.47222], + "8896": [0.25001, 0.75, 0, 0, 0.83334], + "8897": [0.25001, 0.75, 0, 0, 0.83334], + "8898": [0.25001, 0.75, 0, 0, 0.83334], + "8899": [0.25001, 0.75, 0, 0, 0.83334], + "8968": [0.35001, 0.85, 0, 0, 0.47222], + "8969": [0.35001, 0.85, 0, 0, 0.47222], + "8970": [0.35001, 0.85, 0, 0, 0.47222], + "8971": [0.35001, 0.85, 0, 0, 0.47222], + "9168": [-0.00099, 0.601, 0, 0, 0.66667], + "10216": [0.35001, 0.85, 0, 0, 0.47222], + "10217": [0.35001, 0.85, 0, 0, 0.47222], + "10752": [0.25001, 0.75, 0, 0, 1.11111], + "10753": [0.25001, 0.75, 0, 0, 1.11111], + "10754": [0.25001, 0.75, 0, 0, 1.11111], + "10756": [0.25001, 0.75, 0, 0, 0.83334], + "10758": [0.25001, 0.75, 0, 0, 0.83334] + }, + "Size2-Regular": { + "40": [0.65002, 1.15, 0, 0, 0.59722], + "41": [0.65002, 1.15, 0, 0, 0.59722], + "47": [0.65002, 1.15, 0, 0, 0.81111], + "91": [0.65002, 1.15, 0, 0, 0.47222], + "92": [0.65002, 1.15, 0, 0, 0.81111], + "93": [0.65002, 1.15, 0, 0, 0.47222], + "123": [0.65002, 1.15, 0, 0, 0.66667], + "125": [0.65002, 1.15, 0, 0, 0.66667], + "710": [0, 0.75, 0, 0, 1.0], + "732": [0, 0.75, 0, 0, 1.0], + "770": [0, 0.75, 0, 0, 1.0], + "771": [0, 0.75, 0, 0, 1.0], + "8719": [0.55001, 1.05, 0, 0, 1.27778], + "8720": [0.55001, 1.05, 0, 0, 1.27778], + "8721": [0.55001, 1.05, 0, 0, 1.44445], + "8730": [0.65002, 1.15, 0, 0, 1.0], + "8747": [0.86225, 1.36, 0.44445, 0, 0.55556], + "8748": [0.862, 1.36, 0.44445, 0, 0.55556], + "8749": [0.862, 1.36, 0.44445, 0, 0.55556], + "8750": [0.86225, 1.36, 0.44445, 0, 0.55556], + "8896": [0.55001, 1.05, 0, 0, 1.11111], + "8897": [0.55001, 1.05, 0, 0, 1.11111], + "8898": [0.55001, 1.05, 0, 0, 1.11111], + "8899": [0.55001, 1.05, 0, 0, 1.11111], + "8968": [0.65002, 1.15, 0, 0, 0.52778], + "8969": [0.65002, 1.15, 0, 0, 0.52778], + "8970": [0.65002, 1.15, 0, 0, 0.52778], + "8971": [0.65002, 1.15, 0, 0, 0.52778], + "10216": [0.65002, 1.15, 0, 0, 0.61111], + "10217": [0.65002, 1.15, 0, 0, 0.61111], + "10752": [0.55001, 1.05, 0, 0, 1.51112], + "10753": [0.55001, 1.05, 0, 0, 1.51112], + "10754": [0.55001, 1.05, 0, 0, 1.51112], + "10756": [0.55001, 1.05, 0, 0, 1.11111], + "10758": [0.55001, 1.05, 0, 0, 1.11111] + }, + "Size3-Regular": { + "40": [0.95003, 1.45, 0, 0, 0.73611], + "41": [0.95003, 1.45, 0, 0, 0.73611], + "47": [0.95003, 1.45, 0, 0, 1.04445], + "91": [0.95003, 1.45, 0, 0, 0.52778], + "92": [0.95003, 1.45, 0, 0, 1.04445], + "93": [0.95003, 1.45, 0, 0, 0.52778], + "123": [0.95003, 1.45, 0, 0, 0.75], + "125": [0.95003, 1.45, 0, 0, 0.75], + "710": [0, 0.75, 0, 0, 1.44445], + "732": [0, 0.75, 0, 0, 1.44445], + "770": [0, 0.75, 0, 0, 1.44445], + "771": [0, 0.75, 0, 0, 1.44445], + "8730": [0.95003, 1.45, 0, 0, 1.0], + "8968": [0.95003, 1.45, 0, 0, 0.58334], + "8969": [0.95003, 1.45, 0, 0, 0.58334], + "8970": [0.95003, 1.45, 0, 0, 0.58334], + "8971": [0.95003, 1.45, 0, 0, 0.58334], + "10216": [0.95003, 1.45, 0, 0, 0.75], + "10217": [0.95003, 1.45, 0, 0, 0.75] + }, + "Size4-Regular": { + "40": [1.25003, 1.75, 0, 0, 0.79167], + "41": [1.25003, 1.75, 0, 0, 0.79167], + "47": [1.25003, 1.75, 0, 0, 1.27778], + "91": [1.25003, 1.75, 0, 0, 0.58334], + "92": [1.25003, 1.75, 0, 0, 1.27778], + "93": [1.25003, 1.75, 0, 0, 0.58334], + "123": [1.25003, 1.75, 0, 0, 0.80556], + "125": [1.25003, 1.75, 0, 0, 0.80556], + "710": [0, 0.825, 0, 0, 1.8889], + "732": [0, 0.825, 0, 0, 1.8889], + "770": [0, 0.825, 0, 0, 1.8889], + "771": [0, 0.825, 0, 0, 1.8889], + "8730": [1.25003, 1.75, 0, 0, 1.0], + "8968": [1.25003, 1.75, 0, 0, 0.63889], + "8969": [1.25003, 1.75, 0, 0, 0.63889], + "8970": [1.25003, 1.75, 0, 0, 0.63889], + "8971": [1.25003, 1.75, 0, 0, 0.63889], + "9115": [0.64502, 1.155, 0, 0, 0.875], + "9116": [1e-05, 0.6, 0, 0, 0.875], + "9117": [0.64502, 1.155, 0, 0, 0.875], + "9118": [0.64502, 1.155, 0, 0, 0.875], + "9119": [1e-05, 0.6, 0, 0, 0.875], + "9120": [0.64502, 1.155, 0, 0, 0.875], + "9121": [0.64502, 1.155, 0, 0, 0.66667], + "9122": [-0.00099, 0.601, 0, 0, 0.66667], + "9123": [0.64502, 1.155, 0, 0, 0.66667], + "9124": [0.64502, 1.155, 0, 0, 0.66667], + "9125": [-0.00099, 0.601, 0, 0, 0.66667], + "9126": [0.64502, 1.155, 0, 0, 0.66667], + "9127": [1e-05, 0.9, 0, 0, 0.88889], + "9128": [0.65002, 1.15, 0, 0, 0.88889], + "9129": [0.90001, 0, 0, 0, 0.88889], + "9130": [0, 0.3, 0, 0, 0.88889], + "9131": [1e-05, 0.9, 0, 0, 0.88889], + "9132": [0.65002, 1.15, 0, 0, 0.88889], + "9133": [0.90001, 0, 0, 0, 0.88889], + "9143": [0.88502, 0.915, 0, 0, 1.05556], + "10216": [1.25003, 1.75, 0, 0, 0.80556], + "10217": [1.25003, 1.75, 0, 0, 0.80556], + "57344": [-0.00499, 0.605, 0, 0, 1.05556], + "57345": [-0.00499, 0.605, 0, 0, 1.05556], + "57680": [0, 0.12, 0, 0, 0.45], + "57681": [0, 0.12, 0, 0, 0.45], + "57682": [0, 0.12, 0, 0, 0.45], + "57683": [0, 0.12, 0, 0, 0.45] + }, + "Typewriter-Regular": { + "32": [0, 0, 0, 0, 0.525], + "33": [0, 0.61111, 0, 0, 0.525], + "34": [0, 0.61111, 0, 0, 0.525], + "35": [0, 0.61111, 0, 0, 0.525], + "36": [0.08333, 0.69444, 0, 0, 0.525], + "37": [0.08333, 0.69444, 0, 0, 0.525], + "38": [0, 0.61111, 0, 0, 0.525], + "39": [0, 0.61111, 0, 0, 0.525], + "40": [0.08333, 0.69444, 0, 0, 0.525], + "41": [0.08333, 0.69444, 0, 0, 0.525], + "42": [0, 0.52083, 0, 0, 0.525], + "43": [-0.08056, 0.53055, 0, 0, 0.525], + "44": [0.13889, 0.125, 0, 0, 0.525], + "45": [-0.08056, 0.53055, 0, 0, 0.525], + "46": [0, 0.125, 0, 0, 0.525], + "47": [0.08333, 0.69444, 0, 0, 0.525], + "48": [0, 0.61111, 0, 0, 0.525], + "49": [0, 0.61111, 0, 0, 0.525], + "50": [0, 0.61111, 0, 0, 0.525], + "51": [0, 0.61111, 0, 0, 0.525], + "52": [0, 0.61111, 0, 0, 0.525], + "53": [0, 0.61111, 0, 0, 0.525], + "54": [0, 0.61111, 0, 0, 0.525], + "55": [0, 0.61111, 0, 0, 0.525], + "56": [0, 0.61111, 0, 0, 0.525], + "57": [0, 0.61111, 0, 0, 0.525], + "58": [0, 0.43056, 0, 0, 0.525], + "59": [0.13889, 0.43056, 0, 0, 0.525], + "60": [-0.05556, 0.55556, 0, 0, 0.525], + "61": [-0.19549, 0.41562, 0, 0, 0.525], + "62": [-0.05556, 0.55556, 0, 0, 0.525], + "63": [0, 0.61111, 0, 0, 0.525], + "64": [0, 0.61111, 0, 0, 0.525], + "65": [0, 0.61111, 0, 0, 0.525], + "66": [0, 0.61111, 0, 0, 0.525], + "67": [0, 0.61111, 0, 0, 0.525], + "68": [0, 0.61111, 0, 0, 0.525], + "69": [0, 0.61111, 0, 0, 0.525], + "70": [0, 0.61111, 0, 0, 0.525], + "71": [0, 0.61111, 0, 0, 0.525], + "72": [0, 0.61111, 0, 0, 0.525], + "73": [0, 0.61111, 0, 0, 0.525], + "74": [0, 0.61111, 0, 0, 0.525], + "75": [0, 0.61111, 0, 0, 0.525], + "76": [0, 0.61111, 0, 0, 0.525], + "77": [0, 0.61111, 0, 0, 0.525], + "78": [0, 0.61111, 0, 0, 0.525], + "79": [0, 0.61111, 0, 0, 0.525], + "80": [0, 0.61111, 0, 0, 0.525], + "81": [0.13889, 0.61111, 0, 0, 0.525], + "82": [0, 0.61111, 0, 0, 0.525], + "83": [0, 0.61111, 0, 0, 0.525], + "84": [0, 0.61111, 0, 0, 0.525], + "85": [0, 0.61111, 0, 0, 0.525], + "86": [0, 0.61111, 0, 0, 0.525], + "87": [0, 0.61111, 0, 0, 0.525], + "88": [0, 0.61111, 0, 0, 0.525], + "89": [0, 0.61111, 0, 0, 0.525], + "90": [0, 0.61111, 0, 0, 0.525], + "91": [0.08333, 0.69444, 0, 0, 0.525], + "92": [0.08333, 0.69444, 0, 0, 0.525], + "93": [0.08333, 0.69444, 0, 0, 0.525], + "94": [0, 0.61111, 0, 0, 0.525], + "95": [0.09514, 0, 0, 0, 0.525], + "96": [0, 0.61111, 0, 0, 0.525], + "97": [0, 0.43056, 0, 0, 0.525], + "98": [0, 0.61111, 0, 0, 0.525], + "99": [0, 0.43056, 0, 0, 0.525], + "100": [0, 0.61111, 0, 0, 0.525], + "101": [0, 0.43056, 0, 0, 0.525], + "102": [0, 0.61111, 0, 0, 0.525], + "103": [0.22222, 0.43056, 0, 0, 0.525], + "104": [0, 0.61111, 0, 0, 0.525], + "105": [0, 0.61111, 0, 0, 0.525], + "106": [0.22222, 0.61111, 0, 0, 0.525], + "107": [0, 0.61111, 0, 0, 0.525], + "108": [0, 0.61111, 0, 0, 0.525], + "109": [0, 0.43056, 0, 0, 0.525], + "110": [0, 0.43056, 0, 0, 0.525], + "111": [0, 0.43056, 0, 0, 0.525], + "112": [0.22222, 0.43056, 0, 0, 0.525], + "113": [0.22222, 0.43056, 0, 0, 0.525], + "114": [0, 0.43056, 0, 0, 0.525], + "115": [0, 0.43056, 0, 0, 0.525], + "116": [0, 0.55358, 0, 0, 0.525], + "117": [0, 0.43056, 0, 0, 0.525], + "118": [0, 0.43056, 0, 0, 0.525], + "119": [0, 0.43056, 0, 0, 0.525], + "120": [0, 0.43056, 0, 0, 0.525], + "121": [0.22222, 0.43056, 0, 0, 0.525], + "122": [0, 0.43056, 0, 0, 0.525], + "123": [0.08333, 0.69444, 0, 0, 0.525], + "124": [0.08333, 0.69444, 0, 0, 0.525], + "125": [0.08333, 0.69444, 0, 0, 0.525], + "126": [0, 0.61111, 0, 0, 0.525], + "127": [0, 0.61111, 0, 0, 0.525], + "160": [0, 0, 0, 0, 0.525], + "176": [0, 0.61111, 0, 0, 0.525], + "184": [0.19445, 0, 0, 0, 0.525], + "305": [0, 0.43056, 0, 0, 0.525], + "567": [0.22222, 0.43056, 0, 0, 0.525], + "711": [0, 0.56597, 0, 0, 0.525], + "713": [0, 0.56555, 0, 0, 0.525], + "714": [0, 0.61111, 0, 0, 0.525], + "715": [0, 0.61111, 0, 0, 0.525], + "728": [0, 0.61111, 0, 0, 0.525], + "730": [0, 0.61111, 0, 0, 0.525], + "770": [0, 0.61111, 0, 0, 0.525], + "771": [0, 0.61111, 0, 0, 0.525], + "776": [0, 0.61111, 0, 0, 0.525], + "915": [0, 0.61111, 0, 0, 0.525], + "916": [0, 0.61111, 0, 0, 0.525], + "920": [0, 0.61111, 0, 0, 0.525], + "923": [0, 0.61111, 0, 0, 0.525], + "926": [0, 0.61111, 0, 0, 0.525], + "928": [0, 0.61111, 0, 0, 0.525], + "931": [0, 0.61111, 0, 0, 0.525], + "933": [0, 0.61111, 0, 0, 0.525], + "934": [0, 0.61111, 0, 0, 0.525], + "936": [0, 0.61111, 0, 0, 0.525], + "937": [0, 0.61111, 0, 0, 0.525], + "8216": [0, 0.61111, 0, 0, 0.525], + "8217": [0, 0.61111, 0, 0, 0.525], + "8242": [0, 0.61111, 0, 0, 0.525], + "9251": [0.11111, 0.21944, 0, 0, 0.525] + } +}; + +/** + * This file contains metrics regarding fonts and individual symbols. The sigma + * and xi variables, as well as the metricMap map contain data extracted from + * TeX, TeX font metrics, and the TTF files. These data are then exposed via the + * `metrics` variable and the getCharacterMetrics function. + */ +// In TeX, there are actually three sets of dimensions, one for each of +// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4: +// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are +// provided in the the arrays below, in that order. +// +// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively. +// This was determined by running the following script: +// +// latex -interaction=nonstopmode \ +// '\documentclass{article}\usepackage{amsmath}\begin{document}' \ +// '$a$ \expandafter\show\the\textfont2' \ +// '\expandafter\show\the\scriptfont2' \ +// '\expandafter\show\the\scriptscriptfont2' \ +// '\stop' +// +// The metrics themselves were retreived using the following commands: +// +// tftopl cmsy10 +// tftopl cmsy7 +// tftopl cmsy5 +// +// The output of each of these commands is quite lengthy. The only part we +// care about is the FONTDIMEN section. Each value is measured in EMs. +const sigmasAndXis = { + slant: [0.250, 0.250, 0.250], + // sigma1 + space: [0.000, 0.000, 0.000], + // sigma2 + stretch: [0.000, 0.000, 0.000], + // sigma3 + shrink: [0.000, 0.000, 0.000], + // sigma4 + xHeight: [0.431, 0.431, 0.431], + // sigma5 + quad: [1.000, 1.171, 1.472], + // sigma6 + extraSpace: [0.000, 0.000, 0.000], + // sigma7 + num1: [0.677, 0.732, 0.925], + // sigma8 + num2: [0.394, 0.384, 0.387], + // sigma9 + num3: [0.444, 0.471, 0.504], + // sigma10 + denom1: [0.686, 0.752, 1.025], + // sigma11 + denom2: [0.345, 0.344, 0.532], + // sigma12 + sup1: [0.413, 0.503, 0.504], + // sigma13 + sup2: [0.363, 0.431, 0.404], + // sigma14 + sup3: [0.289, 0.286, 0.294], + // sigma15 + sub1: [0.150, 0.143, 0.200], + // sigma16 + sub2: [0.247, 0.286, 0.400], + // sigma17 + supDrop: [0.386, 0.353, 0.494], + // sigma18 + subDrop: [0.050, 0.071, 0.100], + // sigma19 + delim1: [2.390, 1.700, 1.980], + // sigma20 + delim2: [1.010, 1.157, 1.420], + // sigma21 + axisHeight: [0.250, 0.250, 0.250], + // sigma22 + // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; + // they correspond to the font parameters of the extension fonts (family 3). + // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to + // match cmex7, we'd use cmex7.tfm values for script and scriptscript + // values. + defaultRuleThickness: [0.04, 0.049, 0.049], + // xi8; cmex7: 0.049 + bigOpSpacing1: [0.111, 0.111, 0.111], + // xi9 + bigOpSpacing2: [0.166, 0.166, 0.166], + // xi10 + bigOpSpacing3: [0.2, 0.2, 0.2], + // xi11 + bigOpSpacing4: [0.6, 0.611, 0.611], + // xi12; cmex7: 0.611 + bigOpSpacing5: [0.1, 0.143, 0.143], + // xi13; cmex7: 0.143 + // The \sqrt rule width is taken from the height of the surd character. + // Since we use the same font at all sizes, this thickness doesn't scale. + sqrtRuleThickness: [0.04, 0.04, 0.04], + // This value determines how large a pt is, for metrics which are defined + // in terms of pts. + // This value is also used in katex.less; if you change it make sure the + // values match. + ptPerEm: [10.0, 10.0, 10.0], + // The space between adjacent `|` columns in an array definition. From + // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. + doubleRuleSep: [0.2, 0.2, 0.2], + // The width of separator lines in {array} environments. From + // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm. + arrayRuleWidth: [0.04, 0.04, 0.04], + // Two values from LaTeX source2e: + fboxsep: [0.3, 0.3, 0.3], + // 3 pt / ptPerEm + fboxrule: [0.04, 0.04, 0.04] // 0.4 pt / ptPerEm + +}; // This map contains a mapping from font name and character code to character +// should have Latin-1 and Cyrillic characters, but may not depending on the +// operating system. The metrics do not account for extra height from the +// accents. In the case of Cyrillic characters which have both ascenders and +// descenders we prefer approximations with ascenders, primarily to prevent +// the fraction bar or root line from intersecting the glyph. +// TODO(kevinb) allow union of multiple glyph metrics for better accuracy. + +const extraCharacterMap = { + // Latin-1 + 'Å': 'A', + 'Ç': 'C', + 'Ð': 'D', + 'Þ': 'o', + 'å': 'a', + 'ç': 'c', + 'ð': 'd', + 'þ': 'o', + // Cyrillic + 'А': 'A', + 'Б': 'B', + 'В': 'B', + 'Г': 'F', + 'Д': 'A', + 'Е': 'E', + 'Ж': 'K', + 'З': '3', + 'И': 'N', + 'Й': 'N', + 'К': 'K', + 'Л': 'N', + 'М': 'M', + 'Н': 'H', + 'О': 'O', + 'П': 'N', + 'Р': 'P', + 'С': 'C', + 'Т': 'T', + 'У': 'y', + 'Ф': 'O', + 'Х': 'X', + 'Ц': 'U', + 'Ч': 'h', + 'Ш': 'W', + 'Щ': 'W', + 'Ъ': 'B', + 'Ы': 'X', + 'Ь': 'B', + 'Э': '3', + 'Ю': 'X', + 'Я': 'R', + 'а': 'a', + 'б': 'b', + 'в': 'a', + 'г': 'r', + 'д': 'y', + 'е': 'e', + 'ж': 'm', + 'з': 'e', + 'и': 'n', + 'й': 'n', + 'к': 'n', + 'л': 'n', + 'м': 'm', + 'н': 'n', + 'о': 'o', + 'п': 'n', + 'р': 'p', + 'с': 'c', + 'т': 'o', + 'у': 'y', + 'ф': 'b', + 'х': 'x', + 'ц': 'n', + 'ч': 'n', + 'ш': 'w', + 'щ': 'w', + 'ъ': 'a', + 'ы': 'm', + 'ь': 'a', + 'э': 'e', + 'ю': 'm', + 'я': 'r' +}; + +/** + * This function adds new font metrics to default metricMap + * It can also override existing metrics + */ +function setFontMetrics(fontName, metrics) { + metricMap[fontName] = metrics; +} +/** + * This function is a convenience function for looking up information in the + * metricMap table. It takes a character as a string, and a font. + * + * Note: the `width` property may be undefined if fontMetricsData.js wasn't + * built using `Make extended_metrics`. + */ + +function getCharacterMetrics(character, font, mode) { + if (!metricMap[font]) { + throw new Error(`Font metrics not found for font: ${font}.`); + } + + let ch = character.charCodeAt(0); + let metrics = metricMap[font][ch]; + + if (!metrics && character[0] in extraCharacterMap) { + ch = extraCharacterMap[character[0]].charCodeAt(0); + metrics = metricMap[font][ch]; + } + + if (!metrics && mode === 'text') { + // We don't typically have font metrics for Asian scripts. + // But since we support them in text mode, we need to return + // some sort of metrics. + // So if the character is in a script we support but we + // don't have metrics for it, just use the metrics for + // the Latin capital letter M. This is close enough because + // we (currently) only care about the height of the glpyh + // not its width. + if (supportedCodepoint(ch)) { + metrics = metricMap[font][77]; // 77 is the charcode for 'M' + } + } + + if (metrics) { + return { + depth: metrics[0], + height: metrics[1], + italic: metrics[2], + skew: metrics[3], + width: metrics[4] + }; + } +} +const fontMetricsBySizeIndex = {}; +/** + * Get the font metrics for a given size. + */ + +function getGlobalMetrics(size) { + let sizeIndex; + + if (size >= 5) { + sizeIndex = 0; + } else if (size >= 3) { + sizeIndex = 1; + } else { + sizeIndex = 2; + } + + if (!fontMetricsBySizeIndex[sizeIndex]) { + const metrics = fontMetricsBySizeIndex[sizeIndex] = { + cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18 + }; + + for (const key in sigmasAndXis) { + if (sigmasAndXis.hasOwnProperty(key)) { + metrics[key] = sigmasAndXis[key][sizeIndex]; + } + } + } + + return fontMetricsBySizeIndex[sizeIndex]; +} + +/** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ +// Some of these have a "-token" suffix since these are also used as `ParseNode` +// types for raw text tokens, and we want to avoid conflicts with higher-level +// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by +// looking up the `symbols` map. +const ATOMS = { + "bin": 1, + "close": 1, + "inner": 1, + "open": 1, + "punct": 1, + "rel": 1 +}; +const NON_ATOMS = { + "accent-token": 1, + "mathord": 1, + "op-token": 1, + "spacing": 1, + "textord": 1 +}; +const symbols = { + "math": {}, + "text": {} +}; +/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */ + +function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { + symbols[mode][name] = { + font, + group, + replace + }; + + if (acceptUnicodeChar && replace) { + symbols[mode][replace] = symbols[mode][name]; + } +} // Some abbreviations for commonly used strings. +// This helps minify the code, and also spotting typos using jshint. +// modes: + +const math = "math"; +const text$1 = "text"; // fonts: + +const main = "main"; +const ams = "ams"; // groups: + +const accent = "accent-token"; +const bin = "bin"; +const close = "close"; +const inner = "inner"; +const mathord = "mathord"; +const op = "op-token"; +const open = "open"; +const punct = "punct"; +const rel = "rel"; +const spacing = "spacing"; +const textord = "textord"; // Now comes the symbol table +// Relation Symbols + +defineSymbol(math, main, rel, "\u2261", "\\equiv", true); +defineSymbol(math, main, rel, "\u227a", "\\prec", true); +defineSymbol(math, main, rel, "\u227b", "\\succ", true); +defineSymbol(math, main, rel, "\u223c", "\\sim", true); +defineSymbol(math, main, rel, "\u22a5", "\\perp"); +defineSymbol(math, main, rel, "\u2aaf", "\\preceq", true); +defineSymbol(math, main, rel, "\u2ab0", "\\succeq", true); +defineSymbol(math, main, rel, "\u2243", "\\simeq", true); +defineSymbol(math, main, rel, "\u2223", "\\mid", true); +defineSymbol(math, main, rel, "\u226a", "\\ll", true); +defineSymbol(math, main, rel, "\u226b", "\\gg", true); +defineSymbol(math, main, rel, "\u224d", "\\asymp", true); +defineSymbol(math, main, rel, "\u2225", "\\parallel"); +defineSymbol(math, main, rel, "\u22c8", "\\bowtie", true); +defineSymbol(math, main, rel, "\u2323", "\\smile", true); +defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true); +defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true); +defineSymbol(math, main, rel, "\u2250", "\\doteq", true); +defineSymbol(math, main, rel, "\u2322", "\\frown", true); +defineSymbol(math, main, rel, "\u220b", "\\ni", true); +defineSymbol(math, main, rel, "\u221d", "\\propto", true); +defineSymbol(math, main, rel, "\u22a2", "\\vdash", true); +defineSymbol(math, main, rel, "\u22a3", "\\dashv", true); +defineSymbol(math, main, rel, "\u220b", "\\owns"); // Punctuation + +defineSymbol(math, main, punct, "\u002e", "\\ldotp"); +defineSymbol(math, main, punct, "\u22c5", "\\cdotp"); // Misc Symbols + +defineSymbol(math, main, textord, "\u0023", "\\#"); +defineSymbol(text$1, main, textord, "\u0023", "\\#"); +defineSymbol(math, main, textord, "\u0026", "\\&"); +defineSymbol(text$1, main, textord, "\u0026", "\\&"); +defineSymbol(math, main, textord, "\u2135", "\\aleph", true); +defineSymbol(math, main, textord, "\u2200", "\\forall", true); +defineSymbol(math, main, textord, "\u210f", "\\hbar", true); +defineSymbol(math, main, textord, "\u2203", "\\exists", true); +defineSymbol(math, main, textord, "\u2207", "\\nabla", true); +defineSymbol(math, main, textord, "\u266d", "\\flat", true); +defineSymbol(math, main, textord, "\u2113", "\\ell", true); +defineSymbol(math, main, textord, "\u266e", "\\natural", true); +defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true); +defineSymbol(math, main, textord, "\u2118", "\\wp", true); +defineSymbol(math, main, textord, "\u266f", "\\sharp", true); +defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true); +defineSymbol(math, main, textord, "\u211c", "\\Re", true); +defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true); +defineSymbol(math, main, textord, "\u2111", "\\Im", true); +defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true); +defineSymbol(text$1, main, textord, "\u00a7", "\\S", true); +defineSymbol(text$1, main, textord, "\u00b6", "\\P", true); // Math and Text + +defineSymbol(math, main, textord, "\u2020", "\\dag"); +defineSymbol(text$1, main, textord, "\u2020", "\\dag"); +defineSymbol(text$1, main, textord, "\u2020", "\\textdagger"); +defineSymbol(math, main, textord, "\u2021", "\\ddag"); +defineSymbol(text$1, main, textord, "\u2021", "\\ddag"); +defineSymbol(text$1, main, textord, "\u2021", "\\textdaggerdbl"); // Large Delimiters + +defineSymbol(math, main, close, "\u23b1", "\\rmoustache", true); +defineSymbol(math, main, open, "\u23b0", "\\lmoustache", true); +defineSymbol(math, main, close, "\u27ef", "\\rgroup", true); +defineSymbol(math, main, open, "\u27ee", "\\lgroup", true); // Binary Operators + +defineSymbol(math, main, bin, "\u2213", "\\mp", true); +defineSymbol(math, main, bin, "\u2296", "\\ominus", true); +defineSymbol(math, main, bin, "\u228e", "\\uplus", true); +defineSymbol(math, main, bin, "\u2293", "\\sqcap", true); +defineSymbol(math, main, bin, "\u2217", "\\ast"); +defineSymbol(math, main, bin, "\u2294", "\\sqcup", true); +defineSymbol(math, main, bin, "\u25ef", "\\bigcirc"); +defineSymbol(math, main, bin, "\u2219", "\\bullet"); +defineSymbol(math, main, bin, "\u2021", "\\ddagger"); +defineSymbol(math, main, bin, "\u2240", "\\wr", true); +defineSymbol(math, main, bin, "\u2a3f", "\\amalg"); +defineSymbol(math, main, bin, "\u0026", "\\And"); // from amsmath +// Arrow Symbols + +defineSymbol(math, main, rel, "\u27f5", "\\longleftarrow", true); +defineSymbol(math, main, rel, "\u21d0", "\\Leftarrow", true); +defineSymbol(math, main, rel, "\u27f8", "\\Longleftarrow", true); +defineSymbol(math, main, rel, "\u27f6", "\\longrightarrow", true); +defineSymbol(math, main, rel, "\u21d2", "\\Rightarrow", true); +defineSymbol(math, main, rel, "\u27f9", "\\Longrightarrow", true); +defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true); +defineSymbol(math, main, rel, "\u27f7", "\\longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21d4", "\\Leftrightarrow", true); +defineSymbol(math, main, rel, "\u27fa", "\\Longleftrightarrow", true); +defineSymbol(math, main, rel, "\u21a6", "\\mapsto", true); +defineSymbol(math, main, rel, "\u27fc", "\\longmapsto", true); +defineSymbol(math, main, rel, "\u2197", "\\nearrow", true); +defineSymbol(math, main, rel, "\u21a9", "\\hookleftarrow", true); +defineSymbol(math, main, rel, "\u21aa", "\\hookrightarrow", true); +defineSymbol(math, main, rel, "\u2198", "\\searrow", true); +defineSymbol(math, main, rel, "\u21bc", "\\leftharpoonup", true); +defineSymbol(math, main, rel, "\u21c0", "\\rightharpoonup", true); +defineSymbol(math, main, rel, "\u2199", "\\swarrow", true); +defineSymbol(math, main, rel, "\u21bd", "\\leftharpoondown", true); +defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown", true); +defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true); +defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons", true); // AMS Negated Binary Relations + +defineSymbol(math, ams, rel, "\u226e", "\\nless", true); // Symbol names preceeded by "@" each have a corresponding macro. + +defineSymbol(math, ams, rel, "\ue010", "\\@nleqslant"); +defineSymbol(math, ams, rel, "\ue011", "\\@nleqq"); +defineSymbol(math, ams, rel, "\u2a87", "\\lneq", true); +defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true); +defineSymbol(math, ams, rel, "\ue00c", "\\@lvertneqq"); +defineSymbol(math, ams, rel, "\u22e6", "\\lnsim", true); +defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox", true); +defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); // unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u22e0", "\\npreceq", true); +defineSymbol(math, ams, rel, "\u22e8", "\\precnsim", true); +defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox", true); +defineSymbol(math, ams, rel, "\u2241", "\\nsim", true); +defineSymbol(math, ams, rel, "\ue006", "\\@nshortmid"); +defineSymbol(math, ams, rel, "\u2224", "\\nmid", true); +defineSymbol(math, ams, rel, "\u22ac", "\\nvdash", true); +defineSymbol(math, ams, rel, "\u22ad", "\\nvDash", true); +defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft"); +defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq", true); +defineSymbol(math, ams, rel, "\u228a", "\\subsetneq", true); +defineSymbol(math, ams, rel, "\ue01a", "\\@varsubsetneq"); +defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq", true); +defineSymbol(math, ams, rel, "\ue017", "\\@varsubsetneqq"); +defineSymbol(math, ams, rel, "\u226f", "\\ngtr", true); +defineSymbol(math, ams, rel, "\ue00f", "\\@ngeqslant"); +defineSymbol(math, ams, rel, "\ue00e", "\\@ngeqq"); +defineSymbol(math, ams, rel, "\u2a88", "\\gneq", true); +defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true); +defineSymbol(math, ams, rel, "\ue00d", "\\@gvertneqq"); +defineSymbol(math, ams, rel, "\u22e7", "\\gnsim", true); +defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox", true); +defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); // unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u22e1", "\\nsucceq", true); +defineSymbol(math, ams, rel, "\u22e9", "\\succnsim", true); +defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox", true); // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u2246", "\\ncong", true); +defineSymbol(math, ams, rel, "\ue007", "\\@nshortparallel"); +defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true); +defineSymbol(math, ams, rel, "\u22af", "\\nVDash", true); +defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright"); +defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq", true); +defineSymbol(math, ams, rel, "\ue018", "\\@nsupseteqq"); +defineSymbol(math, ams, rel, "\u228b", "\\supsetneq", true); +defineSymbol(math, ams, rel, "\ue01b", "\\@varsupsetneq"); +defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq", true); +defineSymbol(math, ams, rel, "\ue019", "\\@varsupsetneqq"); +defineSymbol(math, ams, rel, "\u22ae", "\\nVdash", true); +defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq", true); +defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq", true); +defineSymbol(math, ams, rel, "\ue016", "\\@nsubseteqq"); +defineSymbol(math, ams, bin, "\u22b4", "\\unlhd"); +defineSymbol(math, ams, bin, "\u22b5", "\\unrhd"); // AMS Negated Arrows + +defineSymbol(math, ams, rel, "\u219a", "\\nleftarrow", true); +defineSymbol(math, ams, rel, "\u219b", "\\nrightarrow", true); +defineSymbol(math, ams, rel, "\u21cd", "\\nLeftarrow", true); +defineSymbol(math, ams, rel, "\u21cf", "\\nRightarrow", true); +defineSymbol(math, ams, rel, "\u21ae", "\\nleftrightarrow", true); +defineSymbol(math, ams, rel, "\u21ce", "\\nLeftrightarrow", true); // AMS Misc + +defineSymbol(math, ams, rel, "\u25b3", "\\vartriangle"); +defineSymbol(math, ams, textord, "\u210f", "\\hslash"); +defineSymbol(math, ams, textord, "\u25bd", "\\triangledown"); +defineSymbol(math, ams, textord, "\u25ca", "\\lozenge"); +defineSymbol(math, ams, textord, "\u24c8", "\\circledS"); +defineSymbol(math, ams, textord, "\u00ae", "\\circledR"); +defineSymbol(text$1, ams, textord, "\u00ae", "\\circledR"); +defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true); +defineSymbol(math, ams, textord, "\u2204", "\\nexists"); +defineSymbol(math, ams, textord, "\u2127", "\\mho"); +defineSymbol(math, ams, textord, "\u2132", "\\Finv", true); +defineSymbol(math, ams, textord, "\u2141", "\\Game", true); +defineSymbol(math, ams, textord, "\u2035", "\\backprime"); +defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle"); +defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown"); +defineSymbol(math, ams, textord, "\u25a0", "\\blacksquare"); +defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge"); +defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); +defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true); +defineSymbol(math, ams, textord, "\u2201", "\\complement", true); // unicode-math maps U+F0 (ð) to \matheth. We map to AMS function \eth + +defineSymbol(math, ams, textord, "\u00f0", "\\eth", true); +defineSymbol(math, ams, textord, "\u2571", "\\diagup"); +defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); +defineSymbol(math, ams, textord, "\u25a1", "\\square"); +defineSymbol(math, ams, textord, "\u25a1", "\\Box"); +defineSymbol(math, ams, textord, "\u25ca", "\\Diamond"); // unicode-math maps U+A5 to \mathyen. We map to AMS function \yen + +defineSymbol(math, ams, textord, "\u00a5", "\\yen", true); +defineSymbol(text$1, ams, textord, "\u00a5", "\\yen", true); +defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true); +defineSymbol(text$1, ams, textord, "\u2713", "\\checkmark"); // AMS Hebrew + +defineSymbol(math, ams, textord, "\u2136", "\\beth", true); +defineSymbol(math, ams, textord, "\u2138", "\\daleth", true); +defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); // AMS Greek + +defineSymbol(math, ams, textord, "\u03dd", "\\digamma", true); +defineSymbol(math, ams, textord, "\u03f0", "\\varkappa"); // AMS Delimiters + +defineSymbol(math, ams, open, "\u250c", "\\ulcorner", true); +defineSymbol(math, ams, close, "\u2510", "\\urcorner", true); +defineSymbol(math, ams, open, "\u2514", "\\llcorner", true); +defineSymbol(math, ams, close, "\u2518", "\\lrcorner", true); // AMS Binary Relations + +defineSymbol(math, ams, rel, "\u2266", "\\leqq", true); +defineSymbol(math, ams, rel, "\u2a7d", "\\leqslant", true); +defineSymbol(math, ams, rel, "\u2a95", "\\eqslantless", true); +defineSymbol(math, ams, rel, "\u2272", "\\lesssim", true); +defineSymbol(math, ams, rel, "\u2a85", "\\lessapprox", true); +defineSymbol(math, ams, rel, "\u224a", "\\approxeq", true); +defineSymbol(math, ams, bin, "\u22d6", "\\lessdot"); +defineSymbol(math, ams, rel, "\u22d8", "\\lll", true); +defineSymbol(math, ams, rel, "\u2276", "\\lessgtr", true); +defineSymbol(math, ams, rel, "\u22da", "\\lesseqgtr", true); +defineSymbol(math, ams, rel, "\u2a8b", "\\lesseqqgtr", true); +defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); +defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true); +defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true); +defineSymbol(math, ams, rel, "\u223d", "\\backsim", true); +defineSymbol(math, ams, rel, "\u22cd", "\\backsimeq", true); +defineSymbol(math, ams, rel, "\u2ac5", "\\subseteqq", true); +defineSymbol(math, ams, rel, "\u22d0", "\\Subset", true); +defineSymbol(math, ams, rel, "\u228f", "\\sqsubset", true); +defineSymbol(math, ams, rel, "\u227c", "\\preccurlyeq", true); +defineSymbol(math, ams, rel, "\u22de", "\\curlyeqprec", true); +defineSymbol(math, ams, rel, "\u227e", "\\precsim", true); +defineSymbol(math, ams, rel, "\u2ab7", "\\precapprox", true); +defineSymbol(math, ams, rel, "\u22b2", "\\vartriangleleft"); +defineSymbol(math, ams, rel, "\u22b4", "\\trianglelefteq"); +defineSymbol(math, ams, rel, "\u22a8", "\\vDash", true); +defineSymbol(math, ams, rel, "\u22aa", "\\Vvdash", true); +defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); +defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); +defineSymbol(math, ams, rel, "\u224f", "\\bumpeq", true); +defineSymbol(math, ams, rel, "\u224e", "\\Bumpeq", true); +defineSymbol(math, ams, rel, "\u2267", "\\geqq", true); +defineSymbol(math, ams, rel, "\u2a7e", "\\geqslant", true); +defineSymbol(math, ams, rel, "\u2a96", "\\eqslantgtr", true); +defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true); +defineSymbol(math, ams, rel, "\u2a86", "\\gtrapprox", true); +defineSymbol(math, ams, bin, "\u22d7", "\\gtrdot"); +defineSymbol(math, ams, rel, "\u22d9", "\\ggg", true); +defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true); +defineSymbol(math, ams, rel, "\u22db", "\\gtreqless", true); +defineSymbol(math, ams, rel, "\u2a8c", "\\gtreqqless", true); +defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true); +defineSymbol(math, ams, rel, "\u2257", "\\circeq", true); +defineSymbol(math, ams, rel, "\u225c", "\\triangleq", true); +defineSymbol(math, ams, rel, "\u223c", "\\thicksim"); +defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); +defineSymbol(math, ams, rel, "\u2ac6", "\\supseteqq", true); +defineSymbol(math, ams, rel, "\u22d1", "\\Supset", true); +defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true); +defineSymbol(math, ams, rel, "\u227d", "\\succcurlyeq", true); +defineSymbol(math, ams, rel, "\u22df", "\\curlyeqsucc", true); +defineSymbol(math, ams, rel, "\u227f", "\\succsim", true); +defineSymbol(math, ams, rel, "\u2ab8", "\\succapprox", true); +defineSymbol(math, ams, rel, "\u22b3", "\\vartriangleright"); +defineSymbol(math, ams, rel, "\u22b5", "\\trianglerighteq"); +defineSymbol(math, ams, rel, "\u22a9", "\\Vdash", true); +defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); +defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); +defineSymbol(math, ams, rel, "\u226c", "\\between", true); +defineSymbol(math, ams, rel, "\u22d4", "\\pitchfork", true); +defineSymbol(math, ams, rel, "\u221d", "\\varpropto"); +defineSymbol(math, ams, rel, "\u25c0", "\\blacktriangleleft"); // unicode-math says that \therefore is a mathord atom. +// We kept the amssymb atom type, which is rel. + +defineSymbol(math, ams, rel, "\u2234", "\\therefore", true); +defineSymbol(math, ams, rel, "\u220d", "\\backepsilon"); +defineSymbol(math, ams, rel, "\u25b6", "\\blacktriangleright"); // unicode-math says that \because is a mathord atom. +// We kept the amssymb atom type, which is rel. + +defineSymbol(math, ams, rel, "\u2235", "\\because", true); +defineSymbol(math, ams, rel, "\u22d8", "\\llless"); +defineSymbol(math, ams, rel, "\u22d9", "\\gggtr"); +defineSymbol(math, ams, bin, "\u22b2", "\\lhd"); +defineSymbol(math, ams, bin, "\u22b3", "\\rhd"); +defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true); +defineSymbol(math, main, rel, "\u22c8", "\\Join"); +defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); // AMS Binary Operators + +defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true); +defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); +defineSymbol(math, ams, bin, "\u22d2", "\\Cap", true); +defineSymbol(math, ams, bin, "\u22d3", "\\Cup", true); +defineSymbol(math, ams, bin, "\u2a5e", "\\doublebarwedge", true); +defineSymbol(math, ams, bin, "\u229f", "\\boxminus", true); +defineSymbol(math, ams, bin, "\u229e", "\\boxplus", true); +defineSymbol(math, ams, bin, "\u22c7", "\\divideontimes", true); +defineSymbol(math, ams, bin, "\u22c9", "\\ltimes", true); +defineSymbol(math, ams, bin, "\u22ca", "\\rtimes", true); +defineSymbol(math, ams, bin, "\u22cb", "\\leftthreetimes", true); +defineSymbol(math, ams, bin, "\u22cc", "\\rightthreetimes", true); +defineSymbol(math, ams, bin, "\u22cf", "\\curlywedge", true); +defineSymbol(math, ams, bin, "\u22ce", "\\curlyvee", true); +defineSymbol(math, ams, bin, "\u229d", "\\circleddash", true); +defineSymbol(math, ams, bin, "\u229b", "\\circledast", true); +defineSymbol(math, ams, bin, "\u22c5", "\\centerdot"); +defineSymbol(math, ams, bin, "\u22ba", "\\intercal", true); +defineSymbol(math, ams, bin, "\u22d2", "\\doublecap"); +defineSymbol(math, ams, bin, "\u22d3", "\\doublecup"); +defineSymbol(math, ams, bin, "\u22a0", "\\boxtimes", true); // AMS Arrows +// Note: unicode-math maps \u21e2 to their own function \rightdasharrow. +// We'll map it to AMS function \dashrightarrow. It produces the same atom. + +defineSymbol(math, ams, rel, "\u21e2", "\\dashrightarrow", true); // unicode-math maps \u21e0 to \leftdasharrow. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u21e0", "\\dashleftarrow", true); +defineSymbol(math, ams, rel, "\u21c7", "\\leftleftarrows", true); +defineSymbol(math, ams, rel, "\u21c6", "\\leftrightarrows", true); +defineSymbol(math, ams, rel, "\u21da", "\\Lleftarrow", true); +defineSymbol(math, ams, rel, "\u219e", "\\twoheadleftarrow", true); +defineSymbol(math, ams, rel, "\u21a2", "\\leftarrowtail", true); +defineSymbol(math, ams, rel, "\u21ab", "\\looparrowleft", true); +defineSymbol(math, ams, rel, "\u21cb", "\\leftrightharpoons", true); +defineSymbol(math, ams, rel, "\u21b6", "\\curvearrowleft", true); // unicode-math maps \u21ba to \acwopencirclearrow. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u21ba", "\\circlearrowleft", true); +defineSymbol(math, ams, rel, "\u21b0", "\\Lsh", true); +defineSymbol(math, ams, rel, "\u21c8", "\\upuparrows", true); +defineSymbol(math, ams, rel, "\u21bf", "\\upharpoonleft", true); +defineSymbol(math, ams, rel, "\u21c3", "\\downharpoonleft", true); +defineSymbol(math, ams, rel, "\u22b8", "\\multimap", true); +defineSymbol(math, ams, rel, "\u21ad", "\\leftrightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21c9", "\\rightrightarrows", true); +defineSymbol(math, ams, rel, "\u21c4", "\\rightleftarrows", true); +defineSymbol(math, ams, rel, "\u21a0", "\\twoheadrightarrow", true); +defineSymbol(math, ams, rel, "\u21a3", "\\rightarrowtail", true); +defineSymbol(math, ams, rel, "\u21ac", "\\looparrowright", true); +defineSymbol(math, ams, rel, "\u21b7", "\\curvearrowright", true); // unicode-math maps \u21bb to \cwopencirclearrow. We'll use the AMS synonym. + +defineSymbol(math, ams, rel, "\u21bb", "\\circlearrowright", true); +defineSymbol(math, ams, rel, "\u21b1", "\\Rsh", true); +defineSymbol(math, ams, rel, "\u21ca", "\\downdownarrows", true); +defineSymbol(math, ams, rel, "\u21be", "\\upharpoonright", true); +defineSymbol(math, ams, rel, "\u21c2", "\\downharpoonright", true); +defineSymbol(math, ams, rel, "\u21dd", "\\rightsquigarrow", true); +defineSymbol(math, ams, rel, "\u21dd", "\\leadsto"); +defineSymbol(math, ams, rel, "\u21db", "\\Rrightarrow", true); +defineSymbol(math, ams, rel, "\u21be", "\\restriction"); +defineSymbol(math, main, textord, "\u2018", "`"); +defineSymbol(math, main, textord, "$", "\\$"); +defineSymbol(text$1, main, textord, "$", "\\$"); +defineSymbol(text$1, main, textord, "$", "\\textdollar"); +defineSymbol(math, main, textord, "%", "\\%"); +defineSymbol(text$1, main, textord, "%", "\\%"); +defineSymbol(math, main, textord, "_", "\\_"); +defineSymbol(text$1, main, textord, "_", "\\_"); +defineSymbol(text$1, main, textord, "_", "\\textunderscore"); +defineSymbol(math, main, textord, "\u2220", "\\angle", true); +defineSymbol(math, main, textord, "\u221e", "\\infty", true); +defineSymbol(math, main, textord, "\u2032", "\\prime"); +defineSymbol(math, main, textord, "\u25b3", "\\triangle"); +defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); +defineSymbol(math, main, textord, "\u0394", "\\Delta", true); +defineSymbol(math, main, textord, "\u0398", "\\Theta", true); +defineSymbol(math, main, textord, "\u039b", "\\Lambda", true); +defineSymbol(math, main, textord, "\u039e", "\\Xi", true); +defineSymbol(math, main, textord, "\u03a0", "\\Pi", true); +defineSymbol(math, main, textord, "\u03a3", "\\Sigma", true); +defineSymbol(math, main, textord, "\u03a5", "\\Upsilon", true); +defineSymbol(math, main, textord, "\u03a6", "\\Phi", true); +defineSymbol(math, main, textord, "\u03a8", "\\Psi", true); +defineSymbol(math, main, textord, "\u03a9", "\\Omega", true); +defineSymbol(math, main, textord, "A", "\u0391"); +defineSymbol(math, main, textord, "B", "\u0392"); +defineSymbol(math, main, textord, "E", "\u0395"); +defineSymbol(math, main, textord, "Z", "\u0396"); +defineSymbol(math, main, textord, "H", "\u0397"); +defineSymbol(math, main, textord, "I", "\u0399"); +defineSymbol(math, main, textord, "K", "\u039A"); +defineSymbol(math, main, textord, "M", "\u039C"); +defineSymbol(math, main, textord, "N", "\u039D"); +defineSymbol(math, main, textord, "O", "\u039F"); +defineSymbol(math, main, textord, "P", "\u03A1"); +defineSymbol(math, main, textord, "T", "\u03A4"); +defineSymbol(math, main, textord, "X", "\u03A7"); +defineSymbol(math, main, textord, "\u00ac", "\\neg", true); +defineSymbol(math, main, textord, "\u00ac", "\\lnot"); +defineSymbol(math, main, textord, "\u22a4", "\\top"); +defineSymbol(math, main, textord, "\u22a5", "\\bot"); +defineSymbol(math, main, textord, "\u2205", "\\emptyset"); +defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); +defineSymbol(math, main, mathord, "\u03b1", "\\alpha", true); +defineSymbol(math, main, mathord, "\u03b2", "\\beta", true); +defineSymbol(math, main, mathord, "\u03b3", "\\gamma", true); +defineSymbol(math, main, mathord, "\u03b4", "\\delta", true); +defineSymbol(math, main, mathord, "\u03f5", "\\epsilon", true); +defineSymbol(math, main, mathord, "\u03b6", "\\zeta", true); +defineSymbol(math, main, mathord, "\u03b7", "\\eta", true); +defineSymbol(math, main, mathord, "\u03b8", "\\theta", true); +defineSymbol(math, main, mathord, "\u03b9", "\\iota", true); +defineSymbol(math, main, mathord, "\u03ba", "\\kappa", true); +defineSymbol(math, main, mathord, "\u03bb", "\\lambda", true); +defineSymbol(math, main, mathord, "\u03bc", "\\mu", true); +defineSymbol(math, main, mathord, "\u03bd", "\\nu", true); +defineSymbol(math, main, mathord, "\u03be", "\\xi", true); +defineSymbol(math, main, mathord, "\u03bf", "\\omicron", true); +defineSymbol(math, main, mathord, "\u03c0", "\\pi", true); +defineSymbol(math, main, mathord, "\u03c1", "\\rho", true); +defineSymbol(math, main, mathord, "\u03c3", "\\sigma", true); +defineSymbol(math, main, mathord, "\u03c4", "\\tau", true); +defineSymbol(math, main, mathord, "\u03c5", "\\upsilon", true); +defineSymbol(math, main, mathord, "\u03d5", "\\phi", true); +defineSymbol(math, main, mathord, "\u03c7", "\\chi", true); +defineSymbol(math, main, mathord, "\u03c8", "\\psi", true); +defineSymbol(math, main, mathord, "\u03c9", "\\omega", true); +defineSymbol(math, main, mathord, "\u03b5", "\\varepsilon", true); +defineSymbol(math, main, mathord, "\u03d1", "\\vartheta", true); +defineSymbol(math, main, mathord, "\u03d6", "\\varpi", true); +defineSymbol(math, main, mathord, "\u03f1", "\\varrho", true); +defineSymbol(math, main, mathord, "\u03c2", "\\varsigma", true); +defineSymbol(math, main, mathord, "\u03c6", "\\varphi", true); +defineSymbol(math, main, bin, "\u2217", "*"); +defineSymbol(math, main, bin, "+", "+"); +defineSymbol(math, main, bin, "\u2212", "-"); +defineSymbol(math, main, bin, "\u22c5", "\\cdot", true); +defineSymbol(math, main, bin, "\u2218", "\\circ"); +defineSymbol(math, main, bin, "\u00f7", "\\div", true); +defineSymbol(math, main, bin, "\u00b1", "\\pm", true); +defineSymbol(math, main, bin, "\u00d7", "\\times", true); +defineSymbol(math, main, bin, "\u2229", "\\cap", true); +defineSymbol(math, main, bin, "\u222a", "\\cup", true); +defineSymbol(math, main, bin, "\u2216", "\\setminus"); +defineSymbol(math, main, bin, "\u2227", "\\land"); +defineSymbol(math, main, bin, "\u2228", "\\lor"); +defineSymbol(math, main, bin, "\u2227", "\\wedge", true); +defineSymbol(math, main, bin, "\u2228", "\\vee", true); +defineSymbol(math, main, textord, "\u221a", "\\surd"); +defineSymbol(math, main, open, "(", "("); +defineSymbol(math, main, open, "[", "["); +defineSymbol(math, main, open, "\u27e8", "\\langle", true); +defineSymbol(math, main, open, "\u2223", "\\lvert"); +defineSymbol(math, main, open, "\u2225", "\\lVert"); +defineSymbol(math, main, close, ")", ")"); +defineSymbol(math, main, close, "]", "]"); +defineSymbol(math, main, close, "?", "?"); +defineSymbol(math, main, close, "!", "!"); +defineSymbol(math, main, close, "\u27e9", "\\rangle", true); +defineSymbol(math, main, close, "\u2223", "\\rvert"); +defineSymbol(math, main, close, "\u2225", "\\rVert"); +defineSymbol(math, main, rel, "=", "="); +defineSymbol(math, main, rel, "<", "<"); +defineSymbol(math, main, rel, ">", ">"); +defineSymbol(math, main, rel, ":", ":"); +defineSymbol(math, main, rel, "\u2248", "\\approx", true); +defineSymbol(math, main, rel, "\u2245", "\\cong", true); +defineSymbol(math, main, rel, "\u2265", "\\ge"); +defineSymbol(math, main, rel, "\u2265", "\\geq", true); +defineSymbol(math, main, rel, "\u2190", "\\gets"); +defineSymbol(math, main, rel, ">", "\\gt"); +defineSymbol(math, main, rel, "\u2208", "\\in", true); +defineSymbol(math, main, rel, "\ue020", "\\@not"); +defineSymbol(math, main, rel, "\u2282", "\\subset", true); +defineSymbol(math, main, rel, "\u2283", "\\supset", true); +defineSymbol(math, main, rel, "\u2286", "\\subseteq", true); +defineSymbol(math, main, rel, "\u2287", "\\supseteq", true); +defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true); +defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true); +defineSymbol(math, main, rel, "\u22a8", "\\models"); +defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true); +defineSymbol(math, main, rel, "\u2264", "\\le"); +defineSymbol(math, main, rel, "\u2264", "\\leq", true); +defineSymbol(math, main, rel, "<", "\\lt"); +defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true); +defineSymbol(math, main, rel, "\u2192", "\\to"); +defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true); +defineSymbol(math, ams, rel, "\u2270", "\\nleq", true); +defineSymbol(math, main, spacing, "\u00a0", "\\ "); +defineSymbol(math, main, spacing, "\u00a0", "~"); +defineSymbol(math, main, spacing, "\u00a0", "\\space"); // Ref: LaTeX Source 2e: \DeclareRobustCommand{\nobreakspace}{% + +defineSymbol(math, main, spacing, "\u00a0", "\\nobreakspace"); +defineSymbol(text$1, main, spacing, "\u00a0", "\\ "); +defineSymbol(text$1, main, spacing, "\u00a0", "~"); +defineSymbol(text$1, main, spacing, "\u00a0", "\\space"); +defineSymbol(text$1, main, spacing, "\u00a0", "\\nobreakspace"); +defineSymbol(math, main, spacing, null, "\\nobreak"); +defineSymbol(math, main, spacing, null, "\\allowbreak"); +defineSymbol(math, main, punct, ",", ","); +defineSymbol(math, main, punct, ";", ";"); +defineSymbol(math, ams, bin, "\u22bc", "\\barwedge", true); +defineSymbol(math, ams, bin, "\u22bb", "\\veebar", true); +defineSymbol(math, main, bin, "\u2299", "\\odot", true); +defineSymbol(math, main, bin, "\u2295", "\\oplus", true); +defineSymbol(math, main, bin, "\u2297", "\\otimes", true); +defineSymbol(math, main, textord, "\u2202", "\\partial", true); +defineSymbol(math, main, bin, "\u2298", "\\oslash", true); +defineSymbol(math, ams, bin, "\u229a", "\\circledcirc", true); +defineSymbol(math, ams, bin, "\u22a1", "\\boxdot", true); +defineSymbol(math, main, bin, "\u25b3", "\\bigtriangleup"); +defineSymbol(math, main, bin, "\u25bd", "\\bigtriangledown"); +defineSymbol(math, main, bin, "\u2020", "\\dagger"); +defineSymbol(math, main, bin, "\u22c4", "\\diamond"); +defineSymbol(math, main, bin, "\u22c6", "\\star"); +defineSymbol(math, main, bin, "\u25c3", "\\triangleleft"); +defineSymbol(math, main, bin, "\u25b9", "\\triangleright"); +defineSymbol(math, main, open, "{", "\\{"); +defineSymbol(text$1, main, textord, "{", "\\{"); +defineSymbol(text$1, main, textord, "{", "\\textbraceleft"); +defineSymbol(math, main, close, "}", "\\}"); +defineSymbol(text$1, main, textord, "}", "\\}"); +defineSymbol(text$1, main, textord, "}", "\\textbraceright"); +defineSymbol(math, main, open, "{", "\\lbrace"); +defineSymbol(math, main, close, "}", "\\rbrace"); +defineSymbol(math, main, open, "[", "\\lbrack"); +defineSymbol(text$1, main, textord, "[", "\\lbrack"); +defineSymbol(math, main, close, "]", "\\rbrack"); +defineSymbol(text$1, main, textord, "]", "\\rbrack"); +defineSymbol(math, main, open, "(", "\\lparen"); +defineSymbol(math, main, close, ")", "\\rparen"); +defineSymbol(text$1, main, textord, "<", "\\textless"); // in T1 fontenc + +defineSymbol(text$1, main, textord, ">", "\\textgreater"); // in T1 fontenc + +defineSymbol(math, main, open, "\u230a", "\\lfloor", true); +defineSymbol(math, main, close, "\u230b", "\\rfloor", true); +defineSymbol(math, main, open, "\u2308", "\\lceil", true); +defineSymbol(math, main, close, "\u2309", "\\rceil", true); +defineSymbol(math, main, textord, "\\", "\\backslash"); +defineSymbol(math, main, textord, "\u2223", "|"); +defineSymbol(math, main, textord, "\u2223", "\\vert"); +defineSymbol(text$1, main, textord, "|", "\\textbar"); // in T1 fontenc + +defineSymbol(math, main, textord, "\u2225", "\\|"); +defineSymbol(math, main, textord, "\u2225", "\\Vert"); +defineSymbol(text$1, main, textord, "\u2225", "\\textbardbl"); +defineSymbol(text$1, main, textord, "~", "\\textasciitilde"); +defineSymbol(text$1, main, textord, "\\", "\\textbackslash"); +defineSymbol(text$1, main, textord, "^", "\\textasciicircum"); +defineSymbol(math, main, rel, "\u2191", "\\uparrow", true); +defineSymbol(math, main, rel, "\u21d1", "\\Uparrow", true); +defineSymbol(math, main, rel, "\u2193", "\\downarrow", true); +defineSymbol(math, main, rel, "\u21d3", "\\Downarrow", true); +defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true); +defineSymbol(math, main, rel, "\u21d5", "\\Updownarrow", true); +defineSymbol(math, main, op, "\u2210", "\\coprod"); +defineSymbol(math, main, op, "\u22c1", "\\bigvee"); +defineSymbol(math, main, op, "\u22c0", "\\bigwedge"); +defineSymbol(math, main, op, "\u2a04", "\\biguplus"); +defineSymbol(math, main, op, "\u22c2", "\\bigcap"); +defineSymbol(math, main, op, "\u22c3", "\\bigcup"); +defineSymbol(math, main, op, "\u222b", "\\int"); +defineSymbol(math, main, op, "\u222b", "\\intop"); +defineSymbol(math, main, op, "\u222c", "\\iint"); +defineSymbol(math, main, op, "\u222d", "\\iiint"); +defineSymbol(math, main, op, "\u220f", "\\prod"); +defineSymbol(math, main, op, "\u2211", "\\sum"); +defineSymbol(math, main, op, "\u2a02", "\\bigotimes"); +defineSymbol(math, main, op, "\u2a01", "\\bigoplus"); +defineSymbol(math, main, op, "\u2a00", "\\bigodot"); +defineSymbol(math, main, op, "\u222e", "\\oint"); +defineSymbol(math, main, op, "\u222f", "\\oiint"); +defineSymbol(math, main, op, "\u2230", "\\oiiint"); +defineSymbol(math, main, op, "\u2a06", "\\bigsqcup"); +defineSymbol(math, main, op, "\u222b", "\\smallint"); +defineSymbol(text$1, main, inner, "\u2026", "\\textellipsis"); +defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); +defineSymbol(text$1, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u22ef", "\\@cdots", true); +defineSymbol(math, main, inner, "\u22f1", "\\ddots", true); +defineSymbol(math, main, textord, "\u22ee", "\\varvdots"); // \vdots is a macro + +defineSymbol(math, main, accent, "\u02ca", "\\acute"); +defineSymbol(math, main, accent, "\u02cb", "\\grave"); +defineSymbol(math, main, accent, "\u00a8", "\\ddot"); +defineSymbol(math, main, accent, "\u007e", "\\tilde"); +defineSymbol(math, main, accent, "\u02c9", "\\bar"); +defineSymbol(math, main, accent, "\u02d8", "\\breve"); +defineSymbol(math, main, accent, "\u02c7", "\\check"); +defineSymbol(math, main, accent, "\u005e", "\\hat"); +defineSymbol(math, main, accent, "\u20d7", "\\vec"); +defineSymbol(math, main, accent, "\u02d9", "\\dot"); +defineSymbol(math, main, accent, "\u02da", "\\mathring"); +defineSymbol(math, main, mathord, "\u0131", "\\imath", true); +defineSymbol(math, main, mathord, "\u0237", "\\jmath", true); +defineSymbol(text$1, main, textord, "\u0131", "\\i", true); +defineSymbol(text$1, main, textord, "\u0237", "\\j", true); +defineSymbol(text$1, main, textord, "\u00df", "\\ss", true); +defineSymbol(text$1, main, textord, "\u00e6", "\\ae", true); +defineSymbol(text$1, main, textord, "\u00e6", "\\ae", true); +defineSymbol(text$1, main, textord, "\u0153", "\\oe", true); +defineSymbol(text$1, main, textord, "\u00f8", "\\o", true); +defineSymbol(text$1, main, textord, "\u00c6", "\\AE", true); +defineSymbol(text$1, main, textord, "\u0152", "\\OE", true); +defineSymbol(text$1, main, textord, "\u00d8", "\\O", true); +defineSymbol(text$1, main, accent, "\u02ca", "\\'"); // acute + +defineSymbol(text$1, main, accent, "\u02cb", "\\`"); // grave + +defineSymbol(text$1, main, accent, "\u02c6", "\\^"); // circumflex + +defineSymbol(text$1, main, accent, "\u02dc", "\\~"); // tilde + +defineSymbol(text$1, main, accent, "\u02c9", "\\="); // macron + +defineSymbol(text$1, main, accent, "\u02d8", "\\u"); // breve + +defineSymbol(text$1, main, accent, "\u02d9", "\\."); // dot above + +defineSymbol(text$1, main, accent, "\u02da", "\\r"); // ring above + +defineSymbol(text$1, main, accent, "\u02c7", "\\v"); // caron + +defineSymbol(text$1, main, accent, "\u00a8", '\\"'); // diaresis + +defineSymbol(text$1, main, accent, "\u02dd", "\\H"); // double acute + +defineSymbol(text$1, main, accent, "\u25ef", "\\textcircled"); // \bigcirc glyph +// These ligatures are detected and created in Parser.js's `formLigatures`. + +const ligatures = { + "--": true, + "---": true, + "``": true, + "''": true +}; +defineSymbol(text$1, main, textord, "\u2013", "--"); +defineSymbol(text$1, main, textord, "\u2013", "\\textendash"); +defineSymbol(text$1, main, textord, "\u2014", "---"); +defineSymbol(text$1, main, textord, "\u2014", "\\textemdash"); +defineSymbol(text$1, main, textord, "\u2018", "`"); +defineSymbol(text$1, main, textord, "\u2018", "\\textquoteleft"); +defineSymbol(text$1, main, textord, "\u2019", "'"); +defineSymbol(text$1, main, textord, "\u2019", "\\textquoteright"); +defineSymbol(text$1, main, textord, "\u201c", "``"); +defineSymbol(text$1, main, textord, "\u201c", "\\textquotedblleft"); +defineSymbol(text$1, main, textord, "\u201d", "''"); +defineSymbol(text$1, main, textord, "\u201d", "\\textquotedblright"); // \degree from gensymb package + +defineSymbol(math, main, textord, "\u00b0", "\\degree", true); +defineSymbol(text$1, main, textord, "\u00b0", "\\degree"); // \textdegree from inputenc package + +defineSymbol(text$1, main, textord, "\u00b0", "\\textdegree", true); // TODO: In LaTeX, \pounds can generate a different character in text and math +// mode, but among our fonts, only Main-Italic defines this character "163". + +defineSymbol(math, main, mathord, "\u00a3", "\\pounds"); +defineSymbol(math, main, mathord, "\u00a3", "\\mathsterling", true); +defineSymbol(text$1, main, mathord, "\u00a3", "\\pounds"); +defineSymbol(text$1, main, mathord, "\u00a3", "\\textsterling", true); +defineSymbol(math, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text$1, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text$1, main, spacing, "\u00a0", "\\ "); +defineSymbol(text$1, main, spacing, "\u00a0", " "); +defineSymbol(text$1, main, spacing, "\u00a0", "~"); // There are lots of symbols which are the same, so we add them in afterwards. +// All of these are textords in math mode + +const mathTextSymbols = "0123456789/@.\""; + +for (let i = 0; i < mathTextSymbols.length; i++) { + const ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); +} // All of these are textords in text mode + + +const textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; + +for (let i = 0; i < textSymbols.length; i++) { + const ch = textSymbols.charAt(i); + defineSymbol(text$1, main, textord, ch, ch); +} // All of these are textords in text mode, and mathords in math mode + + +const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +for (let i = 0; i < letters.length; i++) { + const ch = letters.charAt(i); + defineSymbol(math, main, mathord, ch, ch); + defineSymbol(text$1, main, textord, ch, ch); +} // Blackboard bold and script letters in Unicode range + + +defineSymbol(math, ams, textord, "C", "\u2102"); // blackboard bold + +defineSymbol(text$1, ams, textord, "C", "\u2102"); +defineSymbol(math, ams, textord, "H", "\u210D"); +defineSymbol(text$1, ams, textord, "H", "\u210D"); +defineSymbol(math, ams, textord, "N", "\u2115"); +defineSymbol(text$1, ams, textord, "N", "\u2115"); +defineSymbol(math, ams, textord, "P", "\u2119"); +defineSymbol(text$1, ams, textord, "P", "\u2119"); +defineSymbol(math, ams, textord, "Q", "\u211A"); +defineSymbol(text$1, ams, textord, "Q", "\u211A"); +defineSymbol(math, ams, textord, "R", "\u211D"); +defineSymbol(text$1, ams, textord, "R", "\u211D"); +defineSymbol(math, ams, textord, "Z", "\u2124"); +defineSymbol(text$1, ams, textord, "Z", "\u2124"); +defineSymbol(math, main, mathord, "h", "\u210E"); // italic h, Planck constant + +defineSymbol(text$1, main, mathord, "h", "\u210E"); // The next loop loads wide (surrogate pair) characters. +// We support some letters in the Unicode range U+1D400 to U+1D7FF, +// Mathematical Alphanumeric Symbols. +// Some editors do not deal well with wide characters. So don't write the +// string into this file. Instead, create the string from the surrogate pair. + +let wideChar = ""; + +for (let i = 0; i < letters.length; i++) { + const ch = letters.charAt(i); // The hex numbers in the next line are a surrogate pair. + // 0xD835 is the high surrogate for all letters in the range we support. + // 0xDC00 is the low surrogate for bold A. + + wideChar = String.fromCharCode(0xD835, 0xDC00 + i); // A-Z a-z bold + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDC34 + i); // A-Z a-z italic + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDC68 + i); // A-Z a-z bold italic + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDD04 + i); // A-Z a-z Fractur + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDDA0 + i); // A-Z a-z sans-serif + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDDD4 + i); // A-Z a-z sans bold + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDE08 + i); // A-Z a-z sans italic + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDE70 + i); // A-Z a-z monospace + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + + if (i < 26) { + // KaTeX fonts have only capital letters for blackboard bold and script. + // See exception for k below. + wideChar = String.fromCharCode(0xD835, 0xDD38 + i); // A-Z double struck + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDC9C + i); // A-Z script + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + } // TODO: Add bold script when it is supported by a KaTeX font. + +} // "k" is the only double struck lower case letter in the KaTeX fonts. + + +wideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck + +defineSymbol(math, main, mathord, "k", wideChar); +defineSymbol(text$1, main, textord, "k", wideChar); // Next, some wide character numerals + +for (let i = 0; i < 10; i++) { + const ch = i.toString(); + wideChar = String.fromCharCode(0xD835, 0xDFCE + i); // 0-9 bold + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDFE2 + i); // 0-9 sans serif + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDFEC + i); // 0-9 bold sans + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); + wideChar = String.fromCharCode(0xD835, 0xDFF6 + i); // 0-9 monospace + + defineSymbol(math, main, mathord, ch, wideChar); + defineSymbol(text$1, main, textord, ch, wideChar); +} // We add these Latin-1 letters as symbols for backwards-compatibility, +// but they are not actually in the font, nor are they supported by the +// Unicode accent mechanism, so they fall back to Times font and look ugly. +// TODO(edemaine): Fix this. + + +const extraLatin = "ÇÐÞçþ"; + +for (let i = 0; i < extraLatin.length; i++) { + const ch = extraLatin.charAt(i); + defineSymbol(math, main, mathord, ch, ch); + defineSymbol(text$1, main, textord, ch, ch); +} + +defineSymbol(text$1, main, textord, "ð", "ð"); // Unicode versions of existing characters + +defineSymbol(text$1, main, textord, "\u2013", "–"); +defineSymbol(text$1, main, textord, "\u2014", "—"); +defineSymbol(text$1, main, textord, "\u2018", "‘"); +defineSymbol(text$1, main, textord, "\u2019", "’"); +defineSymbol(text$1, main, textord, "\u201c", "“"); +defineSymbol(text$1, main, textord, "\u201d", "”"); + +/** + * This file provides support for Unicode range U+1D400 to U+1D7FF, + * Mathematical Alphanumeric Symbols. + * + * Function wideCharacterFont takes a wide character as input and returns + * the font information necessary to render it properly. + */ +/** + * Data below is from https://www.unicode.org/charts/PDF/U1D400.pdf + * That document sorts characters into groups by font type, say bold or italic. + * + * In the arrays below, each subarray consists three elements: + * * The CSS class of that group when in math mode. + * * The CSS class of that group when in text mode. + * * The font name, so that KaTeX can get font metrics. + */ + +const wideLatinLetterData = [["mathbf", "textbf", "Main-Bold"], // A-Z bold upright +["mathbf", "textbf", "Main-Bold"], // a-z bold upright +["mathdefault", "textit", "Math-Italic"], // A-Z italic +["mathdefault", "textit", "Math-Italic"], // a-z italic +["boldsymbol", "boldsymbol", "Main-BoldItalic"], // A-Z bold italic +["boldsymbol", "boldsymbol", "Main-BoldItalic"], // a-z bold italic +// Map fancy A-Z letters to script, not calligraphic. +// This aligns with unicode-math and math fonts (except Cambria Math). +["mathscr", "textscr", "Script-Regular"], // A-Z script +["", "", ""], // a-z script. No font +["", "", ""], // A-Z bold script. No font +["", "", ""], // a-z bold script. No font +["mathfrak", "textfrak", "Fraktur-Regular"], // A-Z Fraktur +["mathfrak", "textfrak", "Fraktur-Regular"], // a-z Fraktur +["mathbb", "textbb", "AMS-Regular"], // A-Z double-struck +["mathbb", "textbb", "AMS-Regular"], // k double-struck +["", "", ""], // A-Z bold Fraktur No font metrics +["", "", ""], // a-z bold Fraktur. No font. +["mathsf", "textsf", "SansSerif-Regular"], // A-Z sans-serif +["mathsf", "textsf", "SansSerif-Regular"], // a-z sans-serif +["mathboldsf", "textboldsf", "SansSerif-Bold"], // A-Z bold sans-serif +["mathboldsf", "textboldsf", "SansSerif-Bold"], // a-z bold sans-serif +["mathitsf", "textitsf", "SansSerif-Italic"], // A-Z italic sans-serif +["mathitsf", "textitsf", "SansSerif-Italic"], // a-z italic sans-serif +["", "", ""], // A-Z bold italic sans. No font +["", "", ""], // a-z bold italic sans. No font +["mathtt", "texttt", "Typewriter-Regular"], // A-Z monospace +["mathtt", "texttt", "Typewriter-Regular"]]; +const wideNumeralData = [["mathbf", "textbf", "Main-Bold"], // 0-9 bold +["", "", ""], // 0-9 double-struck. No KaTeX font. +["mathsf", "textsf", "SansSerif-Regular"], // 0-9 sans-serif +["mathboldsf", "textboldsf", "SansSerif-Bold"], // 0-9 bold sans-serif +["mathtt", "texttt", "Typewriter-Regular"]]; +const wideCharacterFont = function wideCharacterFont(wideChar, mode) { + // IE doesn't support codePointAt(). So work with the surrogate pair. + const H = wideChar.charCodeAt(0); // high surrogate + + const L = wideChar.charCodeAt(1); // low surrogate + + const codePoint = (H - 0xD800) * 0x400 + (L - 0xDC00) + 0x10000; + const j = mode === "math" ? 0 : 1; // column index for CSS class. + + if (0x1D400 <= codePoint && codePoint < 0x1D6A4) { + // wideLatinLetterData contains exactly 26 chars on each row. + // So we can calculate the relevant row. No traverse necessary. + const i = Math.floor((codePoint - 0x1D400) / 26); + return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]]; + } else if (0x1D7CE <= codePoint && codePoint <= 0x1D7FF) { + // Numerals, ten per row. + const i = Math.floor((codePoint - 0x1D7CE) / 10); + return [wideNumeralData[i][2], wideNumeralData[i][j]]; + } else if (codePoint === 0x1D6A5 || codePoint === 0x1D6A6) { + // dotless i or j + return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]]; + } else if (0x1D6A6 < codePoint && codePoint < 0x1D7CE) { + // Greek letters. Not supported, yet. + return ["", ""]; + } else { + // We don't support any wide characters outside 1D400–1D7FF. + throw new ParseError("Unsupported character: " + wideChar); + } +}; + +/** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ +const sizeStyleMap = [// Each element contains [textsize, scriptsize, scriptscriptsize]. +// The size mappings are taken from TeX with \normalsize=10pt. +[1, 1, 1], // size1: [5, 5, 5] \tiny +[2, 1, 1], // size2: [6, 5, 5] +[3, 1, 1], // size3: [7, 5, 5] \scriptsize +[4, 2, 1], // size4: [8, 6, 5] \footnotesize +[5, 2, 1], // size5: [9, 6, 5] \small +[6, 3, 1], // size6: [10, 7, 5] \normalsize +[7, 4, 2], // size7: [12, 8, 6] \large +[8, 6, 3], // size8: [14.4, 10, 7] \Large +[9, 7, 6], // size9: [17.28, 12, 10] \LARGE +[10, 8, 7], // size10: [20.74, 14.4, 12] \huge +[11, 10, 9]]; +const sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size indexes, so if +// you change size indexes, change that function. +0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; + +const sizeAtStyle = function sizeAtStyle(size, style) { + return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; +}; // In these types, "" (empty string) means "no change". + + +/** + * This is the main options class. It contains the current style, size, color, + * and font. + * + * Options objects should not be modified. To create a new Options with + * different properties, call a `.having*` method. + */ +class Options { + // A font family applies to a group of fonts (i.e. SansSerif), while a font + // represents a specific font (i.e. SansSerif Bold). + // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm + + /** + * The base size index. + */ + constructor(data) { + this.style = void 0; + this.color = void 0; + this.size = void 0; + this.textSize = void 0; + this.phantom = void 0; + this.font = void 0; + this.fontFamily = void 0; + this.fontWeight = void 0; + this.fontShape = void 0; + this.sizeMultiplier = void 0; + this.maxSize = void 0; + this.minRuleThickness = void 0; + this._fontMetrics = void 0; + this.style = data.style; + this.color = data.color; + this.size = data.size || Options.BASESIZE; + this.textSize = data.textSize || this.size; + this.phantom = !!data.phantom; + this.font = data.font || ""; + this.fontFamily = data.fontFamily || ""; + this.fontWeight = data.fontWeight || ''; + this.fontShape = data.fontShape || ''; + this.sizeMultiplier = sizeMultipliers[this.size - 1]; + this.maxSize = data.maxSize; + this.minRuleThickness = data.minRuleThickness; + this._fontMetrics = undefined; + } + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + + + extend(extension) { + const data = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + font: this.font, + fontFamily: this.fontFamily, + fontWeight: this.fontWeight, + fontShape: this.fontShape, + maxSize: this.maxSize, + minRuleThickness: this.minRuleThickness + }; + + for (const key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options(data); + } + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + + + havingStyle(style) { + if (this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: sizeAtStyle(this.textSize, style) + }); + } + } + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + + + havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + + + havingSize(size) { + if (this.size === size && this.textSize === size) { + return this; + } else { + return this.extend({ + style: this.style.text(), + size: size, + textSize: size, + sizeMultiplier: sizeMultipliers[size - 1] + }); + } + } + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + + + havingBaseStyle(style) { + style = style || this.style.text(); + const wantSize = sizeAtStyle(Options.BASESIZE, style); + + if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: wantSize + }); + } + } + /** + * Remove the effect of sizing changes such as \Huge. + * Keep the effect of the current style, such as \scriptstyle. + */ + + + havingBaseSizing() { + let size; + + switch (this.style.id) { + case 4: + case 5: + size = 3; // normalsize in scriptstyle + + break; + + case 6: + case 7: + size = 1; // normalsize in scriptscriptstyle + + break; + + default: + size = 6; + // normalsize in textstyle or displaystyle + } + + return this.extend({ + style: this.style.text(), + size: size + }); + } + /** + * Create a new options object with the given color. + */ + + + withColor(color) { + return this.extend({ + color: color + }); + } + /** + * Create a new options object with "phantom" set to true. + */ + + + withPhantom() { + return this.extend({ + phantom: true + }); + } + /** + * Creates a new options object with the given math font or old text font. + * @type {[type]} + */ + + + withFont(font) { + return this.extend({ + font + }); + } + /** + * Create a new options objects with the given fontFamily. + */ + + + withTextFontFamily(fontFamily) { + return this.extend({ + fontFamily, + font: "" + }); + } + /** + * Creates a new options object with the given font weight + */ + + + withTextFontWeight(fontWeight) { + return this.extend({ + fontWeight, + font: "" + }); + } + /** + * Creates a new options object with the given font weight + */ + + + withTextFontShape(fontShape) { + return this.extend({ + fontShape, + font: "" + }); + } + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + + + sizingClasses(oldOptions) { + if (oldOptions.size !== this.size) { + return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; + } else { + return []; + } + } + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + + + baseSizingClasses() { + if (this.size !== Options.BASESIZE) { + return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE]; + } else { + return []; + } + } + /** + * Return the font metrics for this size. + */ + + + fontMetrics() { + if (!this._fontMetrics) { + this._fontMetrics = getGlobalMetrics(this.size); + } + + return this._fontMetrics; + } + /** + * Gets the CSS color of the current options object + */ + + + getColor() { + if (this.phantom) { + return "transparent"; + } else { + return this.color; + } + } + +} + +Options.BASESIZE = 6; + +/** + * This file does conversion between units. In particular, it provides + * calculateSize to convert other units into ems. + */ +// Thus, multiplying a length by this number converts the length from units +// into pts. Dividing the result by ptPerEm gives the number of ems +// *assuming* a font size of ptPerEm (normal size, normal style). + +const ptPerUnit = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + "pt": 1, + // TeX point + "mm": 7227 / 2540, + // millimeter + "cm": 7227 / 254, + // centimeter + "in": 72.27, + // inch + "bp": 803 / 800, + // big (PostScript) points + "pc": 12, + // pica + "dd": 1238 / 1157, + // didot + "cc": 14856 / 1157, + // cicero (12 didot) + "nd": 685 / 642, + // new didot + "nc": 1370 / 107, + // new cicero (12 new didot) + "sp": 1 / 65536, + // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + "px": 803 / 800 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX + +}; // Dictionary of relative units, for fast validity testing. + +const relativeUnit = { + "ex": true, + "em": true, + "mu": true +}; + +/** + * Determine whether the specified unit (either a string defining the unit + * or a "size" parse node containing a unit field) is valid. + */ +const validUnit = function validUnit(unit) { + if (typeof unit !== "string") { + unit = unit.unit; + } + + return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; +}; +/* + * Convert a "size" parse node (with numeric "number" and string "unit" fields, + * as parsed by functions.js argType "size") into a CSS em value for the + * current style/scale. `options` gives the current options. + */ + +const calculateSize = function calculateSize(sizeValue, options) { + let scale; + + if (sizeValue.unit in ptPerUnit) { + // Absolute units + scale = ptPerUnit[sizeValue.unit] // Convert unit to pt + / options.fontMetrics().ptPerEm // Convert pt to CSS em + / options.sizeMultiplier; // Unscale to make absolute units + } else if (sizeValue.unit === "mu") { + // `mu` units scale with scriptstyle/scriptscriptstyle. + scale = options.fontMetrics().cssEmPerMu; + } else { + // Other relative units always refer to the *textstyle* font + // in the current size. + let unitOptions; + + if (options.style.isTight()) { + // isTight() means current style is script/scriptscript. + unitOptions = options.havingStyle(options.style.text()); + } else { + unitOptions = options; + } // TODO: In TeX these units are relative to the quad of the current + // *text* font, e.g. cmr10. KaTeX instead uses values from the + // comparably-sized *Computer Modern symbol* font. At 10pt, these + // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; + // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. + // TeX \showlists shows a kern of 1.13889 * fontsize; + // KaTeX shows a kern of 1.171 * fontsize. + + + if (sizeValue.unit === "ex") { + scale = unitOptions.fontMetrics().xHeight; + } else if (sizeValue.unit === "em") { + scale = unitOptions.fontMetrics().quad; + } else { + throw new ParseError("Invalid unit: '" + sizeValue.unit + "'"); + } + + if (unitOptions !== options) { + scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + return Math.min(sizeValue.number * scale, options.maxSize); +}; + +/* eslint no-console:0 */ +// The following have to be loaded from Main-Italic font, using class mathit +const mathitLetters = ["\\imath", "ı", // dotless i +"\\jmath", "ȷ", // dotless j +"\\pounds", "\\mathsterling", "\\textsterling", "£"]; +/** + * Looks up the given symbol in fontMetrics, after applying any symbol + * replacements defined in symbol.js + */ + +const lookupSymbol = function lookupSymbol(value, // TODO(#963): Use a union type for this. +fontName, mode) { + // Replace the value with its replaced value from symbol.js + if (symbols[mode][value] && symbols[mode][value].replace) { + value = symbols[mode][value].replace; + } + + return { + value: value, + metrics: getCharacterMetrics(value, fontName, mode) + }; +}; +/** + * Makes a symbolNode after translation via the list of symbols in symbols.js. + * Correctly pulls out metrics for the character, and optionally takes a list of + * classes to be attached to the node. + * + * TODO: make argument order closer to makeSpan + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + * TODO(#953): Make `options` mandatory and always pass it in. + */ + + +const makeSymbol = function makeSymbol(value, fontName, mode, options, classes) { + const lookup = lookupSymbol(value, fontName, mode); + const metrics = lookup.metrics; + value = lookup.value; + let symbolNode; + + if (metrics) { + let italic = metrics.italic; + + if (mode === "text" || options && options.font === "mathit") { + italic = 0; + } + + symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes); + } else { + // TODO(emily): Figure out a good way to only print this in development + typeof console !== "undefined" && console.warn("No character metrics " + `for '${value}' in style '${fontName}' and mode '${mode}'`); + symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes); + } + + if (options) { + symbolNode.maxFontSize = options.sizeMultiplier; + + if (options.style.isTight()) { + symbolNode.classes.push("mtight"); + } + + const color = options.getColor(); + + if (color) { + symbolNode.style.color = color; + } + } + + return symbolNode; +}; +/** + * Makes a symbol in Main-Regular or AMS-Regular. + * Used for rel, bin, open, close, inner, and punct. + */ + + +const mathsym = function mathsym(value, mode, options, classes) { + if (classes === void 0) { + classes = []; + } + + // Decide what font to render the symbol in by its entry in the symbols + // table. + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text, as well as a special case for boldsymbol because it + // can be used for bold + and - + if (options.font === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) { + return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"])); + } else if (value === "\\" || symbols[mode][value].font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes); + } else { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } +}; +/** + * Determines which of the two font names (Main-Italic and Math-Italic) and + * corresponding style tags (maindefault or mathit) to use for default math font, + * depending on the symbol. + */ + + +const mathdefault = function mathdefault(value, mode, options, classes) { + if (/[0-9]/.test(value.charAt(0)) || // glyphs for \imath and \jmath do not exist in Math-Italic so we + // need to use Main-Italic instead + utils.contains(mathitLetters, value)) { + return { + fontName: "Main-Italic", + fontClass: "mathit" + }; + } else { + return { + fontName: "Math-Italic", + fontClass: "mathdefault" + }; + } +}; +/** + * Determines which of the font names (Main-Italic, Math-Italic, and Caligraphic) + * and corresponding style tags (mathit, mathdefault, or mathcal) to use for font + * "mathnormal", depending on the symbol. Use this function instead of fontMap for + * font "mathnormal". + */ + + +const mathnormal = function mathnormal(value, mode, options, classes) { + if (utils.contains(mathitLetters, value)) { + return { + fontName: "Main-Italic", + fontClass: "mathit" + }; + } else if (/[0-9]/.test(value.charAt(0))) { + return { + fontName: "Caligraphic-Regular", + fontClass: "mathcal" + }; + } else { + return { + fontName: "Math-Italic", + fontClass: "mathdefault" + }; + } +}; +/** + * Determines which of the two font names (Main-Bold and Math-BoldItalic) and + * corresponding style tags (mathbf or boldsymbol) to use for font "boldsymbol", + * depending on the symbol. Use this function instead of fontMap for font + * "boldsymbol". + */ + + +const boldsymbol = function boldsymbol(value, mode, options, classes) { + if (lookupSymbol(value, "Math-BoldItalic", mode).metrics) { + return { + fontName: "Math-BoldItalic", + fontClass: "boldsymbol" + }; + } else { + // Some glyphs do not exist in Math-BoldItalic so we need to use + // Main-Bold instead. + return { + fontName: "Main-Bold", + fontClass: "mathbf" + }; + } +}; +/** + * Makes either a mathord or textord in the correct font and color. + */ + + +const makeOrd = function makeOrd(group, options, type) { + const mode = group.mode; + const text = group.text; + const classes = ["mord"]; // Math mode or Old font (i.e. \rm) + + const isFont = mode === "math" || mode === "text" && options.font; + const fontOrFamily = isFont ? options.font : options.fontFamily; + + if (text.charCodeAt(0) === 0xD835) { + // surrogate pairs get special treatment + const _wideCharacterFont = wideCharacterFont(text, mode), + wideFontName = _wideCharacterFont[0], + wideFontClass = _wideCharacterFont[1]; + + return makeSymbol(text, wideFontName, mode, options, classes.concat(wideFontClass)); + } else if (fontOrFamily) { + let fontName; + let fontClasses; + + if (fontOrFamily === "boldsymbol" || fontOrFamily === "mathnormal") { + const fontData = fontOrFamily === "boldsymbol" ? boldsymbol(text, mode, options, classes) : mathnormal(text, mode, options, classes); + fontName = fontData.fontName; + fontClasses = [fontData.fontClass]; + } else if (utils.contains(mathitLetters, text)) { + fontName = "Main-Italic"; + fontClasses = ["mathit"]; + } else if (isFont) { + fontName = fontMap[fontOrFamily].fontName; + fontClasses = [fontOrFamily]; + } else { + fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape); + fontClasses = [fontOrFamily, options.fontWeight, options.fontShape]; + } + + if (lookupSymbol(text, fontName, mode).metrics) { + return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses)); + } else if (ligatures.hasOwnProperty(text) && fontName.substr(0, 10) === "Typewriter") { + // Deconstruct ligatures in monospace fonts (\texttt, \tt). + const parts = []; + + for (let i = 0; i < text.length; i++) { + parts.push(makeSymbol(text[i], fontName, mode, options, classes.concat(fontClasses))); + } + + return makeFragment(parts); + } + } // Makes a symbol in the default font for mathords and textords. + + + if (type === "mathord") { + const fontLookup = mathdefault(text, mode, options, classes); + return makeSymbol(text, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass])); + } else if (type === "textord") { + const font = symbols[mode][text] && symbols[mode][text].font; + + if (font === "ams") { + const fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape); + return makeSymbol(text, fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape)); + } else if (font === "main" || !font) { + const fontName = retrieveTextFontName("textrm", options.fontWeight, options.fontShape); + return makeSymbol(text, fontName, mode, options, classes.concat(options.fontWeight, options.fontShape)); + } else { + // fonts added by plugins + const fontName = retrieveTextFontName(font, options.fontWeight, options.fontShape); // We add font name as a css class + + return makeSymbol(text, fontName, mode, options, classes.concat(fontName, options.fontWeight, options.fontShape)); + } + } else { + throw new Error("unexpected type: " + type + " in makeOrd"); + } +}; +/** + * Returns true if subsequent symbolNodes have the same classes, skew, maxFont, + * and styles. + */ + + +const canCombine = (prev, next) => { + if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize) { + return false; + } + + for (const style in prev.style) { + if (prev.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) { + return false; + } + } + + for (const style in next.style) { + if (next.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) { + return false; + } + } + + return true; +}; +/** + * Combine consequetive domTree.symbolNodes into a single symbolNode. + * Note: this function mutates the argument. + */ + + +const tryCombineChars = chars => { + for (let i = 0; i < chars.length - 1; i++) { + const prev = chars[i]; + const next = chars[i + 1]; + + if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) { + prev.text += next.text; + prev.height = Math.max(prev.height, next.height); + prev.depth = Math.max(prev.depth, next.depth); // Use the last character's italic correction since we use + // it to add padding to the right of the span created from + // the combined characters. + + prev.italic = next.italic; + chars.splice(i + 1, 1); + i--; + } + } + + return chars; +}; +/** + * Calculate the height, depth, and maxFontSize of an element based on its + * children. + */ + + +const sizeElementFromChildren = function sizeElementFromChildren(elem) { + let height = 0; + let depth = 0; + let maxFontSize = 0; + + for (let i = 0; i < elem.children.length; i++) { + const child = elem.children[i]; + + if (child.height > height) { + height = child.height; + } + + if (child.depth > depth) { + depth = child.depth; + } + + if (child.maxFontSize > maxFontSize) { + maxFontSize = child.maxFontSize; + } + } + + elem.height = height; + elem.depth = depth; + elem.maxFontSize = maxFontSize; +}; +/** + * Makes a span with the given list of classes, list of children, and options. + * + * TODO(#953): Ensure that `options` is always provided (currently some call + * sites don't pass it) and make the type below mandatory. + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ + + +const makeSpan = function makeSpan(classes, children, options, style) { + const span = new Span(classes, children, options, style); + sizeElementFromChildren(span); + return span; +}; // SVG one is simpler -- doesn't require height, depth, max-font setting. +// This is also a separate method for typesafety. + + +const makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style); + +const makeLineSpan = function makeLineSpan(className, options, thickness) { + const line = makeSpan([className], [], options); + line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness); + line.style.borderBottomWidth = line.height + "em"; + line.maxFontSize = 1.0; + return line; +}; +/** + * Makes an anchor with the given href, list of classes, list of children, + * and options. + */ + + +const makeAnchor = function makeAnchor(href, classes, children, options) { + const anchor = new Anchor(href, classes, children, options); + sizeElementFromChildren(anchor); + return anchor; +}; +/** + * Makes a document fragment with the given list of children. + */ + + +const makeFragment = function makeFragment(children) { + const fragment = new DocumentFragment(children); + sizeElementFromChildren(fragment); + return fragment; +}; +/** + * Wraps group in a span if it's a document fragment, allowing to apply classes + * and styles + */ + + +const wrapFragment = function wrapFragment(group, options) { + if (group instanceof DocumentFragment) { + return makeSpan([], [group], options); + } + + return group; +}; // These are exact object types to catch typos in the names of the optional fields. + + +// Computes the updated `children` list and the overall depth. +// +// This helper function for makeVList makes it easier to enforce type safety by +// allowing early exits (returns) in the logic. +const getVListChildrenAndDepth = function getVListChildrenAndDepth(params) { + if (params.positionType === "individualShift") { + const oldChildren = params.children; + const children = [oldChildren[0]]; // Add in kerns to the list of params.children to get each element to be + // shifted to the correct specified shift + + const depth = -oldChildren[0].shift - oldChildren[0].elem.depth; + let currPos = depth; + + for (let i = 1; i < oldChildren.length; i++) { + const diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth; + const size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth); + currPos = currPos + diff; + children.push({ + type: "kern", + size + }); + children.push(oldChildren[i]); + } + + return { + children, + depth + }; + } + + let depth; + + if (params.positionType === "top") { + // We always start at the bottom, so calculate the bottom by adding up + // all the sizes + let bottom = params.positionData; + + for (let i = 0; i < params.children.length; i++) { + const child = params.children[i]; + bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth; + } + + depth = bottom; + } else if (params.positionType === "bottom") { + depth = -params.positionData; + } else { + const firstChild = params.children[0]; + + if (firstChild.type !== "elem") { + throw new Error('First child must have type "elem".'); + } + + if (params.positionType === "shift") { + depth = -firstChild.elem.depth - params.positionData; + } else if (params.positionType === "firstBaseline") { + depth = -firstChild.elem.depth; + } else { + throw new Error(`Invalid positionType ${params.positionType}.`); + } + } + + return { + children: params.children, + depth + }; +}; +/** + * Makes a vertical list by stacking elements and kerns on top of each other. + * Allows for many different ways of specifying the positioning method. + * + * See VListParam documentation above. + */ + + +const makeVList = function makeVList(params, options) { + const _getVListChildrenAndD = getVListChildrenAndDepth(params), + children = _getVListChildrenAndD.children, + depth = _getVListChildrenAndD.depth; // Create a strut that is taller than any list item. The strut is added to + // each item, where it will determine the item's baseline. Since it has + // `overflow:hidden`, the strut's top edge will sit on the item's line box's + // top edge and the strut's bottom edge will sit on the item's baseline, + // with no additional line-height spacing. This allows the item baseline to + // be positioned precisely without worrying about font ascent and + // line-height. + + + let pstrutSize = 0; + + for (let i = 0; i < children.length; i++) { + const child = children[i]; + + if (child.type === "elem") { + const elem = child.elem; + pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height); + } + } + + pstrutSize += 2; + const pstrut = makeSpan(["pstrut"], []); + pstrut.style.height = pstrutSize + "em"; // Create a new list of actual children at the correct offsets + + const realChildren = []; + let minPos = depth; + let maxPos = depth; + let currPos = depth; + + for (let i = 0; i < children.length; i++) { + const child = children[i]; + + if (child.type === "kern") { + currPos += child.size; + } else { + const elem = child.elem; + const classes = child.wrapperClasses || []; + const style = child.wrapperStyle || {}; + const childWrap = makeSpan(classes, [pstrut, elem], undefined, style); + childWrap.style.top = -pstrutSize - currPos - elem.depth + "em"; + + if (child.marginLeft) { + childWrap.style.marginLeft = child.marginLeft; + } + + if (child.marginRight) { + childWrap.style.marginRight = child.marginRight; + } + + realChildren.push(childWrap); + currPos += elem.height + elem.depth; + } + + minPos = Math.min(minPos, currPos); + maxPos = Math.max(maxPos, currPos); + } // The vlist contents go in a table-cell with `vertical-align:bottom`. + // This cell's bottom edge will determine the containing table's baseline + // without overly expanding the containing line-box. + + + const vlist = makeSpan(["vlist"], realChildren); + vlist.style.height = maxPos + "em"; // A second row is used if necessary to represent the vlist's depth. + + let rows; + + if (minPos < 0) { + // We will define depth in an empty span with display: table-cell. + // It should render with the height that we define. But Chrome, in + // contenteditable mode only, treats that span as if it contains some + // text content. And that min-height over-rides our desired height. + // So we put another empty span inside the depth strut span. + const emptySpan = makeSpan([], []); + const depthStrut = makeSpan(["vlist"], [emptySpan]); + depthStrut.style.height = -minPos + "em"; // Safari wants the first row to have inline content; otherwise it + // puts the bottom of the *second* row on the baseline. + + const topStrut = makeSpan(["vlist-s"], [new SymbolNode("\u200b")]); + rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])]; + } else { + rows = [makeSpan(["vlist-r"], [vlist])]; + } + + const vtable = makeSpan(["vlist-t"], rows); + + if (rows.length === 2) { + vtable.classes.push("vlist-t2"); + } + + vtable.height = maxPos; + vtable.depth = -minPos; + return vtable; +}; // Glue is a concept from TeX which is a flexible space between elements in +// either a vertical or horizontal list. In KaTeX, at least for now, it's +// static space between elements in a horizontal layout. + + +const makeGlue = (measurement, options) => { + // Make an empty span for the space + const rule = makeSpan(["mspace"], [], options); + const size = calculateSize(measurement, options); + rule.style.marginRight = `${size}em`; + return rule; +}; // Takes font options, and returns the appropriate fontLookup name + + +const retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) { + let baseFontName = ""; + + switch (fontFamily) { + case "amsrm": + baseFontName = "AMS"; + break; + + case "textrm": + baseFontName = "Main"; + break; + + case "textsf": + baseFontName = "SansSerif"; + break; + + case "texttt": + baseFontName = "Typewriter"; + break; + + default: + baseFontName = fontFamily; + // use fonts added by a plugin + } + + let fontStylesName; + + if (fontWeight === "textbf" && fontShape === "textit") { + fontStylesName = "BoldItalic"; + } else if (fontWeight === "textbf") { + fontStylesName = "Bold"; + } else if (fontWeight === "textit") { + fontStylesName = "Italic"; + } else { + fontStylesName = "Regular"; + } + + return `${baseFontName}-${fontStylesName}`; +}; +/** + * Maps TeX font commands to objects containing: + * - variant: string used for "mathvariant" attribute in buildMathML.js + * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics + */ +// A map between tex font commands an MathML mathvariant attribute values + + +const fontMap = { + // styles + "mathbf": { + variant: "bold", + fontName: "Main-Bold" + }, + "mathrm": { + variant: "normal", + fontName: "Main-Regular" + }, + "textit": { + variant: "italic", + fontName: "Main-Italic" + }, + "mathit": { + variant: "italic", + fontName: "Main-Italic" + }, + // Default math font, "mathnormal" and "boldsymbol" are missing because they + // require the use of several fonts: Main-Italic and Math-Italic for default + // math font, Main-Italic, Math-Italic, Caligraphic for "mathnormal", and + // Math-BoldItalic and Main-Bold for "boldsymbol". This is handled by a + // special case in makeOrd which ends up calling mathdefault, mathnormal, + // and boldsymbol. + // families + "mathbb": { + variant: "double-struck", + fontName: "AMS-Regular" + }, + "mathcal": { + variant: "script", + fontName: "Caligraphic-Regular" + }, + "mathfrak": { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + "mathscr": { + variant: "script", + fontName: "Script-Regular" + }, + "mathsf": { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + "mathtt": { + variant: "monospace", + fontName: "Typewriter-Regular" + } +}; +const svgData = { + // path, width, height + vec: ["vec", 0.471, 0.714], + // values from the font glyph + oiintSize1: ["oiintSize1", 0.957, 0.499], + // oval to overlay the integrand + oiintSize2: ["oiintSize2", 1.472, 0.659], + oiiintSize1: ["oiiintSize1", 1.304, 0.499], + oiiintSize2: ["oiiintSize2", 1.98, 0.659] +}; + +const staticSvg = function staticSvg(value, options) { + // Create a span with inline SVG for the element. + const _svgData$value = svgData[value], + pathName = _svgData$value[0], + width = _svgData$value[1], + height = _svgData$value[2]; + const path = new PathNode(pathName); + const svgNode = new SvgNode([path], { + "width": width + "em", + "height": height + "em", + // Override CSS rule `.katex svg { width: 100% }` + "style": "width:" + width + "em", + "viewBox": "0 0 " + 1000 * width + " " + 1000 * height, + "preserveAspectRatio": "xMinYMin" + }); + const span = makeSvgSpan(["overlay"], [svgNode], options); + span.height = height; + span.style.height = height + "em"; + span.style.width = width + "em"; + return span; +}; + +var buildCommon = { + fontMap, + makeSymbol, + mathsym, + makeSpan, + makeSvgSpan, + makeLineSpan, + makeAnchor, + makeFragment, + wrapFragment, + makeVList, + makeOrd, + makeGlue, + staticSvg, + svgData, + tryCombineChars +}; + +/** + * Asserts that the node is of the given type and returns it with stricter + * typing. Throws if the node's type does not match. + */ +function assertNodeType(node, type) { + const typedNode = checkNodeType(node, type); + + if (!typedNode) { + throw new Error(`Expected node of type ${type}, but got ` + (node ? `node of type ${node.type}` : String(node))); + } // $FlowFixMe: Unsure why. + + + return typedNode; +} +/** + * Returns the node more strictly typed iff it is of the given type. Otherwise, + * returns null. + */ + +function checkNodeType(node, type) { + if (node && node.type === type) { + // The definition of ParseNode<TYPE> doesn't communicate to flow that + // `type: TYPE` (as that's not explicitly mentioned anywhere), though that + // happens to be true for all our value types. + // $FlowFixMe + return node; + } + + return null; +} +/** + * Asserts that the node is of the given type and returns it with stricter + * typing. Throws if the node's type does not match. + */ + +function assertAtomFamily(node, family) { + const typedNode = checkAtomFamily(node, family); + + if (!typedNode) { + throw new Error(`Expected node of type "atom" and family "${family}", but got ` + (node ? node.type === "atom" ? `atom of family ${node.family}` : `node of type ${node.type}` : String(node))); + } + + return typedNode; +} +/** + * Returns the node more strictly typed iff it is of the given type. Otherwise, + * returns null. + */ + +function checkAtomFamily(node, family) { + return node && node.type === "atom" && node.family === family ? node : null; +} +/** + * Returns the node more strictly typed iff it is of the given type. Otherwise, + * returns null. + */ + +function assertSymbolNodeType(node) { + const typedNode = checkSymbolNodeType(node); + + if (!typedNode) { + throw new Error(`Expected node of symbol group type, but got ` + (node ? `node of type ${node.type}` : String(node))); + } + + return typedNode; +} +/** + * Returns the node more strictly typed iff it is of the given type. Otherwise, + * returns null. + */ + +function checkSymbolNodeType(node) { + if (node && (node.type === "atom" || NON_ATOMS.hasOwnProperty(node.type))) { + // $FlowFixMe + return node; + } + + return null; +} + +/** + * Describes spaces between different classes of atoms. + */ +const thinspace = { + number: 3, + unit: "mu" +}; +const mediumspace = { + number: 4, + unit: "mu" +}; +const thickspace = { + number: 5, + unit: "mu" +}; // Making the type below exact with all optional fields doesn't work due to +// - https://github.com/facebook/flow/issues/4582 +// - https://github.com/facebook/flow/issues/5688 +// However, since *all* fields are optional, $Shape<> works as suggested in 5688 +// above. + +// Spacing relationships for display and text styles +const spacings = { + mord: { + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + minner: thinspace + }, + mop: { + mord: thinspace, + mop: thinspace, + mrel: thickspace, + minner: thinspace + }, + mbin: { + mord: mediumspace, + mop: mediumspace, + mopen: mediumspace, + minner: mediumspace + }, + mrel: { + mord: thickspace, + mop: thickspace, + mopen: thickspace, + minner: thickspace + }, + mopen: {}, + mclose: { + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + minner: thinspace + }, + mpunct: { + mord: thinspace, + mop: thinspace, + mrel: thickspace, + mopen: thinspace, + mclose: thinspace, + mpunct: thinspace, + minner: thinspace + }, + minner: { + mord: thinspace, + mop: thinspace, + mbin: mediumspace, + mrel: thickspace, + mopen: thinspace, + mpunct: thinspace, + minner: thinspace + } +}; // Spacing relationships for script and scriptscript styles + +const tightSpacings = { + mord: { + mop: thinspace + }, + mop: { + mord: thinspace, + mop: thinspace + }, + mbin: {}, + mrel: {}, + mopen: {}, + mclose: { + mop: thinspace + }, + mpunct: {}, + minner: { + mop: thinspace + } +}; + +/** + * All registered functions. + * `functions.js` just exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary. + */ +const _functions = {}; +/** + * All HTML builders. Should be only used in the `define*` and the `build*ML` + * functions. + */ + +const _htmlGroupBuilders = {}; +/** + * All MathML builders. Should be only used in the `define*` and the `build*ML` + * functions. + */ + +const _mathmlGroupBuilders = {}; +function defineFunction(_ref) { + let type = _ref.type, + names = _ref.names, + props = _ref.props, + handler = _ref.handler, + htmlBuilder = _ref.htmlBuilder, + mathmlBuilder = _ref.mathmlBuilder; + // Set default values of functions + const data = { + type, + numArgs: props.numArgs, + argTypes: props.argTypes, + greediness: props.greediness === undefined ? 1 : props.greediness, + allowedInText: !!props.allowedInText, + allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath, + numOptionalArgs: props.numOptionalArgs || 0, + infix: !!props.infix, + handler: handler + }; + + for (let i = 0; i < names.length; ++i) { + _functions[names[i]] = data; + } + + if (type) { + if (htmlBuilder) { + _htmlGroupBuilders[type] = htmlBuilder; + } + + if (mathmlBuilder) { + _mathmlGroupBuilders[type] = mathmlBuilder; + } + } +} +/** + * Use this to register only the HTML and MathML builders for a function (e.g. + * if the function's ParseNode is generated in Parser.js rather than via a + * stand-alone handler provided to `defineFunction`). + */ + +function defineFunctionBuilders(_ref2) { + let type = _ref2.type, + htmlBuilder = _ref2.htmlBuilder, + mathmlBuilder = _ref2.mathmlBuilder; + defineFunction({ + type, + names: [], + props: { + numArgs: 0 + }, + + handler() { + throw new Error('Should never be called.'); + }, + + htmlBuilder, + mathmlBuilder + }); +} // Since the corresponding buildHTML/buildMathML function expects a +// list of elements, we normalize for different kinds of arguments + +const ordargument = function ordargument(arg) { + const node = checkNodeType(arg, "ordgroup"); + return node ? node.body : [arg]; +}; + +/** + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupBuilders functions + * are called, to produce a final HTML tree. + */ +const makeSpan$1 = buildCommon.makeSpan; // Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) +// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, +// and the text before Rule 19. + +const binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"]; +const binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"]; +const styleMap = { + "display": Style$1.DISPLAY, + "text": Style$1.TEXT, + "script": Style$1.SCRIPT, + "scriptscript": Style$1.SCRIPTSCRIPT +}; +const DomEnum = { + mord: "mord", + mop: "mop", + mbin: "mbin", + mrel: "mrel", + mopen: "mopen", + mclose: "mclose", + mpunct: "mpunct", + minner: "minner" +}; + +/** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). `surrounding` is an array + * consisting type of nodes that will be added to the left and right. + */ +const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding) { + if (surrounding === void 0) { + surrounding = [null, null]; + } + + // Parse expressions into `groups`. + const groups = []; + + for (let i = 0; i < expression.length; i++) { + const output = buildGroup(expression[i], options); + + if (output instanceof DocumentFragment) { + const children = output.children; + groups.push(...children); + } else { + groups.push(output); + } + } // If `expression` is a partial group, let the parent handle spacings + // to avoid processing groups multiple times. + + + if (!isRealGroup) { + return groups; + } + + let glueOptions = options; + + if (expression.length === 1) { + const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling"); + + if (!node) ; else if (node.type === "sizing") { + glueOptions = options.havingSize(node.size); + } else if (node.type === "styling") { + glueOptions = options.havingStyle(styleMap[node.style]); + } + } // Dummy spans for determining spacings between surrounding atoms. + // If `expression` has no atoms on the left or right, class "leftmost" + // or "rightmost", respectively, is used to indicate it. + + + const dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options); + const dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options); // TODO: These code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + // Before determining what spaces to insert, perform bin cancellation. + // Binary operators change to ordinary symbols in some contexts. + + traverseNonSpaceNodes(groups, (node, prev) => { + const prevType = prev.classes[0]; + const type = node.classes[0]; + + if (prevType === "mbin" && utils.contains(binRightCanceller, type)) { + prev.classes[0] = "mord"; + } else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) { + node.classes[0] = "mord"; + } + }, { + node: dummyPrev + }, dummyNext); + traverseNonSpaceNodes(groups, (node, prev) => { + const prevType = getTypeOfDomTree(prev); + const type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style. + + const space = prevType && type ? node.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null; + + if (space) { + // Insert glue (spacing) after the `prev`. + return buildCommon.makeGlue(space, glueOptions); + } + }, { + node: dummyPrev + }, dummyNext); + return groups; +}; // Depth-first traverse non-space `nodes`, calling `callback` with the current and +// previous node as arguments, optionally returning a node to insert after the +// previous node. `prev` is an object with the previous node and `insertAfter` +// function to insert after it. `next` is a node that will be added to the right. +// Used for bin cancellation and inserting spacings. + +const traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) { + if (next) { + // temporarily append the right node, if exists + nodes.push(next); + } + + let i = 0; + + for (; i < nodes.length; i++) { + const node = nodes[i]; + const partialGroup = checkPartialGroup(node); + + if (partialGroup) { + // Recursive DFS + // $FlowFixMe: make nodes a $ReadOnlyArray by returning a new array + traverseNonSpaceNodes(partialGroup.children, callback, prev); + continue; + } // Ignore explicit spaces (e.g., \;, \,) when determining what implicit + // spacing should go between atoms of different classes + + + if (node.classes[0] === "mspace") { + continue; + } + + const result = callback(node, prev.node); + + if (result) { + if (prev.insertAfter) { + prev.insertAfter(result); + } else { + // insert at front + nodes.unshift(result); + i++; + } + } + + prev.node = node; + + prev.insertAfter = (index => n => { + nodes.splice(index + 1, 0, n); + i++; + })(i); + } + + if (next) { + nodes.pop(); + } +}; // Check if given node is a partial group, i.e., does not affect spacing around. + + +const checkPartialGroup = function checkPartialGroup(node) { + if (node instanceof DocumentFragment || node instanceof Anchor) { + return node; + } + + return null; +}; // Return the outermost node of a domTree. + + +const getOutermostNode = function getOutermostNode(node, side) { + const partialGroup = checkPartialGroup(node); + + if (partialGroup) { + const children = partialGroup.children; + + if (children.length) { + if (side === "right") { + return getOutermostNode(children[children.length - 1], "right"); + } else if (side === "left") { + return getOutermostNode(children[0], "left"); + } + } + } + + return node; +}; // Return math atom class (mclass) of a domTree. +// If `side` is given, it will get the type of the outermost node at given side. + + +const getTypeOfDomTree = function getTypeOfDomTree(node, side) { + if (!node) { + return null; + } + + if (side) { + node = getOutermostNode(node, side); + } // This makes a lot of assumptions as to where the type of atom + // appears. We should do a better job of enforcing this. + + + return DomEnum[node.classes[0]] || null; +}; +const makeNullDelimiter = function makeNullDelimiter(options, classes) { + const moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); + return makeSpan$1(classes.concat(moreClasses)); +}; +/** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ + +const buildGroup = function buildGroup(group, options, baseOptions) { + if (!group) { + return makeSpan$1(); + } + + if (_htmlGroupBuilders[group.type]) { + // Call the groupBuilders function + let groupNode = _htmlGroupBuilders[group.type](group, options); // If the size changed between the parent and the current group, account + // for that size difference. + + if (baseOptions && options.size !== baseOptions.size) { + groupNode = makeSpan$1(options.sizingClasses(baseOptions), [groupNode], options); + const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new ParseError("Got group of unknown type: '" + group.type + "'"); + } +}; +/** + * Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`) + * into an unbreakable HTML node of class .base, with proper struts to + * guarantee correct vertical extent. `buildHTML` calls this repeatedly to + * make up the entire expression as a sequence of unbreakable units. + */ + +function buildHTMLUnbreakable(children, options) { + // Compute height and depth of this chunk. + const body = makeSpan$1(["base"], children, options); // Add strut, which ensures that the top of the HTML element falls at + // the height of the expression, and the bottom of the HTML element + // falls at the depth of the expression. + // We used to have separate top and bottom struts, where the bottom strut + // would like to use `vertical-align: top`, but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead of staying in + // the normal place) so we use an absolute value for vertical-align instead. + + const strut = makeSpan$1(["strut"]); + strut.style.height = body.height + body.depth + "em"; + strut.style.verticalAlign = -body.depth + "em"; + body.children.unshift(strut); + return body; +} +/** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ + + +function buildHTML(tree, options) { + // Strip off outer tag wrapper for processing below. + let tag = null; + + if (tree.length === 1 && tree[0].type === "tag") { + tag = tree[0].tag; + tree = tree[0].body; + } // Build the expression contained in the tree + + + const expression = buildExpression(tree, options, true); + const children = []; // Create one base node for each chunk between potential line breaks. + // The TeXBook [p.173] says "A formula will be broken only after a + // relation symbol like $=$ or $<$ or $\rightarrow$, or after a binary + // operation symbol like $+$ or $-$ or $\times$, where the relation or + // binary operation is on the ``outer level'' of the formula (i.e., not + // enclosed in {...} and not part of an \over construction)." + + let parts = []; + + for (let i = 0; i < expression.length; i++) { + parts.push(expression[i]); + + if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) { + // Put any post-operator glue on same line as operator. + // Watch for \nobreak along the way, and stop at \newline. + let nobreak = false; + + while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) { + i++; + parts.push(expression[i]); + + if (expression[i].hasClass("nobreak")) { + nobreak = true; + } + } // Don't allow break if \nobreak among the post-operator glue. + + + if (!nobreak) { + children.push(buildHTMLUnbreakable(parts, options)); + parts = []; + } + } else if (expression[i].hasClass("newline")) { + // Write the line except the newline + parts.pop(); + + if (parts.length > 0) { + children.push(buildHTMLUnbreakable(parts, options)); + parts = []; + } // Put the newline at the top level + + + children.push(expression[i]); + } + } + + if (parts.length > 0) { + children.push(buildHTMLUnbreakable(parts, options)); + } // Now, if there was a tag, build it too and append it as a final child. + + + let tagChild; + + if (tag) { + tagChild = buildHTMLUnbreakable(buildExpression(tag, options, true)); + tagChild.classes = ["tag"]; + children.push(tagChild); + } + + const htmlNode = makeSpan$1(["katex-html"], children); + htmlNode.setAttribute("aria-hidden", "true"); // Adjust the strut of the tag to be the maximum height of all children + // (the height of the enclosing htmlNode) for proper vertical alignment. + + if (tagChild) { + const strut = tagChild.children[0]; + strut.style.height = htmlNode.height + htmlNode.depth + "em"; + strut.style.verticalAlign = -htmlNode.depth + "em"; + } + + return htmlNode; +} + +/** + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. + */ +function newDocumentFragment(children) { + return new DocumentFragment(children); +} +/** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags). + */ + +class MathNode { + constructor(type, children) { + this.type = void 0; + this.attributes = void 0; + this.children = void 0; + this.type = type; + this.attributes = {}; + this.children = children || []; + } + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + + + setAttribute(name, value) { + this.attributes[name] = value; + } + /** + * Gets an attribute on a MathML node. + */ + + + getAttribute(name) { + return this.attributes[name]; + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + + toNode() { + const node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + for (let i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + + return node; + } + /** + * Converts the math node into an HTML markup string. + */ + + + toMarkup() { + let markup = "<" + this.type; // Add the attributes + + for (const attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += utils.escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (let i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += "</" + this.type + ">"; + return markup; + } + /** + * Converts the math node into a string, similar to innerText, but escaped. + */ + + + toText() { + return this.children.map(child => child.toText()).join(""); + } + +} +/** + * This node represents a piece of text. + */ + +class TextNode { + constructor(text) { + this.text = void 0; + this.text = text; + } + /** + * Converts the text node into a DOM text node. + */ + + + toNode() { + return document.createTextNode(this.text); + } + /** + * Converts the text node into escaped HTML markup + * (representing the text itself). + */ + + + toMarkup() { + return utils.escape(this.toText()); + } + /** + * Converts the text node into a string + * (representing the text iteself). + */ + + + toText() { + return this.text; + } + +} +/** + * This node represents a space, but may render as <mspace.../> or as text, + * depending on the width. + */ + +class SpaceNode { + /** + * Create a Space node with width given in CSS ems. + */ + constructor(width) { + this.width = void 0; + this.character = void 0; + this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html + // for a table of space-like characters. We use Unicode + // representations instead of &LongNames; as it's not clear how to + // make the latter via document.createTextNode. + + if (width >= 0.05555 && width <= 0.05556) { + this.character = "\u200a"; //   + } else if (width >= 0.1666 && width <= 0.1667) { + this.character = "\u2009"; //   + } else if (width >= 0.2222 && width <= 0.2223) { + this.character = "\u2005"; //   + } else if (width >= 0.2777 && width <= 0.2778) { + this.character = "\u2005\u200a"; //    + } else if (width >= -0.05556 && width <= -0.05555) { + this.character = "\u200a\u2063"; // ​ + } else if (width >= -0.1667 && width <= -0.1666) { + this.character = "\u2009\u2063"; // ​ + } else if (width >= -0.2223 && width <= -0.2222) { + this.character = "\u205f\u2063"; // ​ + } else if (width >= -0.2778 && width <= -0.2777) { + this.character = "\u2005\u2063"; // ​ + } else { + this.character = null; + } + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + + toNode() { + if (this.character) { + return document.createTextNode(this.character); + } else { + const node = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace"); + node.setAttribute("width", this.width + "em"); + return node; + } + } + /** + * Converts the math node into an HTML markup string. + */ + + + toMarkup() { + if (this.character) { + return `<mtext>${this.character}</mtext>`; + } else { + return `<mspace width="${this.width}em"/>`; + } + } + /** + * Converts the math node into a string, similar to innerText. + */ + + + toText() { + if (this.character) { + return this.character; + } else { + return " "; + } + } + +} + +var mathMLTree = { + MathNode, + TextNode, + SpaceNode, + newDocumentFragment +}; + +/** + * This file converts a parse tree into a cooresponding MathML tree. The main + * entry point is the `buildMathML` function, which takes a parse tree from the + * parser. + */ + +/** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ +const makeText = function makeText(text, mode, options) { + if (symbols[mode][text] && symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(ligatures.hasOwnProperty(text) && options && (options.fontFamily && options.fontFamily.substr(4, 2) === "tt" || options.font && options.font.substr(4, 2) === "tt"))) { + text = symbols[mode][text].replace; + } + + return new mathMLTree.TextNode(text); +}; +/** + * Wrap the given array of nodes in an <mrow> node if needed, i.e., + * unless the array has length 1. Always returns a single node. + */ + +const makeRow = function makeRow(body) { + if (body.length === 1) { + return body[0]; + } else { + return new mathMLTree.MathNode("mrow", body); + } +}; +/** + * Returns the math variant as a string or null if none is required. + */ + +const getVariant = function getVariant(group, options) { + // Handle \text... font specifiers as best we can. + // MathML has a limited list of allowable mathvariant specifiers; see + // https://www.w3.org/TR/MathML3/chapter3.html#presm.commatt + if (options.fontFamily === "texttt") { + return "monospace"; + } else if (options.fontFamily === "textsf") { + if (options.fontShape === "textit" && options.fontWeight === "textbf") { + return "sans-serif-bold-italic"; + } else if (options.fontShape === "textit") { + return "sans-serif-italic"; + } else if (options.fontWeight === "textbf") { + return "bold-sans-serif"; + } else { + return "sans-serif"; + } + } else if (options.fontShape === "textit" && options.fontWeight === "textbf") { + return "bold-italic"; + } else if (options.fontShape === "textit") { + return "italic"; + } else if (options.fontWeight === "textbf") { + return "bold"; + } + + const font = options.font; + + if (!font || font === "mathnormal") { + return null; + } + + const mode = group.mode; + + if (font === "mathit") { + return "italic"; + } else if (font === "boldsymbol") { + return "bold-italic"; + } else if (font === "mathbf") { + return "bold"; + } else if (font === "mathbb") { + return "double-struck"; + } else if (font === "mathfrak") { + return "fraktur"; + } else if (font === "mathscr" || font === "mathcal") { + // MathML makes no distinction between script and caligrahpic + return "script"; + } else if (font === "mathsf") { + return "sans-serif"; + } else if (font === "mathtt") { + return "monospace"; + } + + let text = group.text; + + if (utils.contains(["\\imath", "\\jmath"], text)) { + return null; + } + + if (symbols[mode][text] && symbols[mode][text].replace) { + text = symbols[mode][text].replace; + } + + const fontName = buildCommon.fontMap[font].fontName; + + if (getCharacterMetrics(text, fontName, mode)) { + return buildCommon.fontMap[font].variant; + } + + return null; +}; +/** + * Takes a list of nodes, builds them, and returns a list of the generated + * MathML nodes. Also combine consecutive <mtext> outputs into a single + * <mtext> tag. + */ + +const buildExpression$1 = function buildExpression(expression, options, isOrdgroup) { + if (expression.length === 1) { + const group = buildGroup$1(expression[0], options); + + if (isOrdgroup && group instanceof MathNode && group.type === "mo") { + // When TeX writers want to suppress spacing on an operator, + // they often put the operator by itself inside braces. + group.setAttribute("lspace", "0em"); + group.setAttribute("rspace", "0em"); + } + + return [group]; + } + + const groups = []; + let lastGroup; + + for (let i = 0; i < expression.length; i++) { + const group = buildGroup$1(expression[i], options); + + if (group instanceof MathNode && lastGroup instanceof MathNode) { + // Concatenate adjacent <mtext>s + if (group.type === 'mtext' && lastGroup.type === 'mtext' && group.getAttribute('mathvariant') === lastGroup.getAttribute('mathvariant')) { + lastGroup.children.push(...group.children); + continue; // Concatenate adjacent <mn>s + } else if (group.type === 'mn' && lastGroup.type === 'mn') { + lastGroup.children.push(...group.children); + continue; // Concatenate <mn>...</mn> followed by <mi>.</mi> + } else if (group.type === 'mi' && group.children.length === 1 && lastGroup.type === 'mn') { + const child = group.children[0]; + + if (child instanceof TextNode && child.text === '.') { + lastGroup.children.push(...group.children); + continue; + } + } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) { + const lastChild = lastGroup.children[0]; + + if (lastChild instanceof TextNode && lastChild.text === '\u0338' && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) { + const child = group.children[0]; + + if (child instanceof TextNode && child.text.length > 0) { + // Overlay with combining character long solidus + child.text = child.text.slice(0, 1) + "\u0338" + child.text.slice(1); + groups.pop(); + } + } + } + } + + groups.push(group); + lastGroup = group; + } + + return groups; +}; +/** + * Equivalent to buildExpression, but wraps the elements in an <mrow> + * if there's more than one. Returns a single node instead of an array. + */ + +const buildExpressionRow = function buildExpressionRow(expression, options, isOrdgroup) { + return makeRow(buildExpression$1(expression, options, isOrdgroup)); +}; +/** + * Takes a group from the parser and calls the appropriate groupBuilders function + * on it to produce a MathML node. + */ + +const buildGroup$1 = function buildGroup(group, options) { + if (!group) { + return new mathMLTree.MathNode("mrow"); + } + + if (_mathmlGroupBuilders[group.type]) { + // Call the groupBuilders function + const result = _mathmlGroupBuilders[group.type](group, options); + return result; + } else { + throw new ParseError("Got group of unknown type: '" + group.type + "'"); + } +}; +/** + * Takes a full parse tree and settings and builds a MathML representation of + * it. In particular, we put the elements from building the parse tree into a + * <semantics> tag so we can also include that TeX source as an annotation. + * + * Note that we actually return a domTree element with a `<math>` inside it so + * we can do appropriate styling. + */ + +function buildMathML(tree, texExpression, options, forMathmlOnly) { + const expression = buildExpression$1(tree, options); // Wrap up the expression in an mrow so it is presented in the semantics + // tag correctly, unless it's a single <mrow> or <mtable>. + + let wrapper; + + if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains(["mrow", "mtable"], expression[0].type)) { + wrapper = expression[0]; + } else { + wrapper = new mathMLTree.MathNode("mrow", expression); + } // Build a TeX annotation of the source + + + const annotation = new mathMLTree.MathNode("annotation", [new mathMLTree.TextNode(texExpression)]); + annotation.setAttribute("encoding", "application/x-tex"); + const semantics = new mathMLTree.MathNode("semantics", [wrapper, annotation]); + const math = new mathMLTree.MathNode("math", [semantics]); + math.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"); // You can't style <math> nodes, so we wrap the node in a span. + // NOTE: The span class is not typed to have <math> nodes as children, and + // we don't want to make the children type more generic since the children + // of span are expected to have more fields in `buildHtml` contexts. + + const wrapperClass = forMathmlOnly ? "katex" : "katex-mathml"; // $FlowFixMe + + return buildCommon.makeSpan([wrapperClass], [math]); +} + +const optionsFromSettings = function optionsFromSettings(settings) { + return new Options({ + style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT, + maxSize: settings.maxSize, + minRuleThickness: settings.minRuleThickness + }); +}; + +const displayWrap = function displayWrap(node, settings) { + if (settings.displayMode) { + const classes = ["katex-display"]; + + if (settings.leqno) { + classes.push("leqno"); + } + + if (settings.fleqn) { + classes.push("fleqn"); + } + + node = buildCommon.makeSpan(classes, [node]); + } + + return node; +}; + +const buildTree = function buildTree(tree, expression, settings) { + const options = optionsFromSettings(settings); + let katexNode; + + if (settings.output === "mathml") { + return buildMathML(tree, expression, options, true); + } else if (settings.output === "html") { + const htmlNode = buildHTML(tree, options); + katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); + } else { + const mathMLNode = buildMathML(tree, expression, options, false); + const htmlNode = buildHTML(tree, options); + katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]); + } + + return displayWrap(katexNode, settings); +}; +const buildHTMLTree = function buildHTMLTree(tree, expression, settings) { + const options = optionsFromSettings(settings); + const htmlNode = buildHTML(tree, options); + const katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); + return displayWrap(katexNode, settings); +}; + +/** + * This file provides support to buildMathML.js and buildHTML.js + * for stretchy wide elements rendered from SVG files + * and other CSS trickery. + */ +const stretchyCodePoint = { + widehat: "^", + widecheck: "ˇ", + widetilde: "~", + utilde: "~", + overleftarrow: "\u2190", + underleftarrow: "\u2190", + xleftarrow: "\u2190", + overrightarrow: "\u2192", + underrightarrow: "\u2192", + xrightarrow: "\u2192", + underbrace: "\u23df", + overbrace: "\u23de", + overgroup: "\u23e0", + undergroup: "\u23e1", + overleftrightarrow: "\u2194", + underleftrightarrow: "\u2194", + xleftrightarrow: "\u2194", + Overrightarrow: "\u21d2", + xRightarrow: "\u21d2", + overleftharpoon: "\u21bc", + xleftharpoonup: "\u21bc", + overrightharpoon: "\u21c0", + xrightharpoonup: "\u21c0", + xLeftarrow: "\u21d0", + xLeftrightarrow: "\u21d4", + xhookleftarrow: "\u21a9", + xhookrightarrow: "\u21aa", + xmapsto: "\u21a6", + xrightharpoondown: "\u21c1", + xleftharpoondown: "\u21bd", + xrightleftharpoons: "\u21cc", + xleftrightharpoons: "\u21cb", + xtwoheadleftarrow: "\u219e", + xtwoheadrightarrow: "\u21a0", + xlongequal: "=", + xtofrom: "\u21c4", + xrightleftarrows: "\u21c4", + xrightequilibrium: "\u21cc", + // Not a perfect match. + xleftequilibrium: "\u21cb" // None better available. + +}; + +const mathMLnode = function mathMLnode(label) { + const node = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.substr(1)])]); + node.setAttribute("stretchy", "true"); + return node; +}; // Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. +// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>) +// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>) +// Licensed under the SIL Open Font License, Version 1.1. +// See \nhttp://scripts.sil.org/OFL +// Very Long SVGs +// Many of the KaTeX stretchy wide elements use a long SVG image and an +// overflow: hidden tactic to achieve a stretchy image while avoiding +// distortion of arrowheads or brace corners. +// The SVG typically contains a very long (400 em) arrow. +// The SVG is in a container span that has overflow: hidden, so the span +// acts like a window that exposes only part of the SVG. +// The SVG always has a longer, thinner aspect ratio than the container span. +// After the SVG fills 100% of the height of the container span, +// there is a long arrow shaft left over. That left-over shaft is not shown. +// Instead, it is sliced off because the span's CSS has overflow: hidden. +// Thus, the reader sees an arrow that matches the subject matter width +// without distortion. +// Some functions, such as \cancel, need to vary their aspect ratio. These +// functions do not get the overflow SVG treatment. +// Second Brush Stroke +// Low resolution monitors struggle to display images in fine detail. +// So browsers apply anti-aliasing. A long straight arrow shaft therefore +// will sometimes appear as if it has a blurred edge. +// To mitigate this, these SVG files contain a second "brush-stroke" on the +// arrow shafts. That is, a second long thin rectangular SVG path has been +// written directly on top of each arrow shaft. This reinforcement causes +// some of the screen pixels to display as black instead of the anti-aliased +// gray pixel that a single path would generate. So we get arrow shafts +// whose edges appear to be sharper. +// In the katexImagesData object just below, the dimensions all +// correspond to path geometry inside the relevant SVG. +// For example, \overrightarrow uses the same arrowhead as glyph U+2192 +// from the KaTeX Main font. The scaling factor is 1000. +// That is, inside the font, that arrowhead is 522 units tall, which +// corresponds to 0.522 em inside the document. + + +const katexImagesData = { + // path(s), minWidth, height, align + overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], + xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], + Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], + xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], + xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], + overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], + overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], + xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], + xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], + xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], + overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], + underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], + underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], + xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], + xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], + xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], + xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], + xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], + overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + overgroup: [["leftgroup", "rightgroup"], 0.888, 342], + undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], + xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], + xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], + // The next three arrows are from the mhchem package. + // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the + // document as \xrightarrow or \xrightleftharpoons. Those have + // min-length = 1.75em, so we set min-length on these next three to match. + xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], + xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], + xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] +}; + +const groupLength = function groupLength(arg) { + if (arg.type === "ordgroup") { + return arg.body.length; + } else { + return 1; + } +}; + +const svgSpan = function svgSpan(group, options) { + // Create a span with inline SVG for the element. + function buildSvgSpan_() { + let viewBoxWidth = 400000; // default + + const label = group.label.substr(1); + + if (utils.contains(["widehat", "widecheck", "widetilde", "utilde"], label)) { + // Each type in the `if` statement corresponds to one of the ParseNode + // types below. This narrowing is required to access `grp.base`. + const grp = group; // There are four SVG images available for each function. + // Choose a taller image when there are more characters. + + const numChars = groupLength(grp.base); + let viewBoxHeight; + let pathName; + let height; + + if (numChars > 5) { + if (label === "widehat" || label === "widecheck") { + viewBoxHeight = 420; + viewBoxWidth = 2364; + height = 0.42; + pathName = label + "4"; + } else { + viewBoxHeight = 312; + viewBoxWidth = 2340; + height = 0.34; + pathName = "tilde4"; + } + } else { + const imgIndex = [1, 1, 2, 2, 3, 3][numChars]; + + if (label === "widehat" || label === "widecheck") { + viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex]; + viewBoxHeight = [0, 239, 300, 360, 420][imgIndex]; + height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex]; + pathName = label + imgIndex; + } else { + viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex]; + viewBoxHeight = [0, 260, 286, 306, 312][imgIndex]; + height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex]; + pathName = "tilde" + imgIndex; + } + } + + const path = new PathNode(pathName); + const svgNode = new SvgNode([path], { + "width": "100%", + "height": height + "em", + "viewBox": `0 0 ${viewBoxWidth} ${viewBoxHeight}`, + "preserveAspectRatio": "none" + }); + return { + span: buildCommon.makeSvgSpan([], [svgNode], options), + minWidth: 0, + height + }; + } else { + const spans = []; + const data = katexImagesData[label]; + const paths = data[0], + minWidth = data[1], + viewBoxHeight = data[2]; + const height = viewBoxHeight / 1000; + const numSvgChildren = paths.length; + let widthClasses; + let aligns; + + if (numSvgChildren === 1) { + // $FlowFixMe: All these cases must be of the 4-tuple type. + const align1 = data[3]; + widthClasses = ["hide-tail"]; + aligns = [align1]; + } else if (numSvgChildren === 2) { + widthClasses = ["halfarrow-left", "halfarrow-right"]; + aligns = ["xMinYMin", "xMaxYMin"]; + } else if (numSvgChildren === 3) { + widthClasses = ["brace-left", "brace-center", "brace-right"]; + aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"]; + } else { + throw new Error(`Correct katexImagesData or update code here to support + ${numSvgChildren} children.`); + } + + for (let i = 0; i < numSvgChildren; i++) { + const path = new PathNode(paths[i]); + const svgNode = new SvgNode([path], { + "width": "400em", + "height": height + "em", + "viewBox": `0 0 ${viewBoxWidth} ${viewBoxHeight}`, + "preserveAspectRatio": aligns[i] + " slice" + }); + const span = buildCommon.makeSvgSpan([widthClasses[i]], [svgNode], options); + + if (numSvgChildren === 1) { + return { + span, + minWidth, + height + }; + } else { + span.style.height = height + "em"; + spans.push(span); + } + } + + return { + span: buildCommon.makeSpan(["stretchy"], spans, options), + minWidth, + height + }; + } + } // buildSvgSpan_() + + + const _buildSvgSpan_ = buildSvgSpan_(), + span = _buildSvgSpan_.span, + minWidth = _buildSvgSpan_.minWidth, + height = _buildSvgSpan_.height; // Note that we are returning span.depth = 0. + // Any adjustments relative to the baseline must be done in buildHTML. + + + span.height = height; + span.style.height = height + "em"; + + if (minWidth > 0) { + span.style.minWidth = minWidth + "em"; + } + + return span; +}; + +const encloseSpan = function encloseSpan(inner, label, pad, options) { + // Return an image span for \cancel, \bcancel, \xcancel, or \fbox + let img; + const totalHeight = inner.height + inner.depth + 2 * pad; + + if (/fbox|color/.test(label)) { + img = buildCommon.makeSpan(["stretchy", label], [], options); + + if (label === "fbox") { + const color = options.color && options.getColor(); + + if (color) { + img.style.borderColor = color; + } + } + } else { + // \cancel, \bcancel, or \xcancel + // Since \cancel's SVG is inline and it omits the viewBox attribute, + // its stroke-width will not vary with span area. + const lines = []; + + if (/^[bx]cancel$/.test(label)) { + lines.push(new LineNode({ + "x1": "0", + "y1": "0", + "x2": "100%", + "y2": "100%", + "stroke-width": "0.046em" + })); + } + + if (/^x?cancel$/.test(label)) { + lines.push(new LineNode({ + "x1": "0", + "y1": "100%", + "x2": "100%", + "y2": "0", + "stroke-width": "0.046em" + })); + } + + const svgNode = new SvgNode(lines, { + "width": "100%", + "height": totalHeight + "em" + }); + img = buildCommon.makeSvgSpan([], [svgNode], options); + } + + img.height = totalHeight; + img.style.height = totalHeight + "em"; + return img; +}; + +var stretchy = { + encloseSpan, + mathMLnode, + svgSpan +}; + +// NOTE: Unlike most `htmlBuilder`s, this one handles not only "accent", but +const htmlBuilder = (grp, options) => { + // Accents are handled in the TeXbook pg. 443, rule 12. + let base; + let group; + const supSub = checkNodeType(grp, "supsub"); + let supSubGroup; + + if (supSub) { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + // The real accent group is the base of the supsub group + group = assertNodeType(supSub.base, "accent"); // The character box is the base of the accent group + + base = group.base; // Stick the character box into the base of the supsub group + + supSub.base = base; // Rerender the supsub group with its new base, and store that + // result. + + supSubGroup = assertSpan(buildGroup(supSub, options)); // reset original base + + supSub.base = group; + } else { + group = assertNodeType(grp, "accent"); + base = group.base; + } // Build the base group + + + const body = buildGroup(base, options.havingCrampedStyle()); // Does the accent need to shift for the skew of a character? + + const mustShift = group.isShifty && utils.isCharacterBox(base); // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + + let skew = 0; + + if (mustShift) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + const baseChar = utils.getBaseElem(base); // Then, we render its group to get the symbol inside it + + const baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); // Finally, we pull the skew off of the symbol. + + skew = assertSymbolDomNode(baseGroup).skew; // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } // calculate the amount of space between the body and the accent + + + let clearance = Math.min(body.height, options.fontMetrics().xHeight); // Build the accent + + let accentBody; + + if (!group.isStretchy) { + let accent; + let width; + + if (group.label === "\\vec") { + // Before version 0.9, \vec used the combining font glyph U+20D7. + // But browsers, especially Safari, are not consistent in how they + // render combining characters when not preceded by a character. + // So now we use an SVG. + // If Safari reforms, we should consider reverting to the glyph. + accent = buildCommon.staticSvg("vec", options); + width = buildCommon.svgData.vec[1]; + } else { + accent = buildCommon.makeOrd({ + mode: group.mode, + text: group.label + }, options, "textord"); + accent = assertSymbolDomNode(accent); // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + + accent.italic = 0; + width = accent.width; + } + + accentBody = buildCommon.makeSpan(["accent-body"], [accent]); // "Full" accents expand the width of the resulting symbol to be + // at least the width of the accent, and overlap directly onto the + // character without any vertical offset. + + const accentFull = group.label === "\\textcircled"; + + if (accentFull) { + accentBody.classes.push('accent-full'); + clearance = body.height; + } // Shift the accent over by the skew. + + + let left = skew; // CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }` + // so that the accent doesn't contribute to the bounding box. + // We need to shift the character by its width (effectively half + // its width) to compensate. + + if (!accentFull) { + left -= width / 2; + } + + accentBody.style.left = left + "em"; // \textcircled uses the \bigcirc glyph, so it needs some + // vertical adjustment to match LaTeX. + + if (group.label === "\\textcircled") { + accentBody.style.top = ".2em"; + } + + accentBody = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: body + }, { + type: "kern", + size: -clearance + }, { + type: "elem", + elem: accentBody + }] + }, options); + } else { + accentBody = stretchy.svgSpan(group, options); + accentBody = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: body + }, { + type: "elem", + elem: accentBody, + wrapperClasses: ["svg-align"], + wrapperStyle: skew > 0 ? { + width: `calc(100% - ${2 * skew}em)`, + marginLeft: `${2 * skew}em` + } : undefined + }] + }, options); + } + + const accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options); + + if (supSubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supSubGroup.children[0] = accentWrap; // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + + supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height); // Accents should always be ords, even when their innards are not. + + supSubGroup.classes[0] = "mord"; + return supSubGroup; + } else { + return accentWrap; + } +}; + +const mathmlBuilder = (group, options) => { + const accentNode = group.isStretchy ? stretchy.mathMLnode(group.label) : new mathMLTree.MathNode("mo", [makeText(group.label, group.mode)]); + const node = new mathMLTree.MathNode("mover", [buildGroup$1(group.base, options), accentNode]); + node.setAttribute("accent", "true"); + return node; +}; + +const NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map(accent => `\\${accent}`).join("|")); // Accents + +defineFunction({ + type: "accent", + names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], + props: { + numArgs: 1 + }, + handler: (context, args) => { + const base = args[0]; + const isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName); + const isShifty = !isStretchy || context.funcName === "\\widehat" || context.funcName === "\\widetilde" || context.funcName === "\\widecheck"; + return { + type: "accent", + mode: context.parser.mode, + label: context.funcName, + isStretchy: isStretchy, + isShifty: isShifty, + base: base + }; + }, + htmlBuilder, + mathmlBuilder +}); // Text-mode accents + +defineFunction({ + type: "accent", + names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v", "\\textcircled"], + props: { + numArgs: 1, + allowedInText: true, + allowedInMath: false + }, + handler: (context, args) => { + const base = args[0]; + return { + type: "accent", + mode: context.parser.mode, + label: context.funcName, + isStretchy: false, + isShifty: true, + base: base + }; + }, + htmlBuilder, + mathmlBuilder +}); + +// Horizontal overlap functions +defineFunction({ + type: "accentUnder", + names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], + props: { + numArgs: 1 + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + const base = args[0]; + return { + type: "accentUnder", + mode: parser.mode, + label: funcName, + base: base + }; + }, + htmlBuilder: (group, options) => { + // Treat under accents much like underlines. + const innerGroup = buildGroup(group.base, options); + const accentBody = stretchy.svgSpan(group, options); + const kern = group.label === "\\utilde" ? 0.12 : 0; // Generate the vlist, with the appropriate kerns + + const vlist = buildCommon.makeVList({ + positionType: "bottom", + positionData: accentBody.height + kern, + children: [{ + type: "elem", + elem: accentBody, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: kern + }, { + type: "elem", + elem: innerGroup + }] + }, options); + return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options); + }, + mathmlBuilder: (group, options) => { + const accentNode = stretchy.mathMLnode(group.label); + const node = new mathMLTree.MathNode("munder", [buildGroup$1(group.base, options), accentNode]); + node.setAttribute("accentunder", "true"); + return node; + } +}); + +// Helper function +const paddedNode = group => { + const node = new mathMLTree.MathNode("mpadded", group ? [group] : []); + node.setAttribute("width", "+0.6em"); + node.setAttribute("lspace", "0.3em"); + return node; +}; // Stretchy arrows with an optional argument + + +defineFunction({ + type: "xArrow", + names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", // The next 3 functions are here to support the mhchem extension. + // Direct use of these functions is discouraged and may break someday. + "\\xrightleftarrows", "\\xrightequilibrium", "\\xleftequilibrium"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + + handler(_ref, args, optArgs) { + let parser = _ref.parser, + funcName = _ref.funcName; + return { + type: "xArrow", + mode: parser.mode, + label: funcName, + body: args[0], + below: optArgs[0] + }; + }, + + // Flow is unable to correctly infer the type of `group`, even though it's + // unamibiguously determined from the passed-in `type` above. + htmlBuilder(group, options) { + const style = options.style; // Build the argument groups in the appropriate style. + // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + + let newOptions = options.havingStyle(style.sup()); + const upperGroup = buildCommon.wrapFragment(buildGroup(group.body, newOptions, options), options); + upperGroup.classes.push("x-arrow-pad"); + let lowerGroup; + + if (group.below) { + // Build the lower group + newOptions = options.havingStyle(style.sub()); + lowerGroup = buildCommon.wrapFragment(buildGroup(group.below, newOptions, options), options); + lowerGroup.classes.push("x-arrow-pad"); + } + + const arrowBody = stretchy.svgSpan(group, options); // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0. + // The point we want on the math axis is at 0.5 * arrowBody.height. + + const arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; // 2 mu kern. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi + + let upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; // 0.111 em = 2 mu + + if (upperGroup.depth > 0.25 || group.label === "\\xleftequilibrium") { + upperShift -= upperGroup.depth; // shift up if depth encroaches + } // Generate the vlist + + + let vlist; + + if (lowerGroup) { + const lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; + vlist = buildCommon.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: upperGroup, + shift: upperShift + }, { + type: "elem", + elem: arrowBody, + shift: arrowShift + }, { + type: "elem", + elem: lowerGroup, + shift: lowerShift + }] + }, options); + } else { + vlist = buildCommon.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: upperGroup, + shift: upperShift + }, { + type: "elem", + elem: arrowBody, + shift: arrowShift + }] + }, options); + } // $FlowFixMe: Replace this with passing "svg-align" into makeVList. + + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options); + }, + + mathmlBuilder(group, options) { + const arrowNode = stretchy.mathMLnode(group.label); + let node; + + if (group.body) { + const upperNode = paddedNode(buildGroup$1(group.body, options)); + + if (group.below) { + const lowerNode = paddedNode(buildGroup$1(group.below, options)); + node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]); + } else { + node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]); + } + } else if (group.below) { + const lowerNode = paddedNode(buildGroup$1(group.below, options)); + node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]); + } else { + // This should never happen. + // Parser.js throws an error if there is no argument. + node = paddedNode(); + node = new mathMLTree.MathNode("mover", [arrowNode, node]); + } + + return node; + } + +}); + +// {123} and converts into symbol with code 123. It is used by the *macro* +// \char defined in macros.js. + +defineFunction({ + type: "textord", + names: ["\\@char"], + props: { + numArgs: 1, + allowedInText: true + }, + + handler(_ref, args) { + let parser = _ref.parser; + const arg = assertNodeType(args[0], "ordgroup"); + const group = arg.body; + let number = ""; + + for (let i = 0; i < group.length; i++) { + const node = assertNodeType(group[i], "textord"); + number += node.text; + } + + const code = parseInt(number); + + if (isNaN(code)) { + throw new ParseError(`\\@char has non-numeric argument ${number}`); + } + + return { + type: "textord", + mode: parser.mode, + text: String.fromCharCode(code) + }; + } + +}); + +const htmlBuilder$1 = (group, options) => { + const elements = buildExpression(group.body, options.withColor(group.color), false); // \color isn't supposed to affect the type of the elements it contains. + // To accomplish this, we wrap the results in a fragment, so the inner + // elements will be able to directly interact with their neighbors. For + // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` + + return buildCommon.makeFragment(elements); +}; + +const mathmlBuilder$1 = (group, options) => { + const inner = buildExpression$1(group.body, options.withColor(group.color)); + const node = new mathMLTree.MathNode("mstyle", inner); + node.setAttribute("mathcolor", group.color); + return node; +}; + +defineFunction({ + type: "color", + names: ["\\textcolor"], + props: { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "original"] + }, + + handler(_ref, args) { + let parser = _ref.parser; + const color = assertNodeType(args[0], "color-token").color; + const body = args[1]; + return { + type: "color", + mode: parser.mode, + color, + body: ordargument(body) + }; + }, + + htmlBuilder: htmlBuilder$1, + mathmlBuilder: mathmlBuilder$1 +}); +defineFunction({ + type: "color", + names: ["\\color"], + props: { + numArgs: 1, + allowedInText: true, + greediness: 3, + argTypes: ["color"] + }, + + handler(_ref2, args) { + let parser = _ref2.parser, + breakOnTokenText = _ref2.breakOnTokenText; + const color = assertNodeType(args[0], "color-token").color; // Set macro \current@color in current namespace to store the current + // color, mimicking the behavior of color.sty. + // This is currently used just to correctly color a \right + // that follows a \color command. + + parser.gullet.macros.set("\\current@color", color); // Parse out the implicit body that should be colored. + + const body = parser.parseExpression(true, breakOnTokenText); + return { + type: "color", + mode: parser.mode, + color, + body + }; + }, + + htmlBuilder: htmlBuilder$1, + mathmlBuilder: mathmlBuilder$1 +}); + +// Row breaks within tabular environments, and line breaks at top level +// same signature, we implement them as one megafunction, with newRow +// indicating whether we're in the \cr case, and newLine indicating whether +// to break the line in the \newline case. + +defineFunction({ + type: "cr", + names: ["\\cr", "\\newline"], + props: { + numArgs: 0, + numOptionalArgs: 1, + argTypes: ["size"], + allowedInText: true + }, + + handler(_ref, args, optArgs) { + let parser = _ref.parser, + funcName = _ref.funcName; + const size = optArgs[0]; + const newRow = funcName === "\\cr"; + let newLine = false; + + if (!newRow) { + if (parser.settings.displayMode && parser.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline " + "does nothing in display mode")) { + newLine = false; + } else { + newLine = true; + } + } + + return { + type: "cr", + mode: parser.mode, + newLine, + newRow, + size: size && assertNodeType(size, "size").value + }; + }, + + // The following builders are called only at the top level, + // not within tabular/array environments. + htmlBuilder(group, options) { + if (group.newRow) { + throw new ParseError("\\cr valid only within a tabular/array environment"); + } + + const span = buildCommon.makeSpan(["mspace"], [], options); + + if (group.newLine) { + span.classes.push("newline"); + + if (group.size) { + span.style.marginTop = calculateSize(group.size, options) + "em"; + } + } + + return span; + }, + + mathmlBuilder(group, options) { + const node = new mathMLTree.MathNode("mspace"); + + if (group.newLine) { + node.setAttribute("linebreak", "newline"); + + if (group.size) { + node.setAttribute("height", calculateSize(group.size, options) + "em"); + } + } + + return node; + } + +}); + +/** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + +/** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ +const getMetrics = function getMetrics(symbol, font, mode) { + const replace = symbols.math[symbol] && symbols.math[symbol].replace; + const metrics = getCharacterMetrics(replace || symbol, font, mode); + + if (!metrics) { + throw new Error(`Unsupported symbol ${symbol} and font size ${font}.`); + } + + return metrics; +}; +/** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ + + +const styleWrap = function styleWrap(delim, toStyle, options, classes) { + const newOptions = options.havingBaseStyle(toStyle); + const span = buildCommon.makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options); + const delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + span.height *= delimSizeMultiplier; + span.depth *= delimSizeMultiplier; + span.maxFontSize = newOptions.sizeMultiplier; + return span; +}; + +const centerSpan = function centerSpan(span, options, style) { + const newOptions = options.havingBaseStyle(style); + const shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; + span.classes.push("delimcenter"); + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; +}; +/** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ + + +const makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { + const text = buildCommon.makeSymbol(delim, "Main-Regular", mode, options); + const span = styleWrap(text, style, options, classes); + + if (center) { + centerSpan(span, options, style); + } + + return span; +}; +/** + * Builds a symbol in the given font size (note size is an integer) + */ + + +const mathrmSize = function mathrmSize(value, size, mode, options) { + return buildCommon.makeSymbol(value, "Size" + size + "-Regular", mode, options); +}; +/** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ + + +const makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { + const inner = mathrmSize(delim, size, mode, options); + const span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size], [inner], options), Style$1.TEXT, options, classes); + + if (center) { + centerSpan(span, options, Style$1.TEXT); + } + + return span; +}; +/** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ + + +const makeInner = function makeInner(symbol, font, mode) { + let sizeClass; // Apply the correct CSS class to choose the right font. + + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else + /* if (font === "Size4-Regular") */ + { + sizeClass = "delim-size4"; + } + + const inner = buildCommon.makeSpan(["delimsizinginner", sizeClass], [buildCommon.makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]); // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + + return { + type: "elem", + elem: inner + }; +}; // Helper for makeStackedDelim + + +const lap = { + type: "kern", + size: -0.005 +}; +/** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ + +const makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + let top; + let middle; + let repeat; + let bottom; + top = repeat = bottom = delim; + middle = null; // Also keep track of what font the delimiters are in + + let font = "Size1-Regular"; // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + + if (delim === "\\uparrow") { + repeat = bottom = "\u23d0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23d0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23d0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23a1"; + repeat = "\u23a2"; + bottom = "\u23a3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23a4"; + repeat = "\u23a5"; + bottom = "\u23a6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor" || delim === "\u230a") { + repeat = top = "\u23a2"; + bottom = "\u23a3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil" || delim === "\u2308") { + top = "\u23a1"; + repeat = bottom = "\u23a2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor" || delim === "\u230b") { + repeat = top = "\u23a5"; + bottom = "\u23a6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil" || delim === "\u2309") { + top = "\u23a4"; + repeat = bottom = "\u23a5"; + font = "Size4-Regular"; + } else if (delim === "(" || delim === "\\lparen") { + top = "\u239b"; + repeat = "\u239c"; + bottom = "\u239d"; + font = "Size4-Regular"; + } else if (delim === ")" || delim === "\\rparen") { + top = "\u239e"; + repeat = "\u239f"; + bottom = "\u23a0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23a7"; + middle = "\u23a8"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23ab"; + middle = "\u23ac"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup" || delim === "\u27ee") { + top = "\u23a7"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup" || delim === "\u27ef") { + top = "\u23ab"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache" || delim === "\u23b0") { + top = "\u23a7"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache" || delim === "\u23b1") { + top = "\u23ab"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } // Get the metrics of the four sections + + + const topMetrics = getMetrics(top, font, mode); + const topHeightTotal = topMetrics.height + topMetrics.depth; + const repeatMetrics = getMetrics(repeat, font, mode); + const repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + const bottomMetrics = getMetrics(bottom, font, mode); + const bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + let middleHeightTotal = 0; + let middleFactor = 1; + + if (middle !== null) { + const middleMetrics = getMetrics(middle, font, mode); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + + + const minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; // Compute the number of copies of the repeat symbol we will need + + const repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal))); // Compute the total height of the delimiter including all the symbols + + const realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + + let axisHeight = options.fontMetrics().axisHeight; + + if (center) { + axisHeight *= options.sizeMultiplier; + } // Calculate the depth + + + const depth = realHeightTotal / 2 - axisHeight; // This function differs from the TeX procedure in one way. + // We shift each repeat element downwards by 0.005em, to prevent a gap + // due to browser floating point rounding error. + // Then, at the last element-to element joint, we add one extra repeat + // element to cover the gap created by the shifts. + // Find the shift needed to align the upper end of the extra element at a point + // 0.005em above the lower end of the top element. + + const shiftOfExtraElement = (repeatCount + 1) * 0.005 - repeatHeightTotal; // Now, we start building the pieces that will go into the vlist + // Keep a list of the inner pieces + + const inners = []; // Add the bottom symbol + + inners.push(makeInner(bottom, font, mode)); + + if (middle === null) { + // Add that many symbols + for (let i = 0; i < repeatCount; i++) { + inners.push(lap); // overlap + + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (let i = 0; i < repeatCount; i++) { + inners.push(lap); + inners.push(makeInner(repeat, font, mode)); + } // Insert one extra repeat element. + + + inners.push({ + type: "kern", + size: shiftOfExtraElement + }); + inners.push(makeInner(repeat, font, mode)); + inners.push(lap); // Now insert the middle of the brace. + + inners.push(makeInner(middle, font, mode)); + + for (let i = 0; i < repeatCount; i++) { + inners.push(lap); + inners.push(makeInner(repeat, font, mode)); + } + } // To cover the gap create by the overlaps, insert one more repeat element, + // at a position that juts 0.005 above the bottom of the top element. + + + inners.push({ + type: "kern", + size: shiftOfExtraElement + }); + inners.push(makeInner(repeat, font, mode)); + inners.push(lap); // Add the top symbol + + inners.push(makeInner(top, font, mode)); // Finally, build the vlist + + const newOptions = options.havingBaseStyle(Style$1.TEXT); + const inner = buildCommon.makeVList({ + positionType: "bottom", + positionData: depth, + children: inners + }, newOptions); + return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner], newOptions), Style$1.TEXT, options, classes); +}; // All surds have 0.08em padding above the viniculum inside the SVG. +// That keeps browser span height rounding error from pinching the line. + + +const vbPad = 80; // padding above the surd, measured inside the viewBox. + +const emPad = 0.08; // padding, in ems, measured in the document. + +const sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, extraViniculum, options) { + const path = sqrtPath(sqrtName, extraViniculum, viewBoxHeight); + const pathNode = new PathNode(sqrtName, path); + const svg = new SvgNode([pathNode], { + // Note: 1000:1 ratio of viewBox to document em width. + "width": "400em", + "height": height + "em", + "viewBox": "0 0 400000 " + viewBoxHeight, + "preserveAspectRatio": "xMinYMin slice" + }); + return buildCommon.makeSvgSpan(["hide-tail"], [svg], options); +}; +/** + * Make a sqrt image of the given height, + */ + + +const makeSqrtImage = function makeSqrtImage(height, options) { + // Define a newOptions that removes the effect of size changes such as \Huge. + // We don't pick different a height surd for \Huge. For it, we scale up. + const newOptions = options.havingBaseSizing(); // Pick the desired surd glyph from a sequence of surds. + + const delim = traverseSequence("\\surd", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions); + let sizeMultiplier = newOptions.sizeMultiplier; // default + // The standard sqrt SVGs each have a 0.04em thick viniculum. + // If Settings.minRuleThickness is larger than that, we add extraViniculum. + + const extraViniculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness); // Create a span containing an SVG image of a sqrt symbol. + + let span; + let spanHeight = 0; + let texHeight = 0; + let viewBoxHeight = 0; + let advanceWidth; // We create viewBoxes with 80 units of "padding" above each surd. + // Then browser rounding error on the parent span height will not + // encroach on the ink of the viniculum. But that padding is not + // included in the TeX-like `height` used for calculation of + // vertical alignment. So texHeight = span.height < span.style.height. + + if (delim.type === "small") { + // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. + // 1000 unit normal glyph height. + viewBoxHeight = 1000 + 1000 * extraViniculum + vbPad; + + if (height < 1.0) { + sizeMultiplier = 1.0; // mimic a \textfont radical + } else if (height < 1.4) { + sizeMultiplier = 0.7; // mimic a \scriptfont radical + } + + spanHeight = (1.0 + extraViniculum + emPad) / sizeMultiplier; + texHeight = (1.00 + extraViniculum) / sizeMultiplier; + span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraViniculum, options); + span.style.minWidth = "0.853em"; + advanceWidth = 0.833 / sizeMultiplier; // from the font. + } else if (delim.type === "large") { + // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. + viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size]; + texHeight = (sizeToMaxHeight[delim.size] + extraViniculum) / sizeMultiplier; + spanHeight = (sizeToMaxHeight[delim.size] + extraViniculum + emPad) / sizeMultiplier; + span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraViniculum, options); + span.style.minWidth = "1.02em"; + advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font. + } else { + // Tall sqrt. In TeX, this would be stacked using multiple glyphs. + // We'll use a single SVG to accomplish the same thing. + spanHeight = height + extraViniculum + emPad; + texHeight = height + extraViniculum; + viewBoxHeight = Math.floor(1000 * height + extraViniculum) + vbPad; + span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraViniculum, options); + span.style.minWidth = "0.742em"; + advanceWidth = 1.056; + } + + span.height = texHeight; + span.style.height = spanHeight + "em"; + return { + span, + advanceWidth, + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraViniculum) * sizeMultiplier + }; +}; // There are three kinds of delimiters, delimiters that stack when they become +// too large + + +const stackLargeDelimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"]; // delimiters that always stack + +const stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1"]; // and delimiters that never stack + +const stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; // Metrics of the different sizes. Found by looking at TeX's output of +// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ +// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. + +const sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; +/** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ + +const makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt" || delim === "\u27e8") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt" || delim === "\u27e9") { + delim = "\\rangle"; + } // Sized delimiters are never centered. + + + if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (utils.contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new ParseError("Illegal delimiter: '" + delim + "'"); + } +}; +/** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + + +// Delimiters that never stack try small delimiters and large delimiters only +const stackNeverDelimiterSequence = [{ + type: "small", + style: Style$1.SCRIPTSCRIPT +}, { + type: "small", + style: Style$1.SCRIPT +}, { + type: "small", + style: Style$1.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}]; // Delimiters that always stack try the small delimiters first, then stack + +const stackAlwaysDelimiterSequence = [{ + type: "small", + style: Style$1.SCRIPTSCRIPT +}, { + type: "small", + style: Style$1.SCRIPT +}, { + type: "small", + style: Style$1.TEXT +}, { + type: "stack" +}]; // Delimiters that stack when large try the small and then large delimiters, and +// stack afterwards + +const stackLargeDelimiterSequence = [{ + type: "small", + style: Style$1.SCRIPTSCRIPT +}, { + type: "small", + style: Style$1.SCRIPT +}, { + type: "small", + style: Style$1.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}, { + type: "stack" +}]; +/** + * Get the font used in a delimiter based on what kind of delimiter it is. + * TODO(#963) Use more specific font family return type once that is introduced. + */ + +const delimTypeToFont = function delimTypeToFont(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } else { + throw new Error(`Add support for delim type '${type.type}' here.`); + } +}; +/** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ + + +const traverseSequence = function traverseSequence(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + const start = Math.min(2, 3 - options.style.size); + + for (let i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + const metrics = getMetrics(delim, delimTypeToFont(sequence[i]), "math"); + let heightDepth = metrics.height + metrics.depth; // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + const newOptions = options.havingBaseStyle(sequence[i].style); + heightDepth *= newOptions.sizeMultiplier; + } // Check if the delimiter at this size works for the given height. + + + if (heightDepth > height) { + return sequence[i]; + } + } // If we reached the end of the sequence, return the last sequence element. + + + return sequence[sequence.length - 1]; +}; +/** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ + + +const makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { + if (delim === "<" || delim === "\\lt" || delim === "\u27e8") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt" || delim === "\u27e9") { + delim = "\\rangle"; + } // Decide what sequence to use + + + let sequence; + + if (utils.contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (utils.contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } // Look through the sequence + + + const delimType = traverseSequence(delim, height, sequence, options); // Get the delimiter from font glyphs. + // Depending on the sequence element we decided on, call the + // appropriate function. + + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, classes); + } else + /* if (delimType.type === "stack") */ + { + return makeStackedDelim(delim, height, center, options, mode, classes); + } +}; +/** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ + + +const makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { + // We always center \left/\right delimiters, so the axis is always shifted + const axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; // Taken from TeX source, tex.web, function make_left_right + + const delimiterFactor = 901; + const delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; + const maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); + const totalHeight = Math.max( // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); +}; + +var delimiter = { + sqrtImage: makeSqrtImage, + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim +}; + +// Extra data needed for the delimiter handler down below +const delimiterSizes = { + "\\bigl": { + mclass: "mopen", + size: 1 + }, + "\\Bigl": { + mclass: "mopen", + size: 2 + }, + "\\biggl": { + mclass: "mopen", + size: 3 + }, + "\\Biggl": { + mclass: "mopen", + size: 4 + }, + "\\bigr": { + mclass: "mclose", + size: 1 + }, + "\\Bigr": { + mclass: "mclose", + size: 2 + }, + "\\biggr": { + mclass: "mclose", + size: 3 + }, + "\\Biggr": { + mclass: "mclose", + size: 4 + }, + "\\bigm": { + mclass: "mrel", + size: 1 + }, + "\\Bigm": { + mclass: "mrel", + size: 2 + }, + "\\biggm": { + mclass: "mrel", + size: 3 + }, + "\\Biggm": { + mclass: "mrel", + size: 4 + }, + "\\big": { + mclass: "mord", + size: 1 + }, + "\\Big": { + mclass: "mord", + size: 2 + }, + "\\bigg": { + mclass: "mord", + size: 3 + }, + "\\Bigg": { + mclass: "mord", + size: 4 + } +}; +const delimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "<", ">", "\\langle", "\u27e8", "\\rangle", "\u27e9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; + +// Delimiter functions +function checkDelimiter(delim, context) { + const symDelim = checkSymbolNodeType(delim); + + if (symDelim && utils.contains(delimiters, symDelim.text)) { + return symDelim; + } else { + throw new ParseError("Invalid delimiter: '" + (symDelim ? symDelim.text : JSON.stringify(delim)) + "' after '" + context.funcName + "'", delim); + } +} + +defineFunction({ + type: "delimsizing", + names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], + props: { + numArgs: 1 + }, + handler: (context, args) => { + const delim = checkDelimiter(args[0], context); + return { + type: "delimsizing", + mode: context.parser.mode, + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + delim: delim.text + }; + }, + htmlBuilder: (group, options) => { + if (group.delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return buildCommon.makeSpan([group.mclass]); + } // Use delimiter.sizedDelim to generate the delimiter. + + + return delimiter.sizedDelim(group.delim, group.size, options, group.mode, [group.mclass]); + }, + mathmlBuilder: group => { + const children = []; + + if (group.delim !== ".") { + children.push(makeText(group.delim, group.mode)); + } + + const node = new mathMLTree.MathNode("mo", children); + + if (group.mclass === "mopen" || group.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } + + return node; + } +}); + +function assertParsed(group) { + if (!group.body) { + throw new Error("Bug: The leftright ParseNode wasn't fully parsed."); + } +} + +defineFunction({ + type: "leftright-right", + names: ["\\right"], + props: { + numArgs: 1 + }, + handler: (context, args) => { + // \left case below triggers parsing of \right in + // `const right = parser.parseFunction();` + // uses this return value. + const color = context.parser.gullet.macros.get("\\current@color"); + + if (color && typeof color !== "string") { + throw new ParseError("\\current@color set to non-string in \\right"); + } + + return { + type: "leftright-right", + mode: context.parser.mode, + delim: checkDelimiter(args[0], context).text, + color // undefined if not set via \color + + }; + } +}); +defineFunction({ + type: "leftright", + names: ["\\left"], + props: { + numArgs: 1 + }, + handler: (context, args) => { + const delim = checkDelimiter(args[0], context); + const parser = context.parser; // Parse out the implicit body + + ++parser.leftrightDepth; // parseExpression stops before '\\right' + + const body = parser.parseExpression(false); + --parser.leftrightDepth; // Check the next token + + parser.expect("\\right", false); + const right = assertNodeType(parser.parseFunction(), "leftright-right"); + return { + type: "leftright", + mode: parser.mode, + body, + left: delim.text, + right: right.delim, + rightColor: right.color + }; + }, + htmlBuilder: (group, options) => { + assertParsed(group); // Build the inner expression + + const inner = buildExpression(group.body, options, true, ["mopen", "mclose"]); + let innerHeight = 0; + let innerDepth = 0; + let hadMiddle = false; // Calculate its height and depth + + for (let i = 0; i < inner.length; i++) { + // Property `isMiddle` not defined on `span`. See comment in + // "middle"'s htmlBuilder. + // $FlowFixMe + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + + + innerHeight *= options.sizeMultiplier; + innerDepth *= options.sizeMultiplier; + let leftDelim; + + if (group.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = delimiter.leftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + } // Add it to the beginning of the expression + + + inner.unshift(leftDelim); // Handle middle delimiters + + if (hadMiddle) { + for (let i = 1; i < inner.length; i++) { + const middleDelim = inner[i]; // Property `isMiddle` not defined on `span`. See comment in + // "middle"'s htmlBuilder. + // $FlowFixMe + + const isMiddle = middleDelim.isMiddle; + + if (isMiddle) { + // Apply the options that were active when \middle was called + inner[i] = delimiter.leftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []); + } + } + } + + let rightDelim; // Same for the right delimiter, but using color specified by \color + + if (group.right === ".") { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + const colorOptions = group.rightColor ? options.withColor(group.rightColor) : options; + rightDelim = delimiter.leftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, ["mclose"]); + } // Add it to the end of the expression. + + + inner.push(rightDelim); + return buildCommon.makeSpan(["minner"], inner, options); + }, + mathmlBuilder: (group, options) => { + assertParsed(group); + const inner = buildExpression$1(group.body, options); + + if (group.left !== ".") { + const leftNode = new mathMLTree.MathNode("mo", [makeText(group.left, group.mode)]); + leftNode.setAttribute("fence", "true"); + inner.unshift(leftNode); + } + + if (group.right !== ".") { + const rightNode = new mathMLTree.MathNode("mo", [makeText(group.right, group.mode)]); + rightNode.setAttribute("fence", "true"); + + if (group.rightColor) { + rightNode.setAttribute("mathcolor", group.rightColor); + } + + inner.push(rightNode); + } + + return makeRow(inner); + } +}); +defineFunction({ + type: "middle", + names: ["\\middle"], + props: { + numArgs: 1 + }, + handler: (context, args) => { + const delim = checkDelimiter(args[0], context); + + if (!context.parser.leftrightDepth) { + throw new ParseError("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + mode: context.parser.mode, + delim: delim.text + }; + }, + htmlBuilder: (group, options) => { + let middleDelim; + + if (group.delim === ".") { + middleDelim = makeNullDelimiter(options, []); + } else { + middleDelim = delimiter.sizedDelim(group.delim, 1, options, group.mode, []); + const isMiddle = { + delim: group.delim, + options + }; // Property `isMiddle` not defined on `span`. It is only used in + // this file above. + // TODO: Fix this violation of the `span` type and possibly rename + // things since `isMiddle` sounds like a boolean, but is a struct. + // $FlowFixMe + + middleDelim.isMiddle = isMiddle; + } + + return middleDelim; + }, + mathmlBuilder: (group, options) => { + // A Firefox \middle will strech a character vertically only if it + // is in the fence part of the operator dictionary at: + // https://www.w3.org/TR/MathML3/appendixc.html. + // So we need to avoid U+2223 and use plain "|" instead. + const textNode = group.delim === "\\vert" || group.delim === "|" ? makeText("|", "text") : makeText(group.delim, group.mode); + const middleNode = new mathMLTree.MathNode("mo", [textNode]); + middleNode.setAttribute("fence", "true"); // MathML gives 5/18em spacing to each <mo> element. + // \middle should get delimiter spacing instead. + + middleNode.setAttribute("lspace", "0.05em"); + middleNode.setAttribute("rspace", "0.05em"); + return middleNode; + } +}); + +const htmlBuilder$2 = (group, options) => { + // \cancel, \bcancel, \xcancel, \sout, \fbox, \colorbox, \fcolorbox + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + const inner = buildCommon.wrapFragment(buildGroup(group.body, options), options); + const label = group.label.substr(1); + const scale = options.sizeMultiplier; + let img; + let imgShift = 0; // In the LaTeX cancel package, line geometry is slightly different + // depending on whether the subject is wider than it is tall, or vice versa. + // We don't know the width of a group, so as a proxy, we test if + // the subject is a single character. This captures most of the + // subjects that should get the "tall" treatment. + + const isSingleChar = utils.isCharacterBox(group.body); + + if (label === "sout") { + img = buildCommon.makeSpan(["stretchy", "sout"]); + img.height = options.fontMetrics().defaultRuleThickness / scale; + imgShift = -0.5 * options.fontMetrics().xHeight; + } else { + // Add horizontal padding + if (/cancel/.test(label)) { + if (!isSingleChar) { + inner.classes.push("cancel-pad"); + } + } else { + inner.classes.push("boxpad"); + } // Add vertical padding + + + let vertPad = 0; + let ruleThickness = 0; // ref: cancel package: \advance\totalheight2\p@ % "+2" + + if (/box/.test(label)) { + ruleThickness = Math.max(options.fontMetrics().fboxrule, // default + options.minRuleThickness // User override. + ); + vertPad = options.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness); + } else { + vertPad = isSingleChar ? 0.2 : 0; + } + + img = stretchy.encloseSpan(inner, label, vertPad, options); + + if (/fbox|boxed|fcolorbox/.test(label)) { + img.style.borderStyle = "solid"; + img.style.borderWidth = `${ruleThickness}em`; + } + + imgShift = inner.depth + vertPad; + + if (group.backgroundColor) { + img.style.backgroundColor = group.backgroundColor; + + if (group.borderColor) { + img.style.borderColor = group.borderColor; + } + } + } + + let vlist; + + if (group.backgroundColor) { + vlist = buildCommon.makeVList({ + positionType: "individualShift", + children: [// Put the color background behind inner; + { + type: "elem", + elem: img, + shift: imgShift + }, { + type: "elem", + elem: inner, + shift: 0 + }] + }, options); + } else { + vlist = buildCommon.makeVList({ + positionType: "individualShift", + children: [// Write the \cancel stroke on top of inner. + { + type: "elem", + elem: inner, + shift: 0 + }, { + type: "elem", + elem: img, + shift: imgShift, + wrapperClasses: /cancel/.test(label) ? ["svg-align"] : [] + }] + }, options); + } + + if (/cancel/.test(label)) { + // The cancel package documentation says that cancel lines add their height + // to the expression, but tests show that isn't how it actually works. + vlist.height = inner.height; + vlist.depth = inner.depth; + } + + if (/cancel/.test(label) && !isSingleChar) { + // cancel does not create horiz space for its line extension. + return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options); + } else { + return buildCommon.makeSpan(["mord"], [vlist], options); + } +}; + +const mathmlBuilder$2 = (group, options) => { + let fboxsep = 0; + const node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup$1(group.body, options)]); + + switch (group.label) { + case "\\cancel": + node.setAttribute("notation", "updiagonalstrike"); + break; + + case "\\bcancel": + node.setAttribute("notation", "downdiagonalstrike"); + break; + + case "\\sout": + node.setAttribute("notation", "horizontalstrike"); + break; + + case "\\fbox": + node.setAttribute("notation", "box"); + break; + + case "\\fcolorbox": + case "\\colorbox": + // <menclose> doesn't have a good notation option. So use <mpadded> + // instead. Set some attributes that come included with <menclose>. + fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm; + node.setAttribute("width", `+${2 * fboxsep}pt`); + node.setAttribute("height", `+${2 * fboxsep}pt`); + node.setAttribute("lspace", `${fboxsep}pt`); // + + node.setAttribute("voffset", `${fboxsep}pt`); + + if (group.label === "\\fcolorbox") { + const thk = Math.max(options.fontMetrics().fboxrule, // default + options.minRuleThickness // user override + ); + node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor)); + } + + break; + + case "\\xcancel": + node.setAttribute("notation", "updiagonalstrike downdiagonalstrike"); + break; + } + + if (group.backgroundColor) { + node.setAttribute("mathbackground", group.backgroundColor); + } + + return node; +}; + +defineFunction({ + type: "enclose", + names: ["\\colorbox"], + props: { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "text"] + }, + + handler(_ref, args, optArgs) { + let parser = _ref.parser, + funcName = _ref.funcName; + const color = assertNodeType(args[0], "color-token").color; + const body = args[1]; + return { + type: "enclose", + mode: parser.mode, + label: funcName, + backgroundColor: color, + body + }; + }, + + htmlBuilder: htmlBuilder$2, + mathmlBuilder: mathmlBuilder$2 +}); +defineFunction({ + type: "enclose", + names: ["\\fcolorbox"], + props: { + numArgs: 3, + allowedInText: true, + greediness: 3, + argTypes: ["color", "color", "text"] + }, + + handler(_ref2, args, optArgs) { + let parser = _ref2.parser, + funcName = _ref2.funcName; + const borderColor = assertNodeType(args[0], "color-token").color; + const backgroundColor = assertNodeType(args[1], "color-token").color; + const body = args[2]; + return { + type: "enclose", + mode: parser.mode, + label: funcName, + backgroundColor, + borderColor, + body + }; + }, + + htmlBuilder: htmlBuilder$2, + mathmlBuilder: mathmlBuilder$2 +}); +defineFunction({ + type: "enclose", + names: ["\\fbox"], + props: { + numArgs: 1, + argTypes: ["hbox"], + allowedInText: true + }, + + handler(_ref3, args) { + let parser = _ref3.parser; + return { + type: "enclose", + mode: parser.mode, + label: "\\fbox", + body: args[0] + }; + } + +}); +defineFunction({ + type: "enclose", + names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout"], + props: { + numArgs: 1 + }, + + handler(_ref4, args, optArgs) { + let parser = _ref4.parser, + funcName = _ref4.funcName; + const body = args[0]; + return { + type: "enclose", + mode: parser.mode, + label: funcName, + body + }; + }, + + htmlBuilder: htmlBuilder$2, + mathmlBuilder: mathmlBuilder$2 +}); + +/** + * All registered environments. + * `environments.js` exports this same dictionary again and makes it public. + * `Parser.js` requires this dictionary via `environments.js`. + */ +const _environments = {}; +function defineEnvironment(_ref) { + let type = _ref.type, + names = _ref.names, + props = _ref.props, + handler = _ref.handler, + htmlBuilder = _ref.htmlBuilder, + mathmlBuilder = _ref.mathmlBuilder; + // Set default values of environments. + const data = { + type, + numArgs: props.numArgs || 0, + greediness: 1, + allowedInText: false, + numOptionalArgs: 0, + handler + }; + + for (let i = 0; i < names.length; ++i) { + // TODO: The value type of _environments should be a type union of all + // possible `EnvSpec<>` possibilities instead of `EnvSpec<*>`, which is + // an existential type. + // $FlowFixMe + _environments[names[i]] = data; + } + + if (htmlBuilder) { + _htmlGroupBuilders[type] = htmlBuilder; + } + + if (mathmlBuilder) { + _mathmlGroupBuilders[type] = mathmlBuilder; + } +} + +function getHLines(parser) { + // Return an array. The array length = number of hlines. + // Each element in the array tells if the line is dashed. + const hlineInfo = []; + parser.consumeSpaces(); + let nxt = parser.fetch().text; + + while (nxt === "\\hline" || nxt === "\\hdashline") { + parser.consume(); + hlineInfo.push(nxt === "\\hdashline"); + parser.consumeSpaces(); + nxt = parser.fetch().text; + } + + return hlineInfo; +} +/** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. + */ + + +function parseArray(parser, _ref, style) { + let hskipBeforeAndAfter = _ref.hskipBeforeAndAfter, + addJot = _ref.addJot, + cols = _ref.cols, + arraystretch = _ref.arraystretch, + colSeparationType = _ref.colSeparationType; + // Parse body of array with \\ temporarily mapped to \cr + parser.gullet.beginGroup(); + parser.gullet.macros.set("\\\\", "\\cr"); // Get current arraystretch if it's not set by the environment + + if (!arraystretch) { + const stretch = parser.gullet.expandMacroAsText("\\arraystretch"); + + if (stretch == null) { + // Default \arraystretch from lttab.dtx + arraystretch = 1; + } else { + arraystretch = parseFloat(stretch); + + if (!arraystretch || arraystretch < 0) { + throw new ParseError(`Invalid \\arraystretch: ${stretch}`); + } + } + } // Start group for first cell + + + parser.gullet.beginGroup(); + let row = []; + const body = [row]; + const rowGaps = []; + const hLinesBeforeRow = []; // Test for \hline at the top of the array. + + hLinesBeforeRow.push(getHLines(parser)); + + while (true) { + // eslint-disable-line no-constant-condition + // Parse each cell in its own group (namespace) + let cell = parser.parseExpression(false, "\\cr"); + parser.gullet.endGroup(); + parser.gullet.beginGroup(); + cell = { + type: "ordgroup", + mode: parser.mode, + body: cell + }; + + if (style) { + cell = { + type: "styling", + mode: parser.mode, + style, + body: [cell] + }; + } + + row.push(cell); + const next = parser.fetch().text; + + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + // Arrays terminate newlines with `\crcr` which consumes a `\cr` if + // the last line is empty. + // NOTE: Currently, `cell` is the last item added into `row`. + if (row.length === 1 && cell.type === "styling" && cell.body[0].body.length === 0) { + body.pop(); + } + + if (hLinesBeforeRow.length < body.length + 1) { + hLinesBeforeRow.push([]); + } + + break; + } else if (next === "\\cr") { + const cr = assertNodeType(parser.parseFunction(), "cr"); + rowGaps.push(cr.size); // check for \hline(s) following the row separator + + hLinesBeforeRow.push(getHLines(parser)); + row = []; + body.push(row); + } else { + throw new ParseError("Expected & or \\\\ or \\cr or \\end", parser.nextToken); + } + } // End cell group + + + parser.gullet.endGroup(); // End array group defining \\ + + parser.gullet.endGroup(); + return { + type: "array", + mode: parser.mode, + addJot, + arraystretch, + body, + cols, + rowGaps, + hskipBeforeAndAfter, + hLinesBeforeRow, + colSeparationType + }; +} // Decides on a style for cells in an array according to whether the given +// environment name starts with the letter 'd'. + + +function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } +} + +const htmlBuilder$3 = function htmlBuilder(group, options) { + let r; + let c; + const nr = group.body.length; + const hLinesBeforeRow = group.hLinesBeforeRow; + let nc = 0; + let body = new Array(nr); + const hlines = []; + const ruleThickness = Math.max( // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em. + options.fontMetrics().arrayRuleWidth, options.minRuleThickness // User override. + ); // Horizontal spacing + + const pt = 1 / options.fontMetrics().ptPerEm; + let arraycolsep = 5 * pt; // default value, i.e. \arraycolsep in article.cls + + if (group.colSeparationType && group.colSeparationType === "small") { + // We're in a {smallmatrix}. Default column space is \thickspace, + // i.e. 5/18em = 0.2778em, per amsmath.dtx for {smallmatrix}. + // But that needs adjustment because LaTeX applies \scriptstyle to the + // entire array, including the colspace, but this function applies + // \scriptstyle only inside each element. + const localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier; + arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier); + } // Vertical spacing + + + const baselineskip = 12 * pt; // see size10.clo + // Default \jot from ltmath.dtx + // TODO(edemaine): allow overriding \jot via \setlength (#687) + + const jot = 3 * pt; + const arrayskip = group.arraystretch * baselineskip; + const arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + + const arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + let totalHeight = 0; // Set a position for \hline(s) at the top of the array, if any. + + function setHLinePos(hlinesInGap) { + for (let i = 0; i < hlinesInGap.length; ++i) { + if (i > 0) { + totalHeight += 0.25; + } + + hlines.push({ + pos: totalHeight, + isDashed: hlinesInGap[i] + }); + } + } + + setHLinePos(hLinesBeforeRow[0]); + + for (r = 0; r < group.body.length; ++r) { + const inrow = group.body[r]; + let height = arstrutHeight; // \@array adds an \@arstrut + + let depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + const outrow = new Array(inrow.length); + + for (c = 0; c < inrow.length; ++c) { + const elt = buildGroup(inrow[c], options); + + if (depth < elt.depth) { + depth = elt.depth; + } + + if (height < elt.height) { + height = elt.height; + } + + outrow[c] = elt; + } + + const rowGap = group.rowGaps[r]; + let gap = 0; + + if (rowGap) { + gap = calculateSize(rowGap, options); + + if (gap > 0) { + // \@argarraycr + gap += arstrutDepth; + + if (depth < gap) { + depth = gap; // \@xargarraycr + } + + gap = 0; + } + } // In AMS multiline environments such as aligned and gathered, rows + // correspond to lines that have additional \jot added to the + // \baselineskip via \openup. + + + if (group.addJot) { + depth += jot; + } + + outrow.height = height; + outrow.depth = depth; + totalHeight += height; + outrow.pos = totalHeight; + totalHeight += depth + gap; // \@yargarraycr + + body[r] = outrow; // Set a position for \hline(s), if any. + + setHLinePos(hLinesBeforeRow[r + 1]); + } + + const offset = totalHeight / 2 + options.fontMetrics().axisHeight; + const colDescriptions = group.cols || []; + const cols = []; + let colSep; + let colDescrNum; + + for (c = 0, colDescrNum = 0; // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { + let colDescr = colDescriptions[colDescrNum] || {}; + let firstSeparator = true; + + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = buildCommon.makeSpan(["arraycolsep"], []); + colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|" || colDescr.separator === ":") { + const lineType = colDescr.separator === "|" ? "solid" : "dashed"; + const separator = buildCommon.makeSpan(["vertical-separator"], [], options); + separator.style.height = totalHeight + "em"; + separator.style.borderRightWidth = `${ruleThickness}em`; + separator.style.borderRightStyle = lineType; + separator.style.margin = `0 -${ruleThickness / 2}em`; + separator.style.verticalAlign = -(totalHeight - offset) + "em"; + cols.push(separator); + } else { + throw new ParseError("Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + let sepwidth; + + if (c > 0 || group.hskipBeforeAndAfter) { + sepwidth = utils.deflt(colDescr.pregap, arraycolsep); + + if (sepwidth !== 0) { + colSep = buildCommon.makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + let col = []; + + for (r = 0; r < nr; ++r) { + const row = body[r]; + const elem = row[c]; + + if (!elem) { + continue; + } + + const shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({ + type: "elem", + elem: elem, + shift: shift + }); + } + + col = buildCommon.makeVList({ + positionType: "individualShift", + children: col + }, options); + col = buildCommon.makeSpan(["col-align-" + (colDescr.align || "c")], [col]); + cols.push(col); + + if (c < nc - 1 || group.hskipBeforeAndAfter) { + sepwidth = utils.deflt(colDescr.postgap, arraycolsep); + + if (sepwidth !== 0) { + colSep = buildCommon.makeSpan(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + + body = buildCommon.makeSpan(["mtable"], cols); // Add \hline(s), if any. + + if (hlines.length > 0) { + const line = buildCommon.makeLineSpan("hline", options, ruleThickness); + const dashes = buildCommon.makeLineSpan("hdashline", options, ruleThickness); + const vListElems = [{ + type: "elem", + elem: body, + shift: 0 + }]; + + while (hlines.length > 0) { + const hline = hlines.pop(); + const lineShift = hline.pos - offset; + + if (hline.isDashed) { + vListElems.push({ + type: "elem", + elem: dashes, + shift: lineShift + }); + } else { + vListElems.push({ + type: "elem", + elem: line, + shift: lineShift + }); + } + } + + body = buildCommon.makeVList({ + positionType: "individualShift", + children: vListElems + }, options); + } + + return buildCommon.makeSpan(["mord"], [body], options); +}; + +const alignMap = { + c: "center ", + l: "left ", + r: "right " +}; + +const mathmlBuilder$3 = function mathmlBuilder(group, options) { + let table = new mathMLTree.MathNode("mtable", group.body.map(function (row) { + return new mathMLTree.MathNode("mtr", row.map(function (cell) { + return new mathMLTree.MathNode("mtd", [buildGroup$1(cell, options)]); + })); + })); // Set column alignment, row spacing, column spacing, and + // array lines by setting attributes on the table element. + // Set the row spacing. In MathML, we specify a gap distance. + // We do not use rowGap[] because MathML automatically increases + // cell height with the height/depth of the element content. + // LaTeX \arraystretch multiplies the row baseline-to-baseline distance. + // We simulate this by adding (arraystretch - 1)em to the gap. This + // does a reasonable job of adjusting arrays containing 1 em tall content. + // The 0.16 and 0.09 values are found emprically. They produce an array + // similar to LaTeX and in which content does not interfere with \hines. + + const gap = group.arraystretch === 0.5 ? 0.1 // {smallmatrix}, {subarray} + : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0); + table.setAttribute("rowspacing", gap + "em"); // MathML table lines go only between cells. + // To place a line on an edge we'll use <menclose>, if necessary. + + let menclose = ""; + let align = ""; + + if (group.cols) { + // Find column alignment, column spacing, and vertical lines. + const cols = group.cols; + let columnLines = ""; + let prevTypeWasAlign = false; + let iStart = 0; + let iEnd = cols.length; + + if (cols[0].type === "separator") { + menclose += "top "; + iStart = 1; + } + + if (cols[cols.length - 1].type === "separator") { + menclose += "bottom "; + iEnd -= 1; + } + + for (let i = iStart; i < iEnd; i++) { + if (cols[i].type === "align") { + align += alignMap[cols[i].align]; + + if (prevTypeWasAlign) { + columnLines += "none "; + } + + prevTypeWasAlign = true; + } else if (cols[i].type === "separator") { + // MathML accepts only single lines between cells. + // So we read only the first of consecutive separators. + if (prevTypeWasAlign) { + columnLines += cols[i].separator === "|" ? "solid " : "dashed "; + prevTypeWasAlign = false; + } + } + } + + table.setAttribute("columnalign", align.trim()); + + if (/[sd]/.test(columnLines)) { + table.setAttribute("columnlines", columnLines.trim()); + } + } // Set column spacing. + + + if (group.colSeparationType === "align") { + const cols = group.cols || []; + let spacing = ""; + + for (let i = 1; i < cols.length; i++) { + spacing += i % 2 ? "0em " : "1em "; + } + + table.setAttribute("columnspacing", spacing.trim()); + } else if (group.colSeparationType === "alignat") { + table.setAttribute("columnspacing", "0em"); + } else if (group.colSeparationType === "small") { + table.setAttribute("columnspacing", "0.2778em"); + } else { + table.setAttribute("columnspacing", "1em"); + } // Address \hline and \hdashline + + + let rowLines = ""; + const hlines = group.hLinesBeforeRow; + menclose += hlines[0].length > 0 ? "left " : ""; + menclose += hlines[hlines.length - 1].length > 0 ? "right " : ""; + + for (let i = 1; i < hlines.length - 1; i++) { + rowLines += hlines[i].length === 0 ? "none " // MathML accepts only a single line between rows. Read one element. + : hlines[i][0] ? "dashed " : "solid "; + } + + if (/[sd]/.test(rowLines)) { + table.setAttribute("rowlines", rowLines.trim()); + } + + if (menclose !== "") { + table = new mathMLTree.MathNode("menclose", [table]); + table.setAttribute("notation", menclose.trim()); + } + + if (group.arraystretch && group.arraystretch < 1) { + // A small array. Wrap in scriptstyle so row gap is not too large. + table = new mathMLTree.MathNode("mstyle", [table]); + table.setAttribute("scriptlevel", "1"); + } + + return table; +}; // Convenience function for aligned and alignedat environments. + + +const alignedHandler = function alignedHandler(context, args) { + const cols = []; + const res = parseArray(context.parser, { + cols, + addJot: true + }, "display"); // Determining number of columns. + // 1. If the first argument is given, we use it as a number of columns, + // and makes sure that each row doesn't exceed that number. + // 2. Otherwise, just count number of columns = maximum number + // of cells in each row ("aligned" mode -- isAligned will be true). + // + // At the same time, prepend empty group {} at beginning of every second + // cell in each row (starting with second cell) so that operators become + // binary. This behavior is implemented in amsmath's \start@aligned. + + let numMaths; + let numCols = 0; + const emptyGroup = { + type: "ordgroup", + mode: context.mode, + body: [] + }; + const ordgroup = checkNodeType(args[0], "ordgroup"); + + if (ordgroup) { + let arg0 = ""; + + for (let i = 0; i < ordgroup.body.length; i++) { + const textord = assertNodeType(ordgroup.body[i], "textord"); + arg0 += textord.text; + } + + numMaths = Number(arg0); + numCols = numMaths * 2; + } + + const isAligned = !numCols; + res.body.forEach(function (row) { + for (let i = 1; i < row.length; i += 2) { + // Modify ordgroup node within styling node + const styling = assertNodeType(row[i], "styling"); + const ordgroup = assertNodeType(styling.body[0], "ordgroup"); + ordgroup.body.unshift(emptyGroup); + } + + if (!isAligned) { + // Case 1 + const curMaths = row.length / 2; + + if (numMaths < curMaths) { + throw new ParseError("Too many math in a row: " + `expected ${numMaths}, but got ${curMaths}`, row[0]); + } + } else if (numCols < row.length) { + // Case 2 + numCols = row.length; + } + }); // Adjusting alignment. + // In aligned mode, we add one \qquad between columns; + // otherwise we add nothing. + + for (let i = 0; i < numCols; ++i) { + let align = "r"; + let pregap = 0; + + if (i % 2 === 1) { + align = "l"; + } else if (i > 0 && isAligned) { + // "aligned" mode. + pregap = 1; // add one \quad + } + + cols[i] = { + type: "align", + align: align, + pregap: pregap, + postgap: 0 + }; + } + + res.colSeparationType = isAligned ? "align" : "alignat"; + return res; +}; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation +// is part of the source2e.pdf file of LaTeX2e source documentation. +// {darray} is an {array} environment where cells are set in \displaystyle, +// as defined in nccmath.sty. + + +defineEnvironment({ + type: "array", + names: ["array", "darray"], + props: { + numArgs: 1 + }, + + handler(context, args) { + // Since no types are specified above, the two possibilities are + // - The argument is wrapped in {} or [], in which case Parser's + // parseGroup() returns an "ordgroup" wrapping some symbol node. + // - The argument is a bare symbol node. + const symNode = checkSymbolNodeType(args[0]); + const colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body; + const cols = colalign.map(function (nde) { + const node = assertSymbolNodeType(nde); + const ca = node.text; + + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } else if (ca === ":") { + return { + type: "separator", + separator: ":" + }; + } + + throw new ParseError("Unknown column alignment: " + ca, nde); + }); + const res = { + cols, + hskipBeforeAndAfter: true // \@preamble in lttab.dtx + + }; + return parseArray(context.parser, res, dCellStyle(context.envName)); + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // The matrix environments of amsmath builds on the array environment +// of LaTeX, which is discussed above. + +defineEnvironment({ + type: "array", + names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], + props: { + numArgs: 0 + }, + + handler(context) { + const delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; // \hskip -\arraycolsep in amsmath + + const payload = { + hskipBeforeAndAfter: false + }; + const res = parseArray(context.parser, payload, dCellStyle(context.envName)); + return delimiters ? { + type: "leftright", + mode: context.mode, + body: [res], + left: delimiters[0], + right: delimiters[1], + rightColor: undefined // \right uninfluenced by \color in array + + } : res; + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); +defineEnvironment({ + type: "array", + names: ["smallmatrix"], + props: { + numArgs: 0 + }, + + handler(context) { + const payload = { + arraystretch: 0.5 + }; + const res = parseArray(context.parser, payload, "script"); + res.colSeparationType = "small"; + return res; + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); +defineEnvironment({ + type: "array", + names: ["subarray"], + props: { + numArgs: 1 + }, + + handler(context, args) { + // Parsing of {subarray} is similar to {array} + const symNode = checkSymbolNodeType(args[0]); + const colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body; + const cols = colalign.map(function (nde) { + const node = assertSymbolNodeType(nde); + const ca = node.text; // {subarray} only recognizes "l" & "c" + + if ("lc".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } + + throw new ParseError("Unknown column alignment: " + ca, nde); + }); + + if (cols.length > 1) { + throw new ParseError("{subarray} can contain only one column"); + } + + let res = { + cols, + hskipBeforeAndAfter: false, + arraystretch: 0.5 + }; + res = parseArray(context.parser, res, "script"); + + if (res.body[0].length > 1) { + throw new ParseError("{subarray} can contain only one column"); + } + + return res; + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // A cases environment (in amsmath.sty) is almost equivalent to +// \def\arraystretch{1.2}% +// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. +// {dcases} is a {cases} environment where cells are set in \displaystyle, +// as defined in mathtools.sty. + +defineEnvironment({ + type: "array", + names: ["cases", "dcases"], + props: { + numArgs: 0 + }, + + handler(context) { + const payload = { + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1.0 + /* 1em quad */ + + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + const res = parseArray(context.parser, payload, dCellStyle(context.envName)); + return { + type: "leftright", + mode: context.mode, + body: [res], + left: "\\{", + right: ".", + rightColor: undefined + }; + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // An aligned environment is like the align* environment +// except it operates within math mode. +// Note that we assume \nomallineskiplimit to be zero, +// so that \strut@ is the same as \strut. + +defineEnvironment({ + type: "array", + names: ["aligned"], + props: { + numArgs: 0 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // A gathered environment is like an array environment with one centered +// column, but where rows are considered lines so get \jot line spacing +// and contents are set in \displaystyle. + +defineEnvironment({ + type: "array", + names: ["gathered"], + props: { + numArgs: 0 + }, + + handler(context) { + const res = { + cols: [{ + type: "align", + align: "c" + }], + addJot: true + }; + return parseArray(context.parser, res, "display"); + }, + + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // alignat environment is like an align environment, but one must explicitly +// specify maximum number of columns in each row, and can adjust spacing between +// each columns. + +defineEnvironment({ + type: "array", + names: ["alignedat"], + // One for numbered and for unnumbered; + // but, KaTeX doesn't supports math numbering yet, + // they make no difference for now. + props: { + numArgs: 1 + }, + handler: alignedHandler, + htmlBuilder: htmlBuilder$3, + mathmlBuilder: mathmlBuilder$3 +}); // Catch \hline outside array environment + +defineFunction({ + type: "text", + // Doesn't matter what this is. + names: ["\\hline", "\\hdashline"], + props: { + numArgs: 0, + allowedInText: true, + allowedInMath: true + }, + + handler(context, args) { + throw new ParseError(`${context.funcName} valid only within array environment`); + } + +}); + +const environments = _environments; + +// defineEnvironment definitions. +// $FlowFixMe, "environment" handler returns an environment ParseNode + +defineFunction({ + type: "environment", + names: ["\\begin", "\\end"], + props: { + numArgs: 1, + argTypes: ["text"] + }, + + handler(_ref, args) { + let parser = _ref.parser, + funcName = _ref.funcName; + const nameGroup = args[0]; + + if (nameGroup.type !== "ordgroup") { + throw new ParseError("Invalid environment name", nameGroup); + } + + let envName = ""; + + for (let i = 0; i < nameGroup.body.length; ++i) { + envName += assertNodeType(nameGroup.body[i], "textord").text; + } + + if (funcName === "\\begin") { + // begin...end is similar to left...right + if (!environments.hasOwnProperty(envName)) { + throw new ParseError("No such environment: " + envName, nameGroup); + } // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + + + const env = environments[envName]; + + const _parser$parseArgument = parser.parseArguments("\\begin{" + envName + "}", env), + args = _parser$parseArgument.args, + optArgs = _parser$parseArgument.optArgs; + + const context = { + mode: parser.mode, + envName, + parser + }; + const result = env.handler(context, args, optArgs); + parser.expect("\\end", false); + const endNameToken = parser.nextToken; + const end = assertNodeType(parser.parseFunction(), "environment"); + + if (end.name !== envName) { + throw new ParseError(`Mismatch: \\begin{${envName}} matched by \\end{${end.name}}`, endNameToken); + } + + return result; + } + + return { + type: "environment", + mode: parser.mode, + name: envName, + nameGroup + }; + } + +}); + +const makeSpan$2 = buildCommon.makeSpan; + +function htmlBuilder$4(group, options) { + const elements = buildExpression(group.body, options, true); + return makeSpan$2([group.mclass], elements, options); +} + +function mathmlBuilder$4(group, options) { + let node; + const inner = buildExpression$1(group.body, options); + + if (group.mclass === "minner") { + return mathMLTree.newDocumentFragment(inner); + } else if (group.mclass === "mord") { + if (group.isCharacterBox) { + node = inner[0]; + node.type = "mi"; + } else { + node = new mathMLTree.MathNode("mi", inner); + } + } else { + if (group.isCharacterBox) { + node = inner[0]; + node.type = "mo"; + } else { + node = new mathMLTree.MathNode("mo", inner); + } // Set spacing based on what is the most likely adjacent atom type. + // See TeXbook p170. + + + if (group.mclass === "mbin") { + node.attributes.lspace = "0.22em"; // medium space + + node.attributes.rspace = "0.22em"; + } else if (group.mclass === "mpunct") { + node.attributes.lspace = "0em"; + node.attributes.rspace = "0.17em"; // thinspace + } else if (group.mclass === "mopen" || group.mclass === "mclose") { + node.attributes.lspace = "0em"; + node.attributes.rspace = "0em"; + } // MathML <mo> default space is 5/18 em, so <mrel> needs no action. + // Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo + + } + + return node; +} // Math class commands except \mathop + + +defineFunction({ + type: "mclass", + names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], + props: { + numArgs: 1 + }, + + handler(_ref, args) { + let parser = _ref.parser, + funcName = _ref.funcName; + const body = args[0]; + return { + type: "mclass", + mode: parser.mode, + mclass: "m" + funcName.substr(5), + // TODO(kevinb): don't prefix with 'm' + body: ordargument(body), + isCharacterBox: utils.isCharacterBox(body) + }; + }, + + htmlBuilder: htmlBuilder$4, + mathmlBuilder: mathmlBuilder$4 +}); +const binrelClass = arg => { + // \binrel@ spacing varies with (bin|rel|ord) of the atom in the argument. + // (by rendering separately and with {}s before and after, and measuring + // the change in spacing). We'll do roughly the same by detecting the + // atom type directly. + const atom = arg.type === "ordgroup" && arg.body.length ? arg.body[0] : arg; + + if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) { + return "m" + atom.family; + } else { + return "mord"; + } +}; // \@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord. +// This is equivalent to \binrel@{x}\binrel@@{y} in AMSTeX. + +defineFunction({ + type: "mclass", + names: ["\\@binrel"], + props: { + numArgs: 2 + }, + + handler(_ref2, args) { + let parser = _ref2.parser; + return { + type: "mclass", + mode: parser.mode, + mclass: binrelClass(args[0]), + body: [args[1]], + isCharacterBox: utils.isCharacterBox(args[1]) + }; + } + +}); // Build a relation or stacked op by placing one symbol on top of another + +defineFunction({ + type: "mclass", + names: ["\\stackrel", "\\overset", "\\underset"], + props: { + numArgs: 2 + }, + + handler(_ref3, args) { + let parser = _ref3.parser, + funcName = _ref3.funcName; + const baseArg = args[1]; + const shiftedArg = args[0]; + let mclass; + + if (funcName !== "\\stackrel") { + // LaTeX applies \binrel spacing to \overset and \underset. + mclass = binrelClass(baseArg); + } else { + mclass = "mrel"; // for \stackrel + } + + const baseOp = { + type: "op", + mode: baseArg.mode, + limits: true, + alwaysHandleSupSub: true, + parentIsSupSub: false, + symbol: false, + suppressBaseShift: funcName !== "\\stackrel", + body: ordargument(baseArg) + }; + const supsub = { + type: "supsub", + mode: shiftedArg.mode, + base: baseOp, + sup: funcName === "\\underset" ? null : shiftedArg, + sub: funcName === "\\underset" ? shiftedArg : null + }; + return { + type: "mclass", + mode: parser.mode, + mclass, + body: [supsub], + isCharacterBox: utils.isCharacterBox(supsub) + }; + }, + + htmlBuilder: htmlBuilder$4, + mathmlBuilder: mathmlBuilder$4 +}); + +// TODO(kevinb): implement \\sl and \\sc + +const htmlBuilder$5 = (group, options) => { + const font = group.font; + const newOptions = options.withFont(font); + return buildGroup(group.body, newOptions); +}; + +const mathmlBuilder$5 = (group, options) => { + const font = group.font; + const newOptions = options.withFont(font); + return buildGroup$1(group.body, newOptions); +}; + +const fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak", + "\\bm": "\\boldsymbol" +}; +defineFunction({ + type: "font", + names: [// styles, except \boldsymbol defined below + "\\mathrm", "\\mathit", "\\mathbf", "\\mathnormal", // families + "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", // aliases, except \bm defined below + "\\Bbb", "\\bold", "\\frak"], + props: { + numArgs: 1, + greediness: 2 + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + const body = args[0]; + let func = funcName; + + if (func in fontAliases) { + func = fontAliases[func]; + } + + return { + type: "font", + mode: parser.mode, + font: func.slice(1), + body + }; + }, + htmlBuilder: htmlBuilder$5, + mathmlBuilder: mathmlBuilder$5 +}); +defineFunction({ + type: "mclass", + names: ["\\boldsymbol", "\\bm"], + props: { + numArgs: 1, + greediness: 2 + }, + handler: (_ref2, args) => { + let parser = _ref2.parser; + const body = args[0]; + const isCharacterBox = utils.isCharacterBox(body); // amsbsy.sty's \boldsymbol uses \binrel spacing to inherit the + // argument's bin|rel|ord status + + return { + type: "mclass", + mode: parser.mode, + mclass: binrelClass(body), + body: [{ + type: "font", + mode: parser.mode, + font: "boldsymbol", + body + }], + isCharacterBox: isCharacterBox + }; + } +}); // Old font changing functions + +defineFunction({ + type: "font", + names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], + props: { + numArgs: 0, + allowedInText: true + }, + handler: (_ref3, args) => { + let parser = _ref3.parser, + funcName = _ref3.funcName, + breakOnTokenText = _ref3.breakOnTokenText; + const mode = parser.mode; + const body = parser.parseExpression(true, breakOnTokenText); + const style = `math${funcName.slice(1)}`; + return { + type: "font", + mode: mode, + font: style, + body: { + type: "ordgroup", + mode: parser.mode, + body + } + }; + }, + htmlBuilder: htmlBuilder$5, + mathmlBuilder: mathmlBuilder$5 +}); + +const adjustStyle = (size, originalStyle) => { + // Figure out what style this fraction should be in based on the + // function used + let style = originalStyle; + + if (size === "display") { + // Get display style as a default. + // If incoming style is sub/sup, use style.text() to get correct size. + style = style.id >= Style$1.SCRIPT.id ? style.text() : Style$1.DISPLAY; + } else if (size === "text" && style.size === Style$1.DISPLAY.size) { + // We're in a \tfrac but incoming style is displaystyle, so: + style = Style$1.TEXT; + } else if (size === "script") { + style = Style$1.SCRIPT; + } else if (size === "scriptscript") { + style = Style$1.SCRIPTSCRIPT; + } + + return style; +}; + +const htmlBuilder$6 = (group, options) => { + // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). + const style = adjustStyle(group.size, options.style); + const nstyle = style.fracNum(); + const dstyle = style.fracDen(); + let newOptions; + newOptions = options.havingStyle(nstyle); + const numerm = buildGroup(group.numer, newOptions, options); + + if (group.continued) { + // \cfrac inserts a \strut into the numerator. + // Get \strut dimensions from TeXbook page 353. + const hStrut = 8.5 / options.fontMetrics().ptPerEm; + const dStrut = 3.5 / options.fontMetrics().ptPerEm; + numerm.height = numerm.height < hStrut ? hStrut : numerm.height; + numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth; + } + + newOptions = options.havingStyle(dstyle); + const denomm = buildGroup(group.denom, newOptions, options); + let rule; + let ruleWidth; + let ruleSpacing; + + if (group.hasBarLine) { + if (group.barSize) { + ruleWidth = calculateSize(group.barSize, options); + rule = buildCommon.makeLineSpan("frac-line", options, ruleWidth); + } else { + rule = buildCommon.makeLineSpan("frac-line", options); + } + + ruleWidth = rule.height; + ruleSpacing = rule.height; + } else { + rule = null; + ruleWidth = 0; + ruleSpacing = options.fontMetrics().defaultRuleThickness; + } // Rule 15b + + + let numShift; + let clearance; + let denomShift; + + if (style.size === Style$1.DISPLAY.size || group.size === "display") { + numShift = options.fontMetrics().num1; + + if (ruleWidth > 0) { + clearance = 3 * ruleSpacing; + } else { + clearance = 7 * ruleSpacing; + } + + denomShift = options.fontMetrics().denom1; + } else { + if (ruleWidth > 0) { + numShift = options.fontMetrics().num2; + clearance = ruleSpacing; + } else { + numShift = options.fontMetrics().num3; + clearance = 3 * ruleSpacing; + } + + denomShift = options.fontMetrics().denom2; + } + + let frac; + + if (!rule) { + // Rule 15c + const candidateClearance = numShift - numerm.depth - (denomm.height - denomShift); + + if (candidateClearance < clearance) { + numShift += 0.5 * (clearance - candidateClearance); + denomShift += 0.5 * (clearance - candidateClearance); + } + + frac = buildCommon.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: denomm, + shift: denomShift + }, { + type: "elem", + elem: numerm, + shift: -numShift + }] + }, options); + } else { + // Rule 15d + const axisHeight = options.fontMetrics().axisHeight; + + if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { + numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); + } + + if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) { + denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift)); + } + + const midShift = -(axisHeight - 0.5 * ruleWidth); + frac = buildCommon.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: denomm, + shift: denomShift + }, { + type: "elem", + elem: rule, + shift: midShift + }, { + type: "elem", + elem: numerm, + shift: -numShift + }] + }, options); + } // Since we manually change the style sometimes (with \dfrac or \tfrac), + // account for the possible size change here. + + + newOptions = options.havingStyle(style); + frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier; + frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; // Rule 15e + + let delimSize; + + if (style.size === Style$1.DISPLAY.size) { + delimSize = options.fontMetrics().delim1; + } else { + delimSize = options.fontMetrics().delim2; + } + + let leftDelim; + let rightDelim; + + if (group.leftDelim == null) { + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + leftDelim = delimiter.customSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); + } + + if (group.continued) { + rightDelim = buildCommon.makeSpan([]); // zero width for \cfrac + } else if (group.rightDelim == null) { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = delimiter.customSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); + } + + return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options); +}; + +const mathmlBuilder$6 = (group, options) => { + let node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]); + + if (!group.hasBarLine) { + node.setAttribute("linethickness", "0px"); + } else if (group.barSize) { + const ruleWidth = calculateSize(group.barSize, options); + node.setAttribute("linethickness", ruleWidth + "em"); + } + + const style = adjustStyle(group.size, options.style); + + if (style.size !== options.style.size) { + node = new mathMLTree.MathNode("mstyle", [node]); + const isDisplay = style.size === Style$1.DISPLAY.size ? "true" : "false"; + node.setAttribute("displaystyle", isDisplay); + node.setAttribute("scriptlevel", "0"); + } + + if (group.leftDelim != null || group.rightDelim != null) { + const withDelims = []; + + if (group.leftDelim != null) { + const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]); + leftOp.setAttribute("fence", "true"); + withDelims.push(leftOp); + } + + withDelims.push(node); + + if (group.rightDelim != null) { + const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]); + rightOp.setAttribute("fence", "true"); + withDelims.push(rightOp); + } + + return makeRow(withDelims); + } + + return node; +}; + +defineFunction({ + type: "genfrac", + names: ["\\cfrac", "\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac", // can’t be entered directly + "\\\\bracefrac", "\\\\brackfrac"], + props: { + numArgs: 2, + greediness: 2 + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + const numer = args[0]; + const denom = args[1]; + let hasBarLine; + let leftDelim = null; + let rightDelim = null; + let size = "auto"; + + switch (funcName) { + case "\\cfrac": + case "\\dfrac": + case "\\frac": + case "\\tfrac": + hasBarLine = true; + break; + + case "\\\\atopfrac": + hasBarLine = false; + break; + + case "\\dbinom": + case "\\binom": + case "\\tbinom": + hasBarLine = false; + leftDelim = "("; + rightDelim = ")"; + break; + + case "\\\\bracefrac": + hasBarLine = false; + leftDelim = "\\{"; + rightDelim = "\\}"; + break; + + case "\\\\brackfrac": + hasBarLine = false; + leftDelim = "["; + rightDelim = "]"; + break; + + default: + throw new Error("Unrecognized genfrac command"); + } + + switch (funcName) { + case "\\cfrac": + case "\\dfrac": + case "\\dbinom": + size = "display"; + break; + + case "\\tfrac": + case "\\tbinom": + size = "text"; + break; + } + + return { + type: "genfrac", + mode: parser.mode, + continued: funcName === "\\cfrac", + numer, + denom, + hasBarLine, + leftDelim, + rightDelim, + size, + barSize: null + }; + }, + htmlBuilder: htmlBuilder$6, + mathmlBuilder: mathmlBuilder$6 +}); // Infix generalized fractions -- these are not rendered directly, but replaced +// immediately by one of the variants above. + +defineFunction({ + type: "infix", + names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"], + props: { + numArgs: 0, + infix: true + }, + + handler(_ref2) { + let parser = _ref2.parser, + funcName = _ref2.funcName, + token = _ref2.token; + let replaceWith; + + switch (funcName) { + case "\\over": + replaceWith = "\\frac"; + break; + + case "\\choose": + replaceWith = "\\binom"; + break; + + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; + + case "\\brace": + replaceWith = "\\\\bracefrac"; + break; + + case "\\brack": + replaceWith = "\\\\brackfrac"; + break; + + default: + throw new Error("Unrecognized infix genfrac command"); + } + + return { + type: "infix", + mode: parser.mode, + replaceWith, + token + }; + } + +}); +const stylArray = ["display", "text", "script", "scriptscript"]; + +const delimFromValue = function delimFromValue(delimString) { + let delim = null; + + if (delimString.length > 0) { + delim = delimString; + delim = delim === "." ? null : delim; + } + + return delim; +}; + +defineFunction({ + type: "genfrac", + names: ["\\genfrac"], + props: { + numArgs: 6, + greediness: 6, + argTypes: ["math", "math", "size", "text", "math", "math"] + }, + + handler(_ref3, args) { + let parser = _ref3.parser; + const numer = args[4]; + const denom = args[5]; // Look into the parse nodes to get the desired delimiters. + + let leftNode = checkNodeType(args[0], "atom"); + + if (leftNode) { + leftNode = assertAtomFamily(args[0], "open"); + } + + const leftDelim = leftNode ? delimFromValue(leftNode.text) : null; + let rightNode = checkNodeType(args[1], "atom"); + + if (rightNode) { + rightNode = assertAtomFamily(args[1], "close"); + } + + const rightDelim = rightNode ? delimFromValue(rightNode.text) : null; + const barNode = assertNodeType(args[2], "size"); + let hasBarLine; + let barSize = null; + + if (barNode.isBlank) { + // \genfrac acts differently than \above. + // \genfrac treats an empty size group as a signal to use a + // standard bar size. \above would see size = 0 and omit the bar. + hasBarLine = true; + } else { + barSize = barNode.value; + hasBarLine = barSize.number > 0; + } // Find out if we want displaystyle, textstyle, etc. + + + let size = "auto"; + let styl = checkNodeType(args[3], "ordgroup"); + + if (styl) { + if (styl.body.length > 0) { + const textOrd = assertNodeType(styl.body[0], "textord"); + size = stylArray[Number(textOrd.text)]; + } + } else { + styl = assertNodeType(args[3], "textord"); + size = stylArray[Number(styl.text)]; + } + + return { + type: "genfrac", + mode: parser.mode, + numer, + denom, + continued: false, + hasBarLine, + barSize, + leftDelim, + rightDelim, + size + }; + }, + + htmlBuilder: htmlBuilder$6, + mathmlBuilder: mathmlBuilder$6 +}); // \above is an infix fraction that also defines a fraction bar size. + +defineFunction({ + type: "infix", + names: ["\\above"], + props: { + numArgs: 1, + argTypes: ["size"], + infix: true + }, + + handler(_ref4, args) { + let parser = _ref4.parser, + funcName = _ref4.funcName, + token = _ref4.token; + return { + type: "infix", + mode: parser.mode, + replaceWith: "\\\\abovefrac", + size: assertNodeType(args[0], "size").value, + token + }; + } + +}); +defineFunction({ + type: "genfrac", + names: ["\\\\abovefrac"], + props: { + numArgs: 3, + argTypes: ["math", "size", "math"] + }, + handler: (_ref5, args) => { + let parser = _ref5.parser, + funcName = _ref5.funcName; + const numer = args[0]; + const barSize = assert(assertNodeType(args[1], "infix").size); + const denom = args[2]; + const hasBarLine = barSize.number > 0; + return { + type: "genfrac", + mode: parser.mode, + numer, + denom, + continued: false, + hasBarLine, + barSize, + leftDelim: null, + rightDelim: null, + size: "auto" + }; + }, + htmlBuilder: htmlBuilder$6, + mathmlBuilder: mathmlBuilder$6 +}); + +// NOTE: Unlike most `htmlBuilder`s, this one handles not only "horizBrace", but +const htmlBuilder$7 = (grp, options) => { + const style = options.style; // Pull out the `ParseNode<"horizBrace">` if `grp` is a "supsub" node. + + let supSubGroup; + let group; + const supSub = checkNodeType(grp, "supsub"); + + if (supSub) { + // Ref: LaTeX source2e: }}}}\limits} + // i.e. LaTeX treats the brace similar to an op and passes it + // with \limits, so we need to assign supsub style. + supSubGroup = supSub.sup ? buildGroup(supSub.sup, options.havingStyle(style.sup()), options) : buildGroup(supSub.sub, options.havingStyle(style.sub()), options); + group = assertNodeType(supSub.base, "horizBrace"); + } else { + group = assertNodeType(grp, "horizBrace"); + } // Build the base group + + + const body = buildGroup(group.base, options.havingBaseStyle(Style$1.DISPLAY)); // Create the stretchy element + + const braceBody = stretchy.svgSpan(group, options); // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ + // This first vlist contains the content and the brace: equation + + let vlist; + + if (group.isOver) { + vlist = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: body + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: braceBody + }] + }, options); // $FlowFixMe: Replace this with passing "svg-align" into makeVList. + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } else { + vlist = buildCommon.makeVList({ + positionType: "bottom", + positionData: body.depth + 0.1 + braceBody.height, + children: [{ + type: "elem", + elem: braceBody + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: body + }] + }, options); // $FlowFixMe: Replace this with passing "svg-align" into makeVList. + + vlist.children[0].children[0].children[0].classes.push("svg-align"); + } + + if (supSubGroup) { + // To write the supsub, wrap the first vlist in another vlist: + // They can't all go in the same vlist, because the note might be + // wider than the equation. We want the equation to control the + // brace width. + // note long note long note + // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ + // equation eqn eqn + const vSpan = buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options); + + if (group.isOver) { + vlist = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: vSpan + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: supSubGroup + }] + }, options); + } else { + vlist = buildCommon.makeVList({ + positionType: "bottom", + positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth, + children: [{ + type: "elem", + elem: supSubGroup + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: vSpan + }] + }, options); + } + } + + return buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options); +}; + +const mathmlBuilder$7 = (group, options) => { + const accentNode = stretchy.mathMLnode(group.label); + return new mathMLTree.MathNode(group.isOver ? "mover" : "munder", [buildGroup$1(group.base, options), accentNode]); +}; // Horizontal stretchy braces + + +defineFunction({ + type: "horizBrace", + names: ["\\overbrace", "\\underbrace"], + props: { + numArgs: 1 + }, + + handler(_ref, args) { + let parser = _ref.parser, + funcName = _ref.funcName; + return { + type: "horizBrace", + mode: parser.mode, + label: funcName, + isOver: /^\\over/.test(funcName), + base: args[0] + }; + }, + + htmlBuilder: htmlBuilder$7, + mathmlBuilder: mathmlBuilder$7 +}); + +defineFunction({ + type: "href", + names: ["\\href"], + props: { + numArgs: 2, + argTypes: ["url", "original"], + allowedInText: true + }, + handler: (_ref, args) => { + let parser = _ref.parser; + const body = args[1]; + const href = assertNodeType(args[0], "url").url; + + if (!parser.settings.isTrusted({ + command: "\\href", + url: href + })) { + return parser.formatUnsupportedCmd("\\href"); + } + + return { + type: "href", + mode: parser.mode, + href, + body: ordargument(body) + }; + }, + htmlBuilder: (group, options) => { + const elements = buildExpression(group.body, options, false); + return buildCommon.makeAnchor(group.href, [], elements, options); + }, + mathmlBuilder: (group, options) => { + let math = buildExpressionRow(group.body, options); + + if (!(math instanceof MathNode)) { + math = new MathNode("mrow", [math]); + } + + math.setAttribute("href", group.href); + return math; + } +}); +defineFunction({ + type: "href", + names: ["\\url"], + props: { + numArgs: 1, + argTypes: ["url"], + allowedInText: true + }, + handler: (_ref2, args) => { + let parser = _ref2.parser; + const href = assertNodeType(args[0], "url").url; + + if (!parser.settings.isTrusted({ + command: "\\url", + url: href + })) { + return parser.formatUnsupportedCmd("\\url"); + } + + const chars = []; + + for (let i = 0; i < href.length; i++) { + let c = href[i]; + + if (c === "~") { + c = "\\textasciitilde"; + } + + chars.push({ + type: "textord", + mode: "text", + text: c + }); + } + + const body = { + type: "text", + mode: parser.mode, + font: "\\texttt", + body: chars + }; + return { + type: "href", + mode: parser.mode, + href, + body: ordargument(body) + }; + } +}); + +defineFunction({ + type: "htmlmathml", + names: ["\\html@mathml"], + props: { + numArgs: 2, + allowedInText: true + }, + handler: (_ref, args) => { + let parser = _ref.parser; + return { + type: "htmlmathml", + mode: parser.mode, + html: ordargument(args[0]), + mathml: ordargument(args[1]) + }; + }, + htmlBuilder: (group, options) => { + const elements = buildExpression(group.html, options, false); + return buildCommon.makeFragment(elements); + }, + mathmlBuilder: (group, options) => { + return buildExpressionRow(group.mathml, options); + } +}); + +const sizeData = function sizeData(str) { + if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(str)) { + // str is a number with no unit specified. + // default unit is bp, per graphix package. + return { + number: +str, + unit: "bp" + }; + } else { + const match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(str); + + if (!match) { + throw new ParseError("Invalid size: '" + str + "' in \\includegraphics"); + } + + const data = { + number: +(match[1] + match[2]), + // sign + magnitude, cast to number + unit: match[3] + }; + + if (!validUnit(data)) { + throw new ParseError("Invalid unit: '" + data.unit + "' in \\includegraphics."); + } + + return data; + } +}; + +defineFunction({ + type: "includegraphics", + names: ["\\includegraphics"], + props: { + numArgs: 1, + numOptionalArgs: 1, + argTypes: ["raw", "url"], + allowedInText: false + }, + handler: (_ref, args, optArgs) => { + let parser = _ref.parser; + let width = { + number: 0, + unit: "em" + }; + let height = { + number: 0.9, + unit: "em" + }; // sorta character sized. + + let totalheight = { + number: 0, + unit: "em" + }; + let alt = ""; + + if (optArgs[0]) { + const attributeStr = assertNodeType(optArgs[0], "raw").string; // Parser.js does not parse key/value pairs. We get a string. + + const attributes = attributeStr.split(","); + + for (let i = 0; i < attributes.length; i++) { + const keyVal = attributes[i].split("="); + + if (keyVal.length === 2) { + const str = keyVal[1].trim(); + + switch (keyVal[0].trim()) { + case "alt": + alt = str; + break; + + case "width": + width = sizeData(str); + break; + + case "height": + height = sizeData(str); + break; + + case "totalheight": + totalheight = sizeData(str); + break; + + default: + throw new ParseError("Invalid key: '" + keyVal[0] + "' in \\includegraphics."); + } + } + } + } + + const src = assertNodeType(args[0], "url").url; + + if (alt === "") { + // No alt given. Use the file name. Strip away the path. + alt = src; + alt = alt.replace(/^.*[\\/]/, ''); + alt = alt.substring(0, alt.lastIndexOf('.')); + } + + if (!parser.settings.isTrusted({ + command: "\\includegraphics", + url: src + })) { + return parser.formatUnsupportedCmd("\\includegraphics"); + } + + return { + type: "includegraphics", + mode: parser.mode, + alt: alt, + width: width, + height: height, + totalheight: totalheight, + src: src + }; + }, + htmlBuilder: (group, options) => { + const height = calculateSize(group.height, options); + let depth = 0; + + if (group.totalheight.number > 0) { + depth = calculateSize(group.totalheight, options) - height; + depth = Number(depth.toFixed(2)); + } + + let width = 0; + + if (group.width.number > 0) { + width = calculateSize(group.width, options); + } + + const style = { + height: height + depth + "em" + }; + + if (width > 0) { + style.width = width + "em"; + } + + if (depth > 0) { + style.verticalAlign = -depth + "em"; + } + + const node = new Img(group.src, group.alt, style); + node.height = height; + node.depth = depth; + return node; + }, + mathmlBuilder: (group, options) => { + const node = new mathMLTree.MathNode("mglyph", []); + node.setAttribute("alt", group.alt); + const height = calculateSize(group.height, options); + let depth = 0; + + if (group.totalheight.number > 0) { + depth = calculateSize(group.totalheight, options) - height; + depth = depth.toFixed(2); + node.setAttribute("valign", "-" + depth + "em"); + } + + node.setAttribute("height", height + depth + "em"); + + if (group.width.number > 0) { + const width = calculateSize(group.width, options); + node.setAttribute("width", width + "em"); + } + + node.setAttribute("src", group.src); + return node; + } +}); + +// Horizontal spacing commands + +defineFunction({ + type: "kern", + names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], + props: { + numArgs: 1, + argTypes: ["size"], + allowedInText: true + }, + + handler(_ref, args) { + let parser = _ref.parser, + funcName = _ref.funcName; + const size = assertNodeType(args[0], "size"); + + if (parser.settings.strict) { + const mathFunction = funcName[1] === 'm'; // \mkern, \mskip + + const muUnit = size.value.unit === 'mu'; + + if (mathFunction) { + if (!muUnit) { + parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} supports only mu units, ` + `not ${size.value.unit} units`); + } + + if (parser.mode !== "math") { + parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} works only in math mode`); + } + } else { + // !mathFunction + if (muUnit) { + parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} doesn't support mu units`); + } + } + } + + return { + type: "kern", + mode: parser.mode, + dimension: size.value + }; + }, + + htmlBuilder(group, options) { + return buildCommon.makeGlue(group.dimension, options); + }, + + mathmlBuilder(group, options) { + const dimension = calculateSize(group.dimension, options); + return new mathMLTree.SpaceNode(dimension); + } + +}); + +// Horizontal overlap functions +defineFunction({ + type: "lap", + names: ["\\mathllap", "\\mathrlap", "\\mathclap"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + const body = args[0]; + return { + type: "lap", + mode: parser.mode, + alignment: funcName.slice(5), + body + }; + }, + htmlBuilder: (group, options) => { + // mathllap, mathrlap, mathclap + let inner; + + if (group.alignment === "clap") { + // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/ + inner = buildCommon.makeSpan([], [buildGroup(group.body, options)]); // wrap, since CSS will center a .clap > .inner > span + + inner = buildCommon.makeSpan(["inner"], [inner], options); + } else { + inner = buildCommon.makeSpan(["inner"], [buildGroup(group.body, options)]); + } + + const fix = buildCommon.makeSpan(["fix"], []); + let node = buildCommon.makeSpan([group.alignment], [inner, fix], options); // At this point, we have correctly set horizontal alignment of the + // two items involved in the lap. + // Next, use a strut to set the height of the HTML bounding box. + // Otherwise, a tall argument may be misplaced. + + const strut = buildCommon.makeSpan(["strut"]); + strut.style.height = node.height + node.depth + "em"; + strut.style.verticalAlign = -node.depth + "em"; + node.children.unshift(strut); // Next, prevent vertical misplacement when next to something tall. + + node = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: node + }] + }, options); // Get the horizontal spacing correct relative to adjacent items. + + return buildCommon.makeSpan(["mord"], [node], options); + }, + mathmlBuilder: (group, options) => { + // mathllap, mathrlap, mathclap + const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]); + + if (group.alignment !== "rlap") { + const offset = group.alignment === "llap" ? "-1" : "-0.5"; + node.setAttribute("lspace", offset + "width"); + } + + node.setAttribute("width", "0px"); + return node; + } +}); + +defineFunction({ + type: "styling", + names: ["\\(", "$"], + props: { + numArgs: 0, + allowedInText: true, + allowedInMath: false + }, + + handler(_ref, args) { + let funcName = _ref.funcName, + parser = _ref.parser; + const outerMode = parser.mode; + parser.switchMode("math"); + const close = funcName === "\\(" ? "\\)" : "$"; + const body = parser.parseExpression(false, close); + parser.expect(close); + parser.switchMode(outerMode); + return { + type: "styling", + mode: parser.mode, + style: "text", + body + }; + } + +}); // Check for extra closing math delimiters + +defineFunction({ + type: "text", + // Doesn't matter what this is. + names: ["\\)", "\\]"], + props: { + numArgs: 0, + allowedInText: true, + allowedInMath: false + }, + + handler(context, args) { + throw new ParseError(`Mismatched ${context.funcName}`); + } + +}); + +const chooseMathStyle = (group, options) => { + switch (options.style.size) { + case Style$1.DISPLAY.size: + return group.display; + + case Style$1.TEXT.size: + return group.text; + + case Style$1.SCRIPT.size: + return group.script; + + case Style$1.SCRIPTSCRIPT.size: + return group.scriptscript; + + default: + return group.text; + } +}; + +defineFunction({ + type: "mathchoice", + names: ["\\mathchoice"], + props: { + numArgs: 4 + }, + handler: (_ref, args) => { + let parser = _ref.parser; + return { + type: "mathchoice", + mode: parser.mode, + display: ordargument(args[0]), + text: ordargument(args[1]), + script: ordargument(args[2]), + scriptscript: ordargument(args[3]) + }; + }, + htmlBuilder: (group, options) => { + const body = chooseMathStyle(group, options); + const elements = buildExpression(body, options, false); + return buildCommon.makeFragment(elements); + }, + mathmlBuilder: (group, options) => { + const body = chooseMathStyle(group, options); + return buildExpressionRow(body, options); + } +}); + +// For an operator with limits, assemble the base, sup, and sub into a span. +const assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = buildCommon.makeSpan([], [base]); + let sub; + let sup; // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + + if (supGroup) { + const elem = buildGroup(supGroup, options.havingStyle(style.sup()), options); + sup = { + elem, + kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth) + }; + } + + if (subGroup) { + const elem = buildGroup(subGroup, options.havingStyle(style.sub()), options); + sub = { + elem, + kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - elem.height) + }; + } // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + + + let finalGroup; + + if (sup && sub) { + const bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift; + finalGroup = buildCommon.makeVList({ + positionType: "bottom", + positionData: bottom, + children: [{ + type: "kern", + size: options.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: sub.elem, + marginLeft: -slant + "em" + }, { + type: "kern", + size: sub.kern + }, { + type: "elem", + elem: base + }, { + type: "kern", + size: sup.kern + }, { + type: "elem", + elem: sup.elem, + marginLeft: slant + "em" + }, { + type: "kern", + size: options.fontMetrics().bigOpSpacing5 + }] + }, options); + } else if (sub) { + const top = base.height - baseShift; // Shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + + finalGroup = buildCommon.makeVList({ + positionType: "top", + positionData: top, + children: [{ + type: "kern", + size: options.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: sub.elem, + marginLeft: -slant + "em" + }, { + type: "kern", + size: sub.kern + }, { + type: "elem", + elem: base + }] + }, options); + } else if (sup) { + const bottom = base.depth + baseShift; + finalGroup = buildCommon.makeVList({ + positionType: "bottom", + positionData: bottom, + children: [{ + type: "elem", + elem: base + }, { + type: "kern", + size: sup.kern + }, { + type: "elem", + elem: sup.elem, + marginLeft: slant + "em" + }, { + type: "kern", + size: options.fontMetrics().bigOpSpacing5 + }] + }, options); + } else { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } + + return buildCommon.makeSpan(["mop", "op-limits"], [finalGroup], options); +}; + +// Limits, symbols +// Most operators have a large successor symbol, but these don't. +const noSuccessor = ["\\smallint"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also +// "supsub" since some of them (like \int) can affect super/subscripting. + +const htmlBuilder$8 = (grp, options) => { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + let supGroup; + let subGroup; + let hasLimits = false; + let group; + const supSub = checkNodeType(grp, "supsub"); + + if (supSub) { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = supSub.sup; + subGroup = supSub.sub; + group = assertNodeType(supSub.base, "op"); + hasLimits = true; + } else { + group = assertNodeType(grp, "op"); + } + + const style = options.style; + let large = false; + + if (style.size === Style$1.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) { + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + let base; + + if (group.symbol) { + // If this is a symbol, create the symbol. + const fontName = large ? "Size2-Regular" : "Size1-Regular"; + let stash = ""; + + if (group.name === "\\oiint" || group.name === "\\oiiint") { + // No font glyphs yet, so use a glyph w/o the oval. + // TODO: When font glyphs are available, delete this code. + stash = group.name.substr(1); // $FlowFixMe + + group.name = stash === "oiint" ? "\\iint" : "\\iiint"; + } + + base = buildCommon.makeSymbol(group.name, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + + if (stash.length > 0) { + // We're in \oiint or \oiiint. Overlay the oval. + // TODO: When font glyphs are available, delete this code. + const italic = base.italic; + const oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options); + base = buildCommon.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: base, + shift: 0 + }, { + type: "elem", + elem: oval, + shift: large ? 0.08 : 0 + }] + }, options); // $FlowFixMe + + group.name = "\\" + stash; + base.classes.unshift("mop"); // $FlowFixMe + + base.italic = italic; + } + } else if (group.body) { + // If this is a list, compose that list. + const inner = buildExpression(group.body, options, true); + + if (inner.length === 1 && inner[0] instanceof SymbolNode) { + base = inner[0]; + base.classes[0] = "mop"; // replace old mclass + } else { + base = buildCommon.makeSpan(["mop"], buildCommon.tryCombineChars(inner), options); + } + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + const output = []; + + for (let i = 1; i < group.name.length; i++) { + output.push(buildCommon.mathsym(group.name[i], group.mode, options)); + } + + base = buildCommon.makeSpan(["mop"], output, options); + } // If content of op is a single symbol, shift it vertically. + + + let baseShift = 0; + let slant = 0; + + if ((base instanceof SymbolNode || group.name === "\\oiint" || group.name === "\\oiiint") && !group.suppressBaseShift) { + // We suppress the shift of the base of \overset and \underset. Otherwise, + // shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; // The slant of the symbol is just its italic correction. + // $FlowFixMe + + slant = base.italic; + } + + if (hasLimits) { + return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift); + } else { + if (baseShift) { + base.style.position = "relative"; + base.style.top = baseShift + "em"; + } + + return base; + } +}; + +const mathmlBuilder$8 = (group, options) => { + let node; + + if (group.symbol) { + // This is a symbol. Just add the symbol. + node = new MathNode("mo", [makeText(group.name, group.mode)]); + + if (utils.contains(noSuccessor, group.name)) { + node.setAttribute("largeop", "false"); + } + } else if (group.body) { + // This is an operator with children. Add them. + node = new MathNode("mo", buildExpression$1(group.body, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + node = new MathNode("mi", [new TextNode(group.name.slice(1))]); // Append an <mo>⁡</mo>. + // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4 + + const operator = new MathNode("mo", [makeText("\u2061", "text")]); + + if (group.parentIsSupSub) { + node = new MathNode("mo", [node, operator]); + } else { + node = newDocumentFragment([node, operator]); + } + } + + return node; +}; + +const singleCharBigOps = { + "\u220F": "\\prod", + "\u2210": "\\coprod", + "\u2211": "\\sum", + "\u22c0": "\\bigwedge", + "\u22c1": "\\bigvee", + "\u22c2": "\\bigcap", + "\u22c3": "\\bigcup", + "\u2a00": "\\bigodot", + "\u2a01": "\\bigoplus", + "\u2a02": "\\bigotimes", + "\u2a04": "\\biguplus", + "\u2a06": "\\bigsqcup" +}; +defineFunction({ + type: "op", + names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220F", "\u2210", "\u2211", "\u22c0", "\u22c1", "\u22c2", "\u22c3", "\u2a00", "\u2a01", "\u2a02", "\u2a04", "\u2a06"], + props: { + numArgs: 0 + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + let fName = funcName; + + if (fName.length === 1) { + fName = singleCharBigOps[fName]; + } + + return { + type: "op", + mode: parser.mode, + limits: true, + parentIsSupSub: false, + symbol: true, + name: fName + }; + }, + htmlBuilder: htmlBuilder$8, + mathmlBuilder: mathmlBuilder$8 +}); // Note: calling defineFunction with a type that's already been defined only +// works because the same htmlBuilder and mathmlBuilder are being used. + +defineFunction({ + type: "op", + names: ["\\mathop"], + props: { + numArgs: 1 + }, + handler: (_ref2, args) => { + let parser = _ref2.parser; + const body = args[0]; + return { + type: "op", + mode: parser.mode, + limits: false, + parentIsSupSub: false, + symbol: false, + body: ordargument(body) + }; + }, + htmlBuilder: htmlBuilder$8, + mathmlBuilder: mathmlBuilder$8 +}); // There are 2 flags for operators; whether they produce limits in +// displaystyle, and whether they are symbols and should grow in +// displaystyle. These four groups cover the four possible choices. + +const singleCharIntegrals = { + "\u222b": "\\int", + "\u222c": "\\iint", + "\u222d": "\\iiint", + "\u222e": "\\oint", + "\u222f": "\\oiint", + "\u2230": "\\oiiint" +}; // No limits, not symbols + +defineFunction({ + type: "op", + names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], + props: { + numArgs: 0 + }, + + handler(_ref3) { + let parser = _ref3.parser, + funcName = _ref3.funcName; + return { + type: "op", + mode: parser.mode, + limits: false, + parentIsSupSub: false, + symbol: false, + name: funcName + }; + }, + + htmlBuilder: htmlBuilder$8, + mathmlBuilder: mathmlBuilder$8 +}); // Limits, not symbols + +defineFunction({ + type: "op", + names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], + props: { + numArgs: 0 + }, + + handler(_ref4) { + let parser = _ref4.parser, + funcName = _ref4.funcName; + return { + type: "op", + mode: parser.mode, + limits: true, + parentIsSupSub: false, + symbol: false, + name: funcName + }; + }, + + htmlBuilder: htmlBuilder$8, + mathmlBuilder: mathmlBuilder$8 +}); // No limits, symbols + +defineFunction({ + type: "op", + names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "\u222b", "\u222c", "\u222d", "\u222e", "\u222f", "\u2230"], + props: { + numArgs: 0 + }, + + handler(_ref5) { + let parser = _ref5.parser, + funcName = _ref5.funcName; + let fName = funcName; + + if (fName.length === 1) { + fName = singleCharIntegrals[fName]; + } + + return { + type: "op", + mode: parser.mode, + limits: false, + parentIsSupSub: false, + symbol: true, + name: fName + }; + }, + + htmlBuilder: htmlBuilder$8, + mathmlBuilder: mathmlBuilder$8 +}); + +// NOTE: Unlike most `htmlBuilder`s, this one handles not only +// "operatorname", but also "supsub" since \operatorname* can +const htmlBuilder$9 = (grp, options) => { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + let supGroup; + let subGroup; + let hasLimits = false; + let group; + const supSub = checkNodeType(grp, "supsub"); + + if (supSub) { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = supSub.sup; + subGroup = supSub.sub; + group = assertNodeType(supSub.base, "operatorname"); + hasLimits = true; + } else { + group = assertNodeType(grp, "operatorname"); + } + + let base; + + if (group.body.length > 0) { + const body = group.body.map(child => { + // $FlowFixMe: Check if the node has a string `text` property. + const childText = child.text; + + if (typeof childText === "string") { + return { + type: "textord", + mode: child.mode, + text: childText + }; + } else { + return child; + } + }); // Consolidate function names into symbol characters. + + const expression = buildExpression(body, options.withFont("mathrm"), true); + + for (let i = 0; i < expression.length; i++) { + const child = expression[i]; + + if (child instanceof SymbolNode) { + // Per amsopn package, + // change minus to hyphen and \ast to asterisk + child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*"); + } + } + + base = buildCommon.makeSpan(["mop"], expression, options); + } else { + base = buildCommon.makeSpan(["mop"], [], options); + } + + if (hasLimits) { + return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0); + } else { + return base; + } +}; + +const mathmlBuilder$9 = (group, options) => { + // The steps taken here are similar to the html version. + let expression = buildExpression$1(group.body, options.withFont("mathrm")); // Is expression a string or has it something like a fraction? + + let isAllString = true; // default + + for (let i = 0; i < expression.length; i++) { + const node = expression[i]; + + if (node instanceof mathMLTree.SpaceNode) ; else if (node instanceof mathMLTree.MathNode) { + switch (node.type) { + case "mi": + case "mn": + case "ms": + case "mspace": + case "mtext": + break; + // Do nothing yet. + + case "mo": + { + const child = node.children[0]; + + if (node.children.length === 1 && child instanceof mathMLTree.TextNode) { + child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*"); + } else { + isAllString = false; + } + + break; + } + + default: + isAllString = false; + } + } else { + isAllString = false; + } + } + + if (isAllString) { + // Write a single TextNode instead of multiple nested tags. + const word = expression.map(node => node.toText()).join(""); + expression = [new mathMLTree.TextNode(word)]; + } + + const identifier = new mathMLTree.MathNode("mi", expression); + identifier.setAttribute("mathvariant", "normal"); // \u2061 is the same as ⁡ + // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp + + const operator = new mathMLTree.MathNode("mo", [makeText("\u2061", "text")]); + + if (group.parentIsSupSub) { + return new mathMLTree.MathNode("mo", [identifier, operator]); + } else { + return mathMLTree.newDocumentFragment([identifier, operator]); + } +}; // \operatorname +// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@ + + +defineFunction({ + type: "operatorname", + names: ["\\operatorname", "\\operatorname*"], + props: { + numArgs: 1 + }, + handler: (_ref, args) => { + let parser = _ref.parser, + funcName = _ref.funcName; + const body = args[0]; + return { + type: "operatorname", + mode: parser.mode, + body: ordargument(body), + alwaysHandleSupSub: funcName === "\\operatorname*", + limits: false, + parentIsSupSub: false + }; + }, + htmlBuilder: htmlBuilder$9, + mathmlBuilder: mathmlBuilder$9 +}); + +defineFunctionBuilders({ + type: "ordgroup", + + htmlBuilder(group, options) { + if (group.semisimple) { + return buildCommon.makeFragment(buildExpression(group.body, options, false)); + } + + return buildCommon.makeSpan(["mord"], buildExpression(group.body, options, true), options); + }, + + mathmlBuilder(group, options) { + return buildExpressionRow(group.body, options, true); + } + +}); + +defineFunction({ + type: "overline", + names: ["\\overline"], + props: { + numArgs: 1 + }, + + handler(_ref, args) { + let parser = _ref.parser; + const body = args[0]; + return { + type: "overline", + mode: parser.mode, + body + }; + }, + + htmlBuilder(group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. + // Build the inner group in the cramped style. + const innerGroup = buildGroup(group.body, options.havingCrampedStyle()); // Create the line above the body + + const line = buildCommon.makeLineSpan("overline-line", options); // Generate the vlist, with the appropriate kerns + + const defaultRuleThickness = options.fontMetrics().defaultRuleThickness; + const vlist = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: innerGroup + }, { + type: "kern", + size: 3 * defaultRuleThickness + }, { + type: "elem", + elem: line + }, { + type: "kern", + size: defaultRuleThickness + }] + }, options); + return buildCommon.makeSpan(["mord", "overline"], [vlist], options); + }, + + mathmlBuilder(group, options) { + const operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203e")]); + operator.setAttribute("stretchy", "true"); + const node = new mathMLTree.MathNode("mover", [buildGroup$1(group.body, options), operator]); + node.setAttribute("accent", "true"); + return node; + } + +}); + +defineFunction({ + type: "phantom", + names: ["\\phantom"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: (_ref, args) => { + let parser = _ref.parser; + const body = args[0]; + return { + type: "phantom", + mode: parser.mode, + body: ordargument(body) + }; + }, + htmlBuilder: (group, options) => { + const elements = buildExpression(group.body, options.withPhantom(), false); // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + + return buildCommon.makeFragment(elements); + }, + mathmlBuilder: (group, options) => { + const inner = buildExpression$1(group.body, options); + return new mathMLTree.MathNode("mphantom", inner); + } +}); +defineFunction({ + type: "hphantom", + names: ["\\hphantom"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: (_ref2, args) => { + let parser = _ref2.parser; + const body = args[0]; + return { + type: "hphantom", + mode: parser.mode, + body + }; + }, + htmlBuilder: (group, options) => { + let node = buildCommon.makeSpan([], [buildGroup(group.body, options.withPhantom())]); + node.height = 0; + node.depth = 0; + + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + node.children[i].height = 0; + node.children[i].depth = 0; + } + } // See smash for comment re: use of makeVList + + + node = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: node + }] + }, options); // For spacing, TeX treats \smash as a math group (same spacing as ord). + + return buildCommon.makeSpan(["mord"], [node], options); + }, + mathmlBuilder: (group, options) => { + const inner = buildExpression$1(ordargument(group.body), options); + const phantom = new mathMLTree.MathNode("mphantom", inner); + const node = new mathMLTree.MathNode("mpadded", [phantom]); + node.setAttribute("height", "0px"); + node.setAttribute("depth", "0px"); + return node; + } +}); +defineFunction({ + type: "vphantom", + names: ["\\vphantom"], + props: { + numArgs: 1, + allowedInText: true + }, + handler: (_ref3, args) => { + let parser = _ref3.parser; + const body = args[0]; + return { + type: "vphantom", + mode: parser.mode, + body + }; + }, + htmlBuilder: (group, options) => { + const inner = buildCommon.makeSpan(["inner"], [buildGroup(group.body, options.withPhantom())]); + const fix = buildCommon.makeSpan(["fix"], []); + return buildCommon.makeSpan(["mord", "rlap"], [inner, fix], options); + }, + mathmlBuilder: (group, options) => { + const inner = buildExpression$1(ordargument(group.body), options); + const phantom = new mathMLTree.MathNode("mphantom", inner); + const node = new mathMLTree.MathNode("mpadded", [phantom]); + node.setAttribute("width", "0px"); + return node; + } +}); + +defineFunction({ + type: "raisebox", + names: ["\\raisebox"], + props: { + numArgs: 2, + argTypes: ["size", "hbox"], + allowedInText: true + }, + + handler(_ref, args) { + let parser = _ref.parser; + const amount = assertNodeType(args[0], "size").value; + const body = args[1]; + return { + type: "raisebox", + mode: parser.mode, + dy: amount, + body + }; + }, + + htmlBuilder(group, options) { + const body = buildGroup(group.body, options); + const dy = calculateSize(group.dy, options); + return buildCommon.makeVList({ + positionType: "shift", + positionData: -dy, + children: [{ + type: "elem", + elem: body + }] + }, options); + }, + + mathmlBuilder(group, options) { + const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]); + const dy = group.dy.number + group.dy.unit; + node.setAttribute("voffset", dy); + return node; + } + +}); + +defineFunction({ + type: "rule", + names: ["\\rule"], + props: { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] + }, + + handler(_ref, args, optArgs) { + let parser = _ref.parser; + const shift = optArgs[0]; + const width = assertNodeType(args[0], "size"); + const height = assertNodeType(args[1], "size"); + return { + type: "rule", + mode: parser.mode, + shift: shift && assertNodeType(shift, "size").value, + width: width.value, + height: height.value + }; + }, + + htmlBuilder(group, options) { + // Make an empty span for the rule + const rule = buildCommon.makeSpan(["mord", "rule"], [], options); // Calculate the shift, width, and height of the rule, and account for units + + const width = calculateSize(group.width, options); + const height = calculateSize(group.height, options); + const shift = group.shift ? calculateSize(group.shift, options) : 0; // Style the rule to the right size + + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; // Record the height and width + + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; // Font size is the number large enough that the browser will + // reserve at least `absHeight` space above the baseline. + // The 1.125 factor was empirically determined + + rule.maxFontSize = height * 1.125 * options.sizeMultiplier; + return rule; + }, + + mathmlBuilder(group, options) { + const width = calculateSize(group.width, options); + const height = calculateSize(group.height, options); + const shift = group.shift ? calculateSize(group.shift, options) : 0; + const color = options.color && options.getColor() || "black"; + const rule = new mathMLTree.MathNode("mspace"); + rule.setAttribute("mathbackground", color); + rule.setAttribute("width", width + "em"); + rule.setAttribute("height", height + "em"); + const wrapper = new mathMLTree.MathNode("mpadded", [rule]); + + if (shift >= 0) { + wrapper.setAttribute("height", "+" + shift + "em"); + } else { + wrapper.setAttribute("height", shift + "em"); + wrapper.setAttribute("depth", "+" + -shift + "em"); + } + + wrapper.setAttribute("voffset", shift + "em"); + return wrapper; + } + +}); + +function sizingGroup(value, options, baseOptions) { + const inner = buildExpression(value, options, false); + const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + + for (let i = 0; i < inner.length; i++) { + const pos = inner[i].classes.indexOf("sizing"); + + if (pos < 0) { + Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); + } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; + } + + inner[i].height *= multiplier; + inner[i].depth *= multiplier; + } + + return buildCommon.makeFragment(inner); +} +const sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; +const htmlBuilder$a = (group, options) => { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + const newOptions = options.havingSize(group.size); + return sizingGroup(group.body, newOptions, options); +}; +defineFunction({ + type: "sizing", + names: sizeFuncs, + props: { + numArgs: 0, + allowedInText: true + }, + handler: (_ref, args) => { + let breakOnTokenText = _ref.breakOnTokenText, + funcName = _ref.funcName, + parser = _ref.parser; + const body = parser.parseExpression(false, breakOnTokenText); + return { + type: "sizing", + mode: parser.mode, + // Figure out what size to use based on the list of functions above + size: sizeFuncs.indexOf(funcName) + 1, + body + }; + }, + htmlBuilder: htmlBuilder$a, + mathmlBuilder: (group, options) => { + const newOptions = options.havingSize(group.size); + const inner = buildExpression$1(group.body, newOptions); + const node = new mathMLTree.MathNode("mstyle", inner); // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + + node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); + return node; + } +}); + +// smash, with optional [tb], as in AMS +defineFunction({ + type: "smash", + names: ["\\smash"], + props: { + numArgs: 1, + numOptionalArgs: 1, + allowedInText: true + }, + handler: (_ref, args, optArgs) => { + let parser = _ref.parser; + let smashHeight = false; + let smashDepth = false; + const tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup"); + + if (tbArg) { + // Optional [tb] argument is engaged. + // ref: amsmath: \renewcommand{\smash}[1][tb]{% + // def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}% + let letter = ""; + + for (let i = 0; i < tbArg.body.length; ++i) { + const node = tbArg.body[i]; // $FlowFixMe: Not every node type has a `text` property. + + letter = node.text; + + if (letter === "t") { + smashHeight = true; + } else if (letter === "b") { + smashDepth = true; + } else { + smashHeight = false; + smashDepth = false; + break; + } + } + } else { + smashHeight = true; + smashDepth = true; + } + + const body = args[0]; + return { + type: "smash", + mode: parser.mode, + body, + smashHeight, + smashDepth + }; + }, + htmlBuilder: (group, options) => { + const node = buildCommon.makeSpan([], [buildGroup(group.body, options)]); + + if (!group.smashHeight && !group.smashDepth) { + return node; + } + + if (group.smashHeight) { + node.height = 0; // In order to influence makeVList, we have to reset the children. + + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + node.children[i].height = 0; + } + } + } + + if (group.smashDepth) { + node.depth = 0; + + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + node.children[i].depth = 0; + } + } + } // At this point, we've reset the TeX-like height and depth values. + // But the span still has an HTML line height. + // makeVList applies "display: table-cell", which prevents the browser + // from acting on that line height. So we'll call makeVList now. + + + const smashedNode = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: node + }] + }, options); // For spacing, TeX treats \hphantom as a math group (same spacing as ord). + + return buildCommon.makeSpan(["mord"], [smashedNode], options); + }, + mathmlBuilder: (group, options) => { + const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]); + + if (group.smashHeight) { + node.setAttribute("height", "0px"); + } + + if (group.smashDepth) { + node.setAttribute("depth", "0px"); + } + + return node; + } +}); + +defineFunction({ + type: "sqrt", + names: ["\\sqrt"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + + handler(_ref, args, optArgs) { + let parser = _ref.parser; + const index = optArgs[0]; + const body = args[0]; + return { + type: "sqrt", + mode: parser.mode, + body, + index + }; + }, + + htmlBuilder(group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + // First, we do the same steps as in overline to build the inner group + // and line + let inner = buildGroup(group.body, options.havingCrampedStyle()); + + if (inner.height === 0) { + // Render a small surd. + inner.height = options.fontMetrics().xHeight; + } // Some groups can return document fragments. Handle those by wrapping + // them in a span. + + + inner = buildCommon.wrapFragment(inner, options); // Calculate the minimum size for the \surd delimiter + + const metrics = options.fontMetrics(); + const theta = metrics.defaultRuleThickness; + let phi = theta; + + if (options.style.id < Style$1.TEXT.id) { + phi = options.fontMetrics().xHeight; + } // Calculate the clearance between the body and line + + + let lineClearance = theta + phi / 4; + const minDelimiterHeight = inner.height + inner.depth + lineClearance + theta; // Create a sqrt SVG of the required minimum size + + const _delimiter$sqrtImage = delimiter.sqrtImage(minDelimiterHeight, options), + img = _delimiter$sqrtImage.span, + ruleWidth = _delimiter$sqrtImage.ruleWidth, + advanceWidth = _delimiter$sqrtImage.advanceWidth; + + const delimDepth = img.height - ruleWidth; // Adjust the clearance based on the delimiter size + + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } // Shift the sqrt image + + + const imgShift = img.height - inner.height - lineClearance - ruleWidth; + inner.style.paddingLeft = advanceWidth + "em"; // Overlay the image and the argument. + + const body = buildCommon.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: inner, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: -(inner.height + imgShift) + }, { + type: "elem", + elem: img + }, { + type: "kern", + size: ruleWidth + }] + }, options); + + if (!group.index) { + return buildCommon.makeSpan(["mord", "sqrt"], [body], options); + } else { + // Handle the optional root index + // The index is always in scriptscript style + const newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT); + const rootm = buildGroup(group.index, newOptions, options); // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + + const toShift = 0.6 * (body.height - body.depth); // Build a VList with the superscript shifted up correctly + + const rootVList = buildCommon.makeVList({ + positionType: "shift", + positionData: -toShift, + children: [{ + type: "elem", + elem: rootm + }] + }, options); // Add a class surrounding it so we can add on the appropriate + // kerning + + const rootVListWrap = buildCommon.makeSpan(["root"], [rootVList]); + return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options); + } + }, + + mathmlBuilder(group, options) { + const body = group.body, + index = group.index; + return index ? new mathMLTree.MathNode("mroot", [buildGroup$1(body, options), buildGroup$1(index, options)]) : new mathMLTree.MathNode("msqrt", [buildGroup$1(body, options)]); + } + +}); + +const styleMap$1 = { + "display": Style$1.DISPLAY, + "text": Style$1.TEXT, + "script": Style$1.SCRIPT, + "scriptscript": Style$1.SCRIPTSCRIPT +}; +defineFunction({ + type: "styling", + names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], + props: { + numArgs: 0, + allowedInText: true + }, + + handler(_ref, args) { + let breakOnTokenText = _ref.breakOnTokenText, + funcName = _ref.funcName, + parser = _ref.parser; + // parse out the implicit body + const body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g. + // here and in buildHTML and de-dupe the enumeration of all the styles). + // $FlowFixMe: The names above exactly match the styles. + + const style = funcName.slice(1, funcName.length - 5); + return { + type: "styling", + mode: parser.mode, + // Figure out what style to use by pulling out the style from + // the function name + style, + body + }; + }, + + htmlBuilder(group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + const newStyle = styleMap$1[group.style]; + const newOptions = options.havingStyle(newStyle).withFont(''); + return sizingGroup(group.body, newOptions, options); + }, + + mathmlBuilder(group, options) { + // Figure out what style we're changing to. + const newStyle = styleMap$1[group.style]; + const newOptions = options.havingStyle(newStyle); + const inner = buildExpression$1(group.body, newOptions); + const node = new mathMLTree.MathNode("mstyle", inner); + const styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + const attr = styleAttributes[group.style]; + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + return node; + } + +}); + +/** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * Sometimes, groups perform special rules when they have superscripts or + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ +const htmlBuilderDelegate = function htmlBuilderDelegate(group, options) { + const base = group.base; + + if (!base) { + return null; + } else if (base.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + const delegate = base.limits && (options.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub); + return delegate ? htmlBuilder$8 : null; + } else if (base.type === "operatorname") { + const delegate = base.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base.limits); + return delegate ? htmlBuilder$9 : null; + } else if (base.type === "accent") { + return utils.isCharacterBox(base.base) ? htmlBuilder : null; + } else if (base.type === "horizBrace") { + const isSup = !group.sub; + return isSup === base.isOver ? htmlBuilder$7 : null; + } else { + return null; + } +}; // Super scripts and subscripts, whose precise placement can depend on other +// functions that precede them. + + +defineFunctionBuilders({ + type: "supsub", + + htmlBuilder(group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + const builderDelegate = htmlBuilderDelegate(group, options); + + if (builderDelegate) { + return builderDelegate(group, options); + } + + const valueBase = group.base, + valueSup = group.sup, + valueSub = group.sub; + const base = buildGroup(valueBase, options); + let supm; + let subm; + const metrics = options.fontMetrics(); // Rule 18a + + let supShift = 0; + let subShift = 0; + const isCharacterBox = valueBase && utils.isCharacterBox(valueBase); + + if (valueSup) { + const newOptions = options.havingStyle(options.style.sup()); + supm = buildGroup(valueSup, newOptions, options); + + if (!isCharacterBox) { + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + if (valueSub) { + const newOptions = options.havingStyle(options.style.sub()); + subm = buildGroup(valueSub, newOptions, options); + + if (!isCharacterBox) { + subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } // Rule 18c + + + let minSupShift; + + if (options.style === Style$1.DISPLAY) { + minSupShift = metrics.sup1; + } else if (options.style.cramped) { + minSupShift = metrics.sup3; + } else { + minSupShift = metrics.sup2; + } // scriptspace is a font-size-independent size, so scale it + // appropriately for use as the marginRight. + + + const multiplier = options.sizeMultiplier; + const marginRight = 0.5 / metrics.ptPerEm / multiplier + "em"; + let marginLeft = null; + + if (subm) { + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + const isOiint = group.base && group.base.type === "op" && group.base.name && (group.base.name === "\\oiint" || group.base.name === "\\oiiint"); + + if (base instanceof SymbolNode || isOiint) { + // $FlowFixMe + marginLeft = -base.italic + "em"; + } + } + + let supsub; + + if (supm && subm) { + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + subShift = Math.max(subShift, metrics.sub2); + const ruleWidth = metrics.defaultRuleThickness; // Rule 18e + + const maxWidth = 4 * ruleWidth; + + if (supShift - supm.depth - (subm.height - subShift) < maxWidth) { + subShift = maxWidth - (supShift - supm.depth) + subm.height; + const psi = 0.8 * metrics.xHeight - (supShift - supm.depth); + + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + const vlistElem = [{ + type: "elem", + elem: subm, + shift: subShift, + marginRight, + marginLeft + }, { + type: "elem", + elem: supm, + shift: -supShift, + marginRight + }]; + supsub = buildCommon.makeVList({ + positionType: "individualShift", + children: vlistElem + }, options); + } else if (subm) { + // Rule 18b + subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); + const vlistElem = [{ + type: "elem", + elem: subm, + marginLeft, + marginRight + }]; + supsub = buildCommon.makeVList({ + positionType: "shift", + positionData: subShift, + children: vlistElem + }, options); + } else if (supm) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + supsub = buildCommon.makeVList({ + positionType: "shift", + positionData: -supShift, + children: [{ + type: "elem", + elem: supm, + marginRight + }] + }, options); + } else { + throw new Error("supsub must have either sup or sub."); + } // Wrap the supsub vlist in a span.msupsub to reset text-align. + + + const mclass = getTypeOfDomTree(base, "right") || "mord"; + return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan(["msupsub"], [supsub])], options); + }, + + mathmlBuilder(group, options) { + // Is the inner group a relevant horizonal brace? + let isBrace = false; + let isOver; + let isSup; + const horizBrace = checkNodeType(group.base, "horizBrace"); + + if (horizBrace) { + isSup = !!group.sup; + + if (isSup === horizBrace.isOver) { + isBrace = true; + isOver = horizBrace.isOver; + } + } + + if (group.base && (group.base.type === "op" || group.base.type === "operatorname")) { + group.base.parentIsSupSub = true; + } + + const children = [buildGroup$1(group.base, options)]; + + if (group.sub) { + children.push(buildGroup$1(group.sub, options)); + } + + if (group.sup) { + children.push(buildGroup$1(group.sup, options)); + } + + let nodeType; + + if (isBrace) { + nodeType = isOver ? "mover" : "munder"; + } else if (!group.sub) { + const base = group.base; + + if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) { + nodeType = "mover"; + } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) { + nodeType = "mover"; + } else { + nodeType = "msup"; + } + } else if (!group.sup) { + const base = group.base; + + if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) { + nodeType = "munder"; + } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) { + nodeType = "munder"; + } else { + nodeType = "msub"; + } + } else { + const base = group.base; + + if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) { + nodeType = "munderover"; + } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || base.limits)) { + nodeType = "munderover"; + } else { + nodeType = "msubsup"; + } + } + + const node = new mathMLTree.MathNode(nodeType, children); + return node; + } + +}); + +defineFunctionBuilders({ + type: "atom", + + htmlBuilder(group, options) { + return buildCommon.mathsym(group.text, group.mode, options, ["m" + group.family]); + }, + + mathmlBuilder(group, options) { + const node = new mathMLTree.MathNode("mo", [makeText(group.text, group.mode)]); + + if (group.family === "bin") { + const variant = getVariant(group, options); + + if (variant === "bold-italic") { + node.setAttribute("mathvariant", variant); + } + } else if (group.family === "punct") { + node.setAttribute("separator", "true"); + } else if (group.family === "open" || group.family === "close") { + // Delims built here should not stretch vertically. + // See delimsizing.js for stretchy delims. + node.setAttribute("stretchy", "false"); + } + + return node; + } + +}); + +// "mathord" and "textord" ParseNodes created in Parser.js from symbol Groups in +const defaultVariant = { + "mi": "italic", + "mn": "normal", + "mtext": "normal" +}; +defineFunctionBuilders({ + type: "mathord", + + htmlBuilder(group, options) { + return buildCommon.makeOrd(group, options, "mathord"); + }, + + mathmlBuilder(group, options) { + const node = new mathMLTree.MathNode("mi", [makeText(group.text, group.mode, options)]); + const variant = getVariant(group, options) || "italic"; + + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + + return node; + } + +}); +defineFunctionBuilders({ + type: "textord", + + htmlBuilder(group, options) { + return buildCommon.makeOrd(group, options, "textord"); + }, + + mathmlBuilder(group, options) { + const text = makeText(group.text, group.mode, options); + const variant = getVariant(group, options) || "normal"; + let node; + + if (group.mode === 'text') { + node = new mathMLTree.MathNode("mtext", [text]); + } else if (/[0-9]/.test(group.text)) { + // TODO(kevinb) merge adjacent <mn> nodes + // do it as a post processing step + node = new mathMLTree.MathNode("mn", [text]); + } else if (group.text === "\\prime") { + node = new mathMLTree.MathNode("mo", [text]); + } else { + node = new mathMLTree.MathNode("mi", [text]); + } + + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + + return node; + } + +}); + +const cssSpace = { + "\\nobreak": "nobreak", + "\\allowbreak": "allowbreak" +}; // A lookup table to determine whether a spacing function/symbol should be +// treated like a regular space character. If a symbol or command is a key +// in this table, then it should be a regular space character. Furthermore, +// the associated value may have a `className` specifying an extra CSS class +// to add to the created `span`. + +const regularSpace = { + " ": {}, + "\\ ": {}, + "~": { + className: "nobreak" + }, + "\\space": {}, + "\\nobreakspace": { + className: "nobreak" + } +}; // ParseNode<"spacing"> created in Parser.js from the "spacing" symbol Groups in +// src/symbols.js. + +defineFunctionBuilders({ + type: "spacing", + + htmlBuilder(group, options) { + if (regularSpace.hasOwnProperty(group.text)) { + const className = regularSpace[group.text].className || ""; // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + + if (group.mode === "text") { + const ord = buildCommon.makeOrd(group, options, "textord"); + ord.classes.push(className); + return ord; + } else { + return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group.text, group.mode, options)], options); + } + } else if (cssSpace.hasOwnProperty(group.text)) { + // Spaces based on just a CSS class. + return buildCommon.makeSpan(["mspace", cssSpace[group.text]], [], options); + } else { + throw new ParseError(`Unknown type of space "${group.text}"`); + } + }, + + mathmlBuilder(group, options) { + let node; + + if (regularSpace.hasOwnProperty(group.text)) { + node = new mathMLTree.MathNode("mtext", [new mathMLTree.TextNode("\u00a0")]); + } else if (cssSpace.hasOwnProperty(group.text)) { + // CSS-based MathML spaces (\nobreak, \allowbreak) are ignored + return new mathMLTree.MathNode("mspace"); + } else { + throw new ParseError(`Unknown type of space "${group.text}"`); + } + + return node; + } + +}); + +const pad = () => { + const padNode = new mathMLTree.MathNode("mtd", []); + padNode.setAttribute("width", "50%"); + return padNode; +}; + +defineFunctionBuilders({ + type: "tag", + + mathmlBuilder(group, options) { + const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]); + table.setAttribute("width", "100%"); + return table; // TODO: Left-aligned tags. + // Currently, the group and options passed here do not contain + // enough info to set tag alignment. `leqno` is in Settings but it is + // not passed to Options. On the HTML side, leqno is + // set by a CSS class applied in buildTree.js. That would have worked + // in MathML if browsers supported <mlabeledtr>. Since they don't, we + // need to rewrite the way this function is called. + } + +}); + +const textFontFamilies = { + "\\text": undefined, + "\\textrm": "textrm", + "\\textsf": "textsf", + "\\texttt": "texttt", + "\\textnormal": "textrm" +}; +const textFontWeights = { + "\\textbf": "textbf", + "\\textmd": "textmd" +}; +const textFontShapes = { + "\\textit": "textit", + "\\textup": "textup" +}; + +const optionsWithFont = (group, options) => { + const font = group.font; // Checks if the argument is a font family or a font style. + + if (!font) { + return options; + } else if (textFontFamilies[font]) { + return options.withTextFontFamily(textFontFamilies[font]); + } else if (textFontWeights[font]) { + return options.withTextFontWeight(textFontWeights[font]); + } else { + return options.withTextFontShape(textFontShapes[font]); + } +}; + +defineFunction({ + type: "text", + names: [// Font families + "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", // Font weights + "\\textbf", "\\textmd", // Font Shapes + "\\textit", "\\textup"], + props: { + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true + }, + + handler(_ref, args) { + let parser = _ref.parser, + funcName = _ref.funcName; + const body = args[0]; + return { + type: "text", + mode: parser.mode, + body: ordargument(body), + font: funcName + }; + }, + + htmlBuilder(group, options) { + const newOptions = optionsWithFont(group, options); + const inner = buildExpression(group.body, newOptions, true); + return buildCommon.makeSpan(["mord", "text"], buildCommon.tryCombineChars(inner), newOptions); + }, + + mathmlBuilder(group, options) { + const newOptions = optionsWithFont(group, options); + return buildExpressionRow(group.body, newOptions); + } + +}); + +defineFunction({ + type: "underline", + names: ["\\underline"], + props: { + numArgs: 1, + allowedInText: true + }, + + handler(_ref, args) { + let parser = _ref.parser; + return { + type: "underline", + mode: parser.mode, + body: args[0] + }; + }, + + htmlBuilder(group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + // Build the inner group. + const innerGroup = buildGroup(group.body, options); // Create the line to go below the body + + const line = buildCommon.makeLineSpan("underline-line", options); // Generate the vlist, with the appropriate kerns + + const defaultRuleThickness = options.fontMetrics().defaultRuleThickness; + const vlist = buildCommon.makeVList({ + positionType: "top", + positionData: innerGroup.height, + children: [{ + type: "kern", + size: defaultRuleThickness + }, { + type: "elem", + elem: line + }, { + type: "kern", + size: 3 * defaultRuleThickness + }, { + type: "elem", + elem: innerGroup + }] + }, options); + return buildCommon.makeSpan(["mord", "underline"], [vlist], options); + }, + + mathmlBuilder(group, options) { + const operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203e")]); + operator.setAttribute("stretchy", "true"); + const node = new mathMLTree.MathNode("munder", [buildGroup$1(group.body, options), operator]); + node.setAttribute("accentunder", "true"); + return node; + } + +}); + +defineFunction({ + type: "verb", + names: ["\\verb"], + props: { + numArgs: 0, + allowedInText: true + }, + + handler(context, args, optArgs) { + // \verb and \verb* are dealt with directly in Parser.js. + // If we end up here, it's because of a failure to match the two delimiters + // in the regex in Lexer.js. LaTeX raises the following error when \verb is + // terminated by end of line (or file). + throw new ParseError("\\verb ended by end of line instead of matching delimiter"); + }, + + htmlBuilder(group, options) { + const text = makeVerb(group); + const body = []; // \verb enters text mode and therefore is sized like \textstyle + + const newOptions = options.havingStyle(options.style.text()); + + for (let i = 0; i < text.length; i++) { + let c = text[i]; + + if (c === '~') { + c = '\\textasciitilde'; + } + + body.push(buildCommon.makeSymbol(c, "Typewriter-Regular", group.mode, newOptions, ["mord", "texttt"])); + } + + return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), buildCommon.tryCombineChars(body), newOptions); + }, + + mathmlBuilder(group, options) { + const text = new mathMLTree.TextNode(makeVerb(group)); + const node = new mathMLTree.MathNode("mtext", [text]); + node.setAttribute("mathvariant", "monospace"); + return node; + } + +}); +/** + * Converts verb group into body string. + * + * \verb* replaces each space with an open box \u2423 + * \verb replaces each space with a no-break space \xA0 + */ + +const makeVerb = group => group.body.replace(/ /g, group.star ? '\u2423' : '\xA0'); + +/** Include this to ensure that all functions are defined. */ +const functions = _functions; + +/** + * The Lexer class handles tokenizing the input in various ways. Since our + * parser expects us to be able to backtrack, the lexer allows lexing from any + * given starting point. + * + * Its main exposed function is the `lex` function, which takes a position to + * lex from and a type of token to lex. It defers to the appropriate `_innerLex` + * function. + * + * The various `_innerLex` functions perform the actual lexing of different + * kinds. + */ + +/* The following tokenRegex + * - matches typical whitespace (but not NBSP etc.) using its first group + * - does not match any control character \x00-\x1f except whitespace + * - does not match a bare backslash + * - matches any ASCII character except those just mentioned + * - does not match the BMP private use area \uE000-\uF8FF + * - does not match bare surrogate code units + * - matches any BMP character except for those just described + * - matches any valid Unicode surrogate pair + * - matches a backslash followed by one or more letters + * - matches a backslash followed by any BMP character, including newline + * Just because the Lexer matches something doesn't mean it's valid input: + * If there is no matching function or symbol definition, the Parser will + * still reject the input. + */ +const spaceRegexString = "[ \r\n\t]"; +const controlWordRegexString = "\\\\[a-zA-Z@]+"; +const controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]"; +const controlWordWhitespaceRegexString = `${controlWordRegexString}${spaceRegexString}*`; +const controlWordWhitespaceRegex = new RegExp(`^(${controlWordRegexString})${spaceRegexString}*$`); +const combiningDiacriticalMarkString = "[\u0300-\u036f]"; +const combiningDiacriticalMarksEndRegex = new RegExp(`${combiningDiacriticalMarkString}+$`); +const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace +"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint +`${combiningDiacriticalMarkString}*` + // ...plus accents +"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair +`${combiningDiacriticalMarkString}*` + // ...plus accents +"|\\\\verb\\*([^]).*?\\3" + // \verb* +"|\\\\verb([^*a-zA-Z]).*?\\4" + // \verb unstarred +"|\\\\operatorname\\*" + // \operatorname* +`|${controlWordWhitespaceRegexString}` + // \macroName + spaces +`|${controlSymbolRegexString})`; // \\, \', etc. + +/** Main Lexer class */ + +class Lexer { + // category codes, only supports comment characters (14) for now + constructor(input, settings) { + this.input = void 0; + this.settings = void 0; + this.tokenRegex = void 0; + this.catcodes = void 0; + // Separate accents from characters + this.input = input; + this.settings = settings; + this.tokenRegex = new RegExp(tokenRegexString, 'g'); + this.catcodes = { + "%": 14 // comment character + + }; + } + + setCatcode(char, code) { + this.catcodes[char] = code; + } + /** + * This function lexes a single token. + */ + + + lex() { + const input = this.input; + const pos = this.tokenRegex.lastIndex; + + if (pos === input.length) { + return new Token("EOF", new SourceLocation(this, pos, pos)); + } + + const match = this.tokenRegex.exec(input); + + if (match === null || match.index !== pos) { + throw new ParseError(`Unexpected character: '${input[pos]}'`, new Token(input[pos], new SourceLocation(this, pos, pos + 1))); + } + + let text = match[2] || " "; + + if (this.catcodes[text] === 14) { + // comment character + const nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex); + + if (nlIndex === -1) { + this.tokenRegex.lastIndex = input.length; // EOF + + this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)"); + } else { + this.tokenRegex.lastIndex = nlIndex + 1; + } + + return this.lex(); + } // Trim any trailing whitespace from control word match + + + const controlMatch = text.match(controlWordWhitespaceRegex); + + if (controlMatch) { + text = controlMatch[1]; + } + + return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex)); + } + +} + +/** + * A `Namespace` refers to a space of nameable things like macros or lengths, + * which can be `set` either globally or local to a nested group, using an + * undo stack similar to how TeX implements this functionality. + * Performance-wise, `get` and local `set` take constant time, while global + * `set` takes time proportional to the depth of group nesting. + */ +class Namespace { + /** + * Both arguments are optional. The first argument is an object of + * built-in mappings which never change. The second argument is an object + * of initial (global-level) mappings, which will constantly change + * according to any global/top-level `set`s done. + */ + constructor(builtins, globalMacros) { + if (builtins === void 0) { + builtins = {}; + } + + if (globalMacros === void 0) { + globalMacros = {}; + } + + this.current = void 0; + this.builtins = void 0; + this.undefStack = void 0; + this.current = globalMacros; + this.builtins = builtins; + this.undefStack = []; + } + /** + * Start a new nested group, affecting future local `set`s. + */ + + + beginGroup() { + this.undefStack.push({}); + } + /** + * End current nested group, restoring values before the group began. + */ + + + endGroup() { + if (this.undefStack.length === 0) { + throw new ParseError("Unbalanced namespace destruction: attempt " + "to pop global namespace; please report this as a bug"); + } + + const undefs = this.undefStack.pop(); + + for (const undef in undefs) { + if (undefs.hasOwnProperty(undef)) { + if (undefs[undef] === undefined) { + delete this.current[undef]; + } else { + this.current[undef] = undefs[undef]; + } + } + } + } + /** + * Detect whether `name` has a definition. Equivalent to + * `get(name) != null`. + */ + + + has(name) { + return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name); + } + /** + * Get the current value of a name, or `undefined` if there is no value. + * + * Note: Do not use `if (namespace.get(...))` to detect whether a macro + * is defined, as the definition may be the empty string which evaluates + * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or + * `if (namespace.has(...))`. + */ + + + get(name) { + if (this.current.hasOwnProperty(name)) { + return this.current[name]; + } else { + return this.builtins[name]; + } + } + /** + * Set the current value of a name, and optionally set it globally too. + * Local set() sets the current value and (when appropriate) adds an undo + * operation to the undo stack. Global set() may change the undo + * operation at every level, so takes time linear in their number. + */ + + + set(name, value, global) { + if (global === void 0) { + global = false; + } + + if (global) { + // Global set is equivalent to setting in all groups. Simulate this + // by destroying any undos currently scheduled for this name, + // and adding an undo with the *new* value (in case it later gets + // locally reset within this environment). + for (let i = 0; i < this.undefStack.length; i++) { + delete this.undefStack[i][name]; + } + + if (this.undefStack.length > 0) { + this.undefStack[this.undefStack.length - 1][name] = value; + } + } else { + // Undo this set at end of this group (possibly to `undefined`), + // unless an undo is already in place, in which case that older + // value is the correct one. + const top = this.undefStack[this.undefStack.length - 1]; + + if (top && !top.hasOwnProperty(name)) { + top[name] = this.current[name]; + } + } + + this.current[name] = value; + } + +} + +/** + * Predefined macros for KaTeX. + * This can be used to define some commands in terms of others. + */ +const builtinMacros = {}; + +function defineMacro(name, body) { + builtinMacros[name] = body; +} ////////////////////////////////////////////////////////////////////// +// macro tools +// LaTeX's \@firstoftwo{#1}{#2} expands to #1, skipping #2 +// TeX source: \long\def\@firstoftwo#1#2{#1} + +defineMacro("\\@firstoftwo", function (context) { + const args = context.consumeArgs(2); + return { + tokens: args[0], + numArgs: 0 + }; +}); // LaTeX's \@secondoftwo{#1}{#2} expands to #2, skipping #1 +// TeX source: \long\def\@secondoftwo#1#2{#2} + +defineMacro("\\@secondoftwo", function (context) { + const args = context.consumeArgs(2); + return { + tokens: args[1], + numArgs: 0 + }; +}); // LaTeX's \@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded) +// symbol. If it matches #1, then the macro expands to #2; otherwise, #3. +// Note, however, that it does not consume the next symbol in either case. + +defineMacro("\\@ifnextchar", function (context) { + const args = context.consumeArgs(3); // symbol, if, else + + const nextToken = context.future(); + + if (args[0].length === 1 && args[0][0].text === nextToken.text) { + return { + tokens: args[1], + numArgs: 0 + }; + } else { + return { + tokens: args[2], + numArgs: 0 + }; + } +}); // LaTeX's \@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol. +// If it is `*`, then it consumes the symbol, and the macro expands to #1; +// otherwise, the macro expands to #2 (without consuming the symbol). +// TeX source: \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} + +defineMacro("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); // LaTeX's \TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode + +defineMacro("\\TextOrMath", function (context) { + const args = context.consumeArgs(2); + + if (context.mode === 'text') { + return { + tokens: args[0], + numArgs: 0 + }; + } else { + return { + tokens: args[1], + numArgs: 0 + }; + } +}); // Lookup table for parsing numbers in base 8 through 16 + +const digitToNumber = { + "0": 0, + "1": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "9": 9, + "a": 10, + "A": 10, + "b": 11, + "B": 11, + "c": 12, + "C": 12, + "d": 13, + "D": 13, + "e": 14, + "E": 14, + "f": 15, + "F": 15 +}; // TeX \char makes a literal character (catcode 12) using the following forms: +// (see The TeXBook, p. 43) +// \char123 -- decimal +// \char'123 -- octal +// \char"123 -- hex +// \char`x -- character that can be written (i.e. isn't active) +// \char`\x -- character that cannot be written (e.g. %) +// These all refer to characters from the font, so we turn them into special +// calls to a function \@char dealt with in the Parser. + +defineMacro("\\char", function (context) { + let token = context.popToken(); + let base; + let number = ''; + + if (token.text === "'") { + base = 8; + token = context.popToken(); + } else if (token.text === '"') { + base = 16; + token = context.popToken(); + } else if (token.text === "`") { + token = context.popToken(); + + if (token.text[0] === "\\") { + number = token.text.charCodeAt(1); + } else if (token.text === "EOF") { + throw new ParseError("\\char` missing argument"); + } else { + number = token.text.charCodeAt(0); + } + } else { + base = 10; + } + + if (base) { + // Parse a number in the given base, starting with first `token`. + number = digitToNumber[token.text]; + + if (number == null || number >= base) { + throw new ParseError(`Invalid base-${base} digit ${token.text}`); + } + + let digit; + + while ((digit = digitToNumber[context.future().text]) != null && digit < base) { + number *= base; + number += digit; + context.popToken(); + } + } + + return `\\@char{${number}}`; +}); // Basic support for macro definitions: +// \def\macro{expansion} +// \def\macro#1{expansion} +// \def\macro#1#2{expansion} +// \def\macro#1#2#3#4#5#6#7#8#9{expansion} +// Also the \gdef and \global\def equivalents + +const def = (context, global) => { + let arg = context.consumeArgs(1)[0]; + + if (arg.length !== 1) { + throw new ParseError("\\gdef's first argument must be a macro name"); + } + + const name = arg[0].text; // Count argument specifiers, and check they are in the order #1 #2 ... + + let numArgs = 0; + arg = context.consumeArgs(1)[0]; + + while (arg.length === 1 && arg[0].text === "#") { + arg = context.consumeArgs(1)[0]; + + if (arg.length !== 1) { + throw new ParseError(`Invalid argument number length "${arg.length}"`); + } + + if (!/^[1-9]$/.test(arg[0].text)) { + throw new ParseError(`Invalid argument number "${arg[0].text}"`); + } + + numArgs++; + + if (parseInt(arg[0].text) !== numArgs) { + throw new ParseError(`Argument number "${arg[0].text}" out of order`); + } + + arg = context.consumeArgs(1)[0]; + } // Final arg is the expansion of the macro + + + context.macros.set(name, { + tokens: arg, + numArgs + }, global); + return ''; +}; + +defineMacro("\\gdef", context => def(context, true)); +defineMacro("\\def", context => def(context, false)); +defineMacro("\\global", context => { + const next = context.consumeArgs(1)[0]; + + if (next.length !== 1) { + throw new ParseError("Invalid command after \\global"); + } + + const command = next[0].text; // TODO: Should expand command + + if (command === "\\def") { + // \global\def is equivalent to \gdef + return def(context, true); + } else { + throw new ParseError(`Invalid command '${command}' after \\global`); + } +}); // \newcommand{\macro}[args]{definition} +// \renewcommand{\macro}[args]{definition} +// TODO: Optional arguments: \newcommand{\macro}[args][default]{definition} + +const newcommand = (context, existsOK, nonexistsOK) => { + let arg = context.consumeArgs(1)[0]; + + if (arg.length !== 1) { + throw new ParseError("\\newcommand's first argument must be a macro name"); + } + + const name = arg[0].text; + const exists = context.isDefined(name); + + if (exists && !existsOK) { + throw new ParseError(`\\newcommand{${name}} attempting to redefine ` + `${name}; use \\renewcommand`); + } + + if (!exists && !nonexistsOK) { + throw new ParseError(`\\renewcommand{${name}} when command ${name} ` + `does not yet exist; use \\newcommand`); + } + + let numArgs = 0; + arg = context.consumeArgs(1)[0]; + + if (arg.length === 1 && arg[0].text === "[") { + let argText = ''; + let token = context.expandNextToken(); + + while (token.text !== "]" && token.text !== "EOF") { + // TODO: Should properly expand arg, e.g., ignore {}s + argText += token.text; + token = context.expandNextToken(); + } + + if (!argText.match(/^\s*[0-9]+\s*$/)) { + throw new ParseError(`Invalid number of arguments: ${argText}`); + } + + numArgs = parseInt(argText); + arg = context.consumeArgs(1)[0]; + } // Final arg is the expansion of the macro + + + context.macros.set(name, { + tokens: arg, + numArgs + }); + return ''; +}; + +defineMacro("\\newcommand", context => newcommand(context, false, true)); +defineMacro("\\renewcommand", context => newcommand(context, true, false)); +defineMacro("\\providecommand", context => newcommand(context, true, true)); ////////////////////////////////////////////////////////////////////// +// Grouping +// \let\bgroup={ \let\egroup=} + +defineMacro("\\bgroup", "{"); +defineMacro("\\egroup", "}"); // Symbols from latex.ltx: +// \def\lq{`} +// \def\rq{'} +// \def \aa {\r a} +// \def \AA {\r A} + +defineMacro("\\lq", "`"); +defineMacro("\\rq", "'"); +defineMacro("\\aa", "\\r a"); +defineMacro("\\AA", "\\r A"); // Copyright (C) and registered (R) symbols. Use raw symbol in MathML. +// \DeclareTextCommandDefault{\textcopyright}{\textcircled{c}} +// \DeclareTextCommandDefault{\textregistered}{\textcircled{% +// \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}} +// \DeclareRobustCommand{\copyright}{% +// \ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi} + +defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}"); +defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"); +defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Characters omitted from Unicode range 1D400–1D7FF + +defineMacro("\u212C", "\\mathscr{B}"); // script + +defineMacro("\u2130", "\\mathscr{E}"); +defineMacro("\u2131", "\\mathscr{F}"); +defineMacro("\u210B", "\\mathscr{H}"); +defineMacro("\u2110", "\\mathscr{I}"); +defineMacro("\u2112", "\\mathscr{L}"); +defineMacro("\u2133", "\\mathscr{M}"); +defineMacro("\u211B", "\\mathscr{R}"); +defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur + +defineMacro("\u210C", "\\mathfrak{H}"); +defineMacro("\u2128", "\\mathfrak{Z}"); // Define \Bbbk with a macro that works in both HTML and MathML. + +defineMacro("\\Bbbk", "\\Bbb{k}"); // Unicode middle dot +// The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays +// the dot at U+22C5 and gives it punct spacing. + +defineMacro("\u00b7", "\\cdotp"); // \llap and \rlap render their contents in text mode + +defineMacro("\\llap", "\\mathllap{\\textrm{#1}}"); +defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}"); +defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // \not is defined by base/fontmath.ltx via +// \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36} +// It's thus treated like a \mathrel, but defined by a symbol that has zero +// width but extends to the right. We use \rlap to get that spacing. +// For MathML we write U+0338 here. buildMathML.js will then do the overlay. + +defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); // Negated symbols from base/fontmath.ltx: +// \def\neq{\not=} \let\ne=\neq +// \DeclareRobustCommand +// \notin{\mathrel{\m@th\mathpalette\c@ncel\in}} +// \def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}} + +defineMacro("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"); +defineMacro("\\ne", "\\neq"); +defineMacro("\u2260", "\\neq"); +defineMacro("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}" + "{\\mathrel{\\char`∉}}"); +defineMacro("\u2209", "\\notin"); // Unicode stacked relations + +defineMacro("\u2258", "\\html@mathml{" + "\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}" + "}{\\mathrel{\\char`\u2258}}"); +defineMacro("\u2259", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"); +defineMacro("\u225A", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}"); +defineMacro("\u225B", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}" + "{\\mathrel{\\char`\u225B}}"); +defineMacro("\u225D", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}" + "{\\mathrel{\\char`\u225D}}"); +defineMacro("\u225E", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}" + "{\\mathrel{\\char`\u225E}}"); +defineMacro("\u225F", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}"); // Misc Unicode + +defineMacro("\u27C2", "\\perp"); +defineMacro("\u203C", "\\mathclose{!\\mkern-0.8mu!}"); +defineMacro("\u220C", "\\notni"); +defineMacro("\u231C", "\\ulcorner"); +defineMacro("\u231D", "\\urcorner"); +defineMacro("\u231E", "\\llcorner"); +defineMacro("\u231F", "\\lrcorner"); +defineMacro("\u00A9", "\\copyright"); +defineMacro("\u00AE", "\\textregistered"); +defineMacro("\uFE0F", "\\textregistered"); ////////////////////////////////////////////////////////////////////// +// LaTeX_2ε +// \vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ +// \kern6\p@\hbox{.}\hbox{.}\hbox{.}}} +// We'll call \varvdots, which gets a glyph from symbols.js. +// The zero-width rule gets us an equivalent to the vertical 6pt kern. + +defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"); +defineMacro("\u22ee", "\\vdots"); ////////////////////////////////////////////////////////////////////// +// amsmath.sty +// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf +// Italic Greek capital letters. AMS defines these with \DeclareMathSymbol, +// but they are equivalent to \mathit{\Letter}. + +defineMacro("\\varGamma", "\\mathit{\\Gamma}"); +defineMacro("\\varDelta", "\\mathit{\\Delta}"); +defineMacro("\\varTheta", "\\mathit{\\Theta}"); +defineMacro("\\varLambda", "\\mathit{\\Lambda}"); +defineMacro("\\varXi", "\\mathit{\\Xi}"); +defineMacro("\\varPi", "\\mathit{\\Pi}"); +defineMacro("\\varSigma", "\\mathit{\\Sigma}"); +defineMacro("\\varUpsilon", "\\mathit{\\Upsilon}"); +defineMacro("\\varPhi", "\\mathit{\\Phi}"); +defineMacro("\\varPsi", "\\mathit{\\Psi}"); +defineMacro("\\varOmega", "\\mathit{\\Omega}"); //\newcommand{\substack}[1]{\subarray{c}#1\endsubarray} + +defineMacro("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"); // \renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript +// \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} + +defineMacro("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}" + "\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"); // \newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} + +defineMacro("\\boxed", "\\fbox{$\\displaystyle{#1}$}"); // \def\iff{\DOTSB\;\Longleftrightarrow\;} +// \def\implies{\DOTSB\;\Longrightarrow\;} +// \def\impliedby{\DOTSB\;\Longleftarrow\;} + +defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); +defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); +defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); // AMSMath's automatic \dots, based on \mdots@@ macro. + +const dotsByToken = { + ',': '\\dotsc', + '\\not': '\\dotsb', + // \keybin@ checks for the following: + '+': '\\dotsb', + '=': '\\dotsb', + '<': '\\dotsb', + '>': '\\dotsb', + '-': '\\dotsb', + '*': '\\dotsb', + ':': '\\dotsb', + // Symbols whose definition starts with \DOTSB: + '\\DOTSB': '\\dotsb', + '\\coprod': '\\dotsb', + '\\bigvee': '\\dotsb', + '\\bigwedge': '\\dotsb', + '\\biguplus': '\\dotsb', + '\\bigcap': '\\dotsb', + '\\bigcup': '\\dotsb', + '\\prod': '\\dotsb', + '\\sum': '\\dotsb', + '\\bigotimes': '\\dotsb', + '\\bigoplus': '\\dotsb', + '\\bigodot': '\\dotsb', + '\\bigsqcup': '\\dotsb', + '\\And': '\\dotsb', + '\\longrightarrow': '\\dotsb', + '\\Longrightarrow': '\\dotsb', + '\\longleftarrow': '\\dotsb', + '\\Longleftarrow': '\\dotsb', + '\\longleftrightarrow': '\\dotsb', + '\\Longleftrightarrow': '\\dotsb', + '\\mapsto': '\\dotsb', + '\\longmapsto': '\\dotsb', + '\\hookrightarrow': '\\dotsb', + '\\doteq': '\\dotsb', + // Symbols whose definition starts with \mathbin: + '\\mathbin': '\\dotsb', + // Symbols whose definition starts with \mathrel: + '\\mathrel': '\\dotsb', + '\\relbar': '\\dotsb', + '\\Relbar': '\\dotsb', + '\\xrightarrow': '\\dotsb', + '\\xleftarrow': '\\dotsb', + // Symbols whose definition starts with \DOTSI: + '\\DOTSI': '\\dotsi', + '\\int': '\\dotsi', + '\\oint': '\\dotsi', + '\\iint': '\\dotsi', + '\\iiint': '\\dotsi', + '\\iiiint': '\\dotsi', + '\\idotsint': '\\dotsi', + // Symbols whose definition starts with \DOTSX: + '\\DOTSX': '\\dotsx' +}; +defineMacro("\\dots", function (context) { + // TODO: If used in text mode, should expand to \textellipsis. + // However, in KaTeX, \textellipsis and \ldots behave the same + // (in text mode), and it's unlikely we'd see any of the math commands + // that affect the behavior of \dots when in text mode. So fine for now + // (until we support \ifmmode ... \else ... \fi). + let thedots = '\\dotso'; + const next = context.expandAfterFuture().text; + + if (next in dotsByToken) { + thedots = dotsByToken[next]; + } else if (next.substr(0, 4) === '\\not') { + thedots = '\\dotsb'; + } else if (next in symbols.math) { + if (utils.contains(['bin', 'rel'], symbols.math[next].group)) { + thedots = '\\dotsb'; + } + } + + return thedots; +}); +const spaceAfterDots = { + // \rightdelim@ checks for the following: + ')': true, + ']': true, + '\\rbrack': true, + '\\}': true, + '\\rbrace': true, + '\\rangle': true, + '\\rceil': true, + '\\rfloor': true, + '\\rgroup': true, + '\\rmoustache': true, + '\\right': true, + '\\bigr': true, + '\\biggr': true, + '\\Bigr': true, + '\\Biggr': true, + // \extra@ also tests for the following: + '$': true, + // \extrap@ checks for the following: + ';': true, + '.': true, + ',': true +}; +defineMacro("\\dotso", function (context) { + const next = context.future().text; + + if (next in spaceAfterDots) { + return "\\ldots\\,"; + } else { + return "\\ldots"; + } +}); +defineMacro("\\dotsc", function (context) { + const next = context.future().text; // \dotsc uses \extra@ but not \extrap@, instead specially checking for + // ';' and '.', but doesn't check for ','. + + if (next in spaceAfterDots && next !== ',') { + return "\\ldots\\,"; + } else { + return "\\ldots"; + } +}); +defineMacro("\\cdots", function (context) { + const next = context.future().text; + + if (next in spaceAfterDots) { + return "\\@cdots\\,"; + } else { + return "\\@cdots"; + } +}); +defineMacro("\\dotsb", "\\cdots"); +defineMacro("\\dotsm", "\\cdots"); +defineMacro("\\dotsi", "\\!\\cdots"); // amsmath doesn't actually define \dotsx, but \dots followed by a macro +// starting with \DOTSX implies \dotso, and then \extra@ detects this case +// and forces the added `\,`. + +defineMacro("\\dotsx", "\\ldots\\,"); // \let\DOTSI\relax +// \let\DOTSB\relax +// \let\DOTSX\relax + +defineMacro("\\DOTSI", "\\relax"); +defineMacro("\\DOTSB", "\\relax"); +defineMacro("\\DOTSX", "\\relax"); // Spacing, based on amsmath.sty's override of LaTeX defaults +// \DeclareRobustCommand{\tmspace}[3]{% +// \ifmmode\mskip#1#2\else\kern#1#3\fi\relax} + +defineMacro("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"); // \renewcommand{\,}{\tmspace+\thinmuskip{.1667em}} +// TODO: math mode should use \thinmuskip + +defineMacro("\\,", "\\tmspace+{3mu}{.1667em}"); // \let\thinspace\, + +defineMacro("\\thinspace", "\\,"); // \def\>{\mskip\medmuskip} +// \renewcommand{\:}{\tmspace+\medmuskip{.2222em}} +// TODO: \> and math mode of \: should use \medmuskip = 4mu plus 2mu minus 4mu + +defineMacro("\\>", "\\mskip{4mu}"); +defineMacro("\\:", "\\tmspace+{4mu}{.2222em}"); // \let\medspace\: + +defineMacro("\\medspace", "\\:"); // \renewcommand{\;}{\tmspace+\thickmuskip{.2777em}} +// TODO: math mode should use \thickmuskip = 5mu plus 5mu + +defineMacro("\\;", "\\tmspace+{5mu}{.2777em}"); // \let\thickspace\; + +defineMacro("\\thickspace", "\\;"); // \renewcommand{\!}{\tmspace-\thinmuskip{.1667em}} +// TODO: math mode should use \thinmuskip + +defineMacro("\\!", "\\tmspace-{3mu}{.1667em}"); // \let\negthinspace\! + +defineMacro("\\negthinspace", "\\!"); // \newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}} +// TODO: math mode should use \medmuskip + +defineMacro("\\negmedspace", "\\tmspace-{4mu}{.2222em}"); // \newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}} +// TODO: math mode should use \thickmuskip + +defineMacro("\\negthickspace", "\\tmspace-{5mu}{.277em}"); // \def\enspace{\kern.5em } + +defineMacro("\\enspace", "\\kern.5em "); // \def\enskip{\hskip.5em\relax} + +defineMacro("\\enskip", "\\hskip.5em\\relax"); // \def\quad{\hskip1em\relax} + +defineMacro("\\quad", "\\hskip1em\\relax"); // \def\qquad{\hskip2em\relax} + +defineMacro("\\qquad", "\\hskip2em\\relax"); // \tag@in@display form of \tag + +defineMacro("\\tag", "\\@ifstar\\tag@literal\\tag@paren"); +defineMacro("\\tag@paren", "\\tag@literal{({#1})}"); +defineMacro("\\tag@literal", context => { + if (context.macros.get("\\df@tag")) { + throw new ParseError("Multiple \\tag"); + } + + return "\\gdef\\df@tag{\\text{#1}}"; +}); // \renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin +// {\operator@font mod}\penalty900 +// \mkern5mu\nonscript\mskip-\medmuskip} +// \newcommand{\pod}[1]{\allowbreak +// \if@display\mkern18mu\else\mkern8mu\fi(#1)} +// \renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}} +// \newcommand{\mod}[1]{\allowbreak\if@display\mkern18mu +// \else\mkern12mu\fi{\operator@font mod}\,\,#1} +// TODO: math mode should use \medmuskip = 4mu plus 2mu minus 4mu + +defineMacro("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}" + "\\mathbin{\\rm mod}" + "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"); +defineMacro("\\pod", "\\allowbreak" + "\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"); +defineMacro("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"); +defineMacro("\\mod", "\\allowbreak" + "\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}" + "{\\rm mod}\\,\\,#1"); // \pmb -- A simulation of bold. +// The version in ambsy.sty works by typesetting three copies of the argument +// with small offsets. We use two copies. We omit the vertical offset because +// of rendering problems that makeVList encounters in Safari. + +defineMacro("\\pmb", "\\html@mathml{" + "\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}" + "{\\mathbf{#1}}"); ////////////////////////////////////////////////////////////////////// +// LaTeX source2e +// \\ defaults to \newline, but changes to \cr within array environment + +defineMacro("\\\\", "\\newline"); // \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@} +// TODO: Doesn't normally work in math mode because \@ fails. KaTeX doesn't +// support \@ yet, so that's omitted, and we add \text so that the result +// doesn't look funny in math mode. + +defineMacro("\\TeX", "\\textrm{\\html@mathml{" + "T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX" + "}{TeX}}"); // \DeclareRobustCommand{\LaTeX}{L\kern-.36em% +// {\sbox\z@ T% +// \vbox to\ht\z@{\hbox{\check@mathfonts +// \fontsize\sf@size\z@ +// \math@fontsfalse\selectfont +// A}% +// \vss}% +// }% +// \kern-.15em% +// \TeX} +// This code aligns the top of the A with the T (from the perspective of TeX's +// boxes, though visually the A appears to extend above slightly). +// We compute the corresponding \raisebox when A is rendered in \normalsize +// \scriptstyle, which has a scale factor of 0.7 (see Options.js). + +const latexRaiseA = metricMap['Main-Regular']["T".charCodeAt(0)][1] - 0.7 * metricMap['Main-Regular']["A".charCodeAt(0)][1] + "em"; +defineMacro("\\LaTeX", "\\textrm{\\html@mathml{" + `L\\kern-.36em\\raisebox{${latexRaiseA}}{\\scriptstyle A}` + "\\kern-.15em\\TeX}{LaTeX}}"); // New KaTeX logo based on tweaking LaTeX logo + +defineMacro("\\KaTeX", "\\textrm{\\html@mathml{" + `K\\kern-.17em\\raisebox{${latexRaiseA}}{\\scriptstyle A}` + "\\kern-.15em\\TeX}{KaTeX}}"); // \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace} +// \def\@hspace#1{\hskip #1\relax} +// \def\@hspacer#1{\vrule \@width\z@\nobreak +// \hskip #1\hskip \z@skip} + +defineMacro("\\hspace", "\\@ifstar\\@hspacer\\@hspace"); +defineMacro("\\@hspace", "\\hskip #1\\relax"); +defineMacro("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"); ////////////////////////////////////////////////////////////////////// +// mathtools.sty +//\providecommand\ordinarycolon{:} + +defineMacro("\\ordinarycolon", ":"); //\def\vcentcolon{\mathrel{\mathop\ordinarycolon}} +//TODO(edemaine): Not yet centered. Fix via \raisebox or #726 + +defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon} + +defineMacro("\\dblcolon", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" + "{\\mathop{\\char\"2237}}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=} + +defineMacro("\\coloneqq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2254}}"); // ≔ +// \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=} + +defineMacro("\\Coloneqq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2237\\char\"3d}}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}} + +defineMacro("\\coloneq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"3a\\char\"2212}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}} + +defineMacro("\\Coloneq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"2237\\char\"2212}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon} + +defineMacro("\\eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2255}}"); // ≕ +// \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon} + +defineMacro("\\Eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"3d\\char\"2237}}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon} + +defineMacro("\\eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2239}}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon} + +defineMacro("\\Eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"2212\\char\"2237}}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx} + +defineMacro("\\colonapprox", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"3a\\char\"2248}}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx} + +defineMacro("\\Colonapprox", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"2237\\char\"2248}}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim} + +defineMacro("\\colonsim", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"3a\\char\"223c}}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim} + +defineMacro("\\Colonsim", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"2237\\char\"223c}}"); // Some Unicode characters are implemented with macros to mathtools functions. + +defineMacro("\u2237", "\\dblcolon"); // :: + +defineMacro("\u2239", "\\eqcolon"); // -: + +defineMacro("\u2254", "\\coloneqq"); // := + +defineMacro("\u2255", "\\eqqcolon"); // =: + +defineMacro("\u2A74", "\\Coloneqq"); // ::= +////////////////////////////////////////////////////////////////////// +// colonequals.sty +// Alternate names for mathtools's macros: + +defineMacro("\\ratio", "\\vcentcolon"); +defineMacro("\\coloncolon", "\\dblcolon"); +defineMacro("\\colonequals", "\\coloneqq"); +defineMacro("\\coloncolonequals", "\\Coloneqq"); +defineMacro("\\equalscolon", "\\eqqcolon"); +defineMacro("\\equalscoloncolon", "\\Eqqcolon"); +defineMacro("\\colonminus", "\\coloneq"); +defineMacro("\\coloncolonminus", "\\Coloneq"); +defineMacro("\\minuscolon", "\\eqcolon"); +defineMacro("\\minuscoloncolon", "\\Eqcolon"); // \colonapprox name is same in mathtools and colonequals. + +defineMacro("\\coloncolonapprox", "\\Colonapprox"); // \colonsim name is same in mathtools and colonequals. + +defineMacro("\\coloncolonsim", "\\Colonsim"); // Additional macros, implemented by analogy with mathtools definitions: + +defineMacro("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +defineMacro("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"); +defineMacro("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // Present in newtxmath, pxfonts and txfonts + +defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}"); +defineMacro("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"); +defineMacro("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"); ////////////////////////////////////////////////////////////////////// +// MathML alternates for KaTeX glyphs in the Unicode private area + +defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}"); +defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}"); +defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}"); +defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}"); +defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}"); +defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}"); +defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}"); +defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}"); +defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}"); +defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}"); +defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}"); +defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}"); +defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}"); +defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); ////////////////////////////////////////////////////////////////////// +// stmaryrd and semantic +// The stmaryrd and semantic packages render the next four items by calling a +// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros. + +defineMacro("\\llbracket", "\\html@mathml{" + "\\mathopen{[\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u27e6}}"); +defineMacro("\\rrbracket", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu]}}" + "{\\mathclose{\\char`\u27e7}}"); +defineMacro("\u27e6", "\\llbracket"); // blackboard bold [ + +defineMacro("\u27e7", "\\rrbracket"); // blackboard bold ] + +defineMacro("\\lBrace", "\\html@mathml{" + "\\mathopen{\\{\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u2983}}"); +defineMacro("\\rBrace", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu\\}}}" + "{\\mathclose{\\char`\u2984}}"); +defineMacro("\u2983", "\\lBrace"); // blackboard bold { + +defineMacro("\u2984", "\\rBrace"); // blackboard bold } +// TODO: Create variable sized versions of the last two items. I believe that +// will require new font glyphs. +////////////////////////////////////////////////////////////////////// +// texvc.sty +// The texvc package contains macros available in mediawiki pages. +// We omit the functions deprecated at +// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax +// We also omit texvc's \O, which conflicts with \text{\O} + +defineMacro("\\darr", "\\downarrow"); +defineMacro("\\dArr", "\\Downarrow"); +defineMacro("\\Darr", "\\Downarrow"); +defineMacro("\\lang", "\\langle"); +defineMacro("\\rang", "\\rangle"); +defineMacro("\\uarr", "\\uparrow"); +defineMacro("\\uArr", "\\Uparrow"); +defineMacro("\\Uarr", "\\Uparrow"); +defineMacro("\\N", "\\mathbb{N}"); +defineMacro("\\R", "\\mathbb{R}"); +defineMacro("\\Z", "\\mathbb{Z}"); +defineMacro("\\alef", "\\aleph"); +defineMacro("\\alefsym", "\\aleph"); +defineMacro("\\Alpha", "\\mathrm{A}"); +defineMacro("\\Beta", "\\mathrm{B}"); +defineMacro("\\bull", "\\bullet"); +defineMacro("\\Chi", "\\mathrm{X}"); +defineMacro("\\clubs", "\\clubsuit"); +defineMacro("\\cnums", "\\mathbb{C}"); +defineMacro("\\Complex", "\\mathbb{C}"); +defineMacro("\\Dagger", "\\ddagger"); +defineMacro("\\diamonds", "\\diamondsuit"); +defineMacro("\\empty", "\\emptyset"); +defineMacro("\\Epsilon", "\\mathrm{E}"); +defineMacro("\\Eta", "\\mathrm{H}"); +defineMacro("\\exist", "\\exists"); +defineMacro("\\harr", "\\leftrightarrow"); +defineMacro("\\hArr", "\\Leftrightarrow"); +defineMacro("\\Harr", "\\Leftrightarrow"); +defineMacro("\\hearts", "\\heartsuit"); +defineMacro("\\image", "\\Im"); +defineMacro("\\infin", "\\infty"); +defineMacro("\\Iota", "\\mathrm{I}"); +defineMacro("\\isin", "\\in"); +defineMacro("\\Kappa", "\\mathrm{K}"); +defineMacro("\\larr", "\\leftarrow"); +defineMacro("\\lArr", "\\Leftarrow"); +defineMacro("\\Larr", "\\Leftarrow"); +defineMacro("\\lrarr", "\\leftrightarrow"); +defineMacro("\\lrArr", "\\Leftrightarrow"); +defineMacro("\\Lrarr", "\\Leftrightarrow"); +defineMacro("\\Mu", "\\mathrm{M}"); +defineMacro("\\natnums", "\\mathbb{N}"); +defineMacro("\\Nu", "\\mathrm{N}"); +defineMacro("\\Omicron", "\\mathrm{O}"); +defineMacro("\\plusmn", "\\pm"); +defineMacro("\\rarr", "\\rightarrow"); +defineMacro("\\rArr", "\\Rightarrow"); +defineMacro("\\Rarr", "\\Rightarrow"); +defineMacro("\\real", "\\Re"); +defineMacro("\\reals", "\\mathbb{R}"); +defineMacro("\\Reals", "\\mathbb{R}"); +defineMacro("\\Rho", "\\mathrm{P}"); +defineMacro("\\sdot", "\\cdot"); +defineMacro("\\sect", "\\S"); +defineMacro("\\spades", "\\spadesuit"); +defineMacro("\\sub", "\\subset"); +defineMacro("\\sube", "\\subseteq"); +defineMacro("\\supe", "\\supseteq"); +defineMacro("\\Tau", "\\mathrm{T}"); +defineMacro("\\thetasym", "\\vartheta"); // TODO: defineMacro("\\varcoppa", "\\\mbox{\\coppa}"); + +defineMacro("\\weierp", "\\wp"); +defineMacro("\\Zeta", "\\mathrm{Z}"); ////////////////////////////////////////////////////////////////////// +// statmath.sty +// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf + +defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"); +defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"); +defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package + +defineMacro("\\blue", "\\textcolor{##6495ed}{#1}"); +defineMacro("\\orange", "\\textcolor{##ffa500}{#1}"); +defineMacro("\\pink", "\\textcolor{##ff00af}{#1}"); +defineMacro("\\red", "\\textcolor{##df0030}{#1}"); +defineMacro("\\green", "\\textcolor{##28ae7b}{#1}"); +defineMacro("\\gray", "\\textcolor{gray}{#1}"); +defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}"); +defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}"); +defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}"); +defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}"); +defineMacro("\\blueD", "\\textcolor{##11accd}{#1}"); +defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}"); +defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}"); +defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}"); +defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}"); +defineMacro("\\tealD", "\\textcolor{##01a995}{#1}"); +defineMacro("\\tealE", "\\textcolor{##208170}{#1}"); +defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}"); +defineMacro("\\greenB", "\\textcolor{##8af281}{#1}"); +defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}"); +defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}"); +defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}"); +defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}"); +defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}"); +defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}"); +defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}"); +defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}"); +defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}"); +defineMacro("\\redB", "\\textcolor{##ff8482}{#1}"); +defineMacro("\\redC", "\\textcolor{##f9685d}{#1}"); +defineMacro("\\redD", "\\textcolor{##e84d39}{#1}"); +defineMacro("\\redE", "\\textcolor{##bc2612}{#1}"); +defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}"); +defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}"); +defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}"); +defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}"); +defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}"); +defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}"); +defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}"); +defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}"); +defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}"); +defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}"); +defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}"); +defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}"); +defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}"); +defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}"); +defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}"); +defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}"); +defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}"); +defineMacro("\\grayE", "\\textcolor{##babec2}{#1}"); +defineMacro("\\grayF", "\\textcolor{##888d93}{#1}"); +defineMacro("\\grayG", "\\textcolor{##626569}{#1}"); +defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}"); +defineMacro("\\grayI", "\\textcolor{##21242c}{#1}"); +defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}"); +defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}"); + +/** + * This file contains the “gullet” where macros are expanded + * until only non-macro tokens remain. + */ +// List of commands that act like macros but aren't defined as a macro, +// function, or symbol. Used in `isDefined`. +const implicitCommands = { + "\\relax": true, + // MacroExpander.js + "^": true, + // Parser.js + "_": true, + // Parser.js + "\\limits": true, + // Parser.js + "\\nolimits": true // Parser.js + +}; +class MacroExpander { + constructor(input, settings, mode) { + this.settings = void 0; + this.expansionCount = void 0; + this.lexer = void 0; + this.macros = void 0; + this.stack = void 0; + this.mode = void 0; + this.settings = settings; + this.expansionCount = 0; + this.feed(input); // Make new global namespace + + this.macros = new Namespace(builtinMacros, settings.macros); + this.mode = mode; + this.stack = []; // contains tokens in REVERSE order + } + /** + * Feed a new input string to the same MacroExpander + * (with existing macros etc.). + */ + + + feed(input) { + this.lexer = new Lexer(input, this.settings); + } + /** + * Switches between "text" and "math" modes. + */ + + + switchMode(newMode) { + this.mode = newMode; + } + /** + * Start a new group nesting within all namespaces. + */ + + + beginGroup() { + this.macros.beginGroup(); + } + /** + * End current group nesting within all namespaces. + */ + + + endGroup() { + this.macros.endGroup(); + } + /** + * Returns the topmost token on the stack, without expanding it. + * Similar in behavior to TeX's `\futurelet`. + */ + + + future() { + if (this.stack.length === 0) { + this.pushToken(this.lexer.lex()); + } + + return this.stack[this.stack.length - 1]; + } + /** + * Remove and return the next unexpanded token. + */ + + + popToken() { + this.future(); // ensure non-empty stack + + return this.stack.pop(); + } + /** + * Add a given token to the token stack. In particular, this get be used + * to put back a token returned from one of the other methods. + */ + + + pushToken(token) { + this.stack.push(token); + } + /** + * Append an array of tokens to the token stack. + */ + + + pushTokens(tokens) { + this.stack.push(...tokens); + } + /** + * Consume all following space tokens, without expansion. + */ + + + consumeSpaces() { + for (;;) { + const token = this.future(); + + if (token.text === " ") { + this.stack.pop(); + } else { + break; + } + } + } + /** + * Consume the specified number of arguments from the token stream, + * and return the resulting array of arguments. + */ + + + consumeArgs(numArgs) { + const args = []; // obtain arguments, either single token or balanced {…} group + + for (let i = 0; i < numArgs; ++i) { + this.consumeSpaces(); // ignore spaces before each argument + + const startOfArg = this.popToken(); + + if (startOfArg.text === "{") { + const arg = []; + let depth = 1; + + while (depth !== 0) { + const tok = this.popToken(); + arg.push(tok); + + if (tok.text === "{") { + ++depth; + } else if (tok.text === "}") { + --depth; + } else if (tok.text === "EOF") { + throw new ParseError("End of input in macro argument", startOfArg); + } + } + + arg.pop(); // remove last } + + arg.reverse(); // like above, to fit in with stack order + + args[i] = arg; + } else if (startOfArg.text === "EOF") { + throw new ParseError("End of input expecting macro argument"); + } else { + args[i] = [startOfArg]; + } + } + + return args; + } + /** + * Expand the next token only once if possible. + * + * If the token is expanded, the resulting tokens will be pushed onto + * the stack in reverse order and will be returned as an array, + * also in reverse order. + * + * If not, the next token will be returned without removing it + * from the stack. This case can be detected by a `Token` return value + * instead of an `Array` return value. + * + * In either case, the next token will be on the top of the stack, + * or the stack will be empty. + * + * Used to implement `expandAfterFuture` and `expandNextToken`. + * + * At the moment, macro expansion doesn't handle delimited macros, + * i.e. things like those defined by \def\foo#1\end{…}. + * See the TeX book page 202ff. for details on how those should behave. + */ + + + expandOnce() { + const topToken = this.popToken(); + const name = topToken.text; + + const expansion = this._getExpansion(name); + + if (expansion == null) { + // mainly checking for undefined here + // Fully expanded + this.pushToken(topToken); + return topToken; + } + + this.expansionCount++; + + if (this.expansionCount > this.settings.maxExpand) { + throw new ParseError("Too many expansions: infinite loop or " + "need to increase maxExpand setting"); + } + + let tokens = expansion.tokens; + + if (expansion.numArgs) { + const args = this.consumeArgs(expansion.numArgs); // paste arguments in place of the placeholders + + tokens = tokens.slice(); // make a shallow copy + + for (let i = tokens.length - 1; i >= 0; --i) { + let tok = tokens[i]; + + if (tok.text === "#") { + if (i === 0) { + throw new ParseError("Incomplete placeholder at end of macro body", tok); + } + + tok = tokens[--i]; // next token on stack + + if (tok.text === "#") { + // ## → # + tokens.splice(i + 1, 1); // drop first # + } else if (/^[1-9]$/.test(tok.text)) { + // replace the placeholder with the indicated argument + tokens.splice(i, 2, ...args[+tok.text - 1]); + } else { + throw new ParseError("Not a valid argument number", tok); + } + } + } + } // Concatenate expansion onto top of stack. + + + this.pushTokens(tokens); + return tokens; + } + /** + * Expand the next token only once (if possible), and return the resulting + * top token on the stack (without removing anything from the stack). + * Similar in behavior to TeX's `\expandafter\futurelet`. + * Equivalent to expandOnce() followed by future(). + */ + + + expandAfterFuture() { + this.expandOnce(); + return this.future(); + } + /** + * Recursively expand first token, then return first non-expandable token. + */ + + + expandNextToken() { + for (;;) { + const expanded = this.expandOnce(); // expandOnce returns Token if and only if it's fully expanded. + + if (expanded instanceof Token) { + // \relax stops the expansion, but shouldn't get returned (a + // null return value couldn't get implemented as a function). + if (expanded.text === "\\relax") { + this.stack.pop(); + } else { + return this.stack.pop(); // === expanded + } + } + } // Flow unable to figure out that this pathway is impossible. + // https://github.com/facebook/flow/issues/4808 + + + throw new Error(); // eslint-disable-line no-unreachable + } + /** + * Fully expand the given macro name and return the resulting list of + * tokens, or return `undefined` if no such macro is defined. + */ + + + expandMacro(name) { + if (!this.macros.get(name)) { + return undefined; + } + + const output = []; + const oldStackLength = this.stack.length; + this.pushToken(new Token(name)); + + while (this.stack.length > oldStackLength) { + const expanded = this.expandOnce(); // expandOnce returns Token if and only if it's fully expanded. + + if (expanded instanceof Token) { + output.push(this.stack.pop()); + } + } + + return output; + } + /** + * Fully expand the given macro name and return the result as a string, + * or return `undefined` if no such macro is defined. + */ + + + expandMacroAsText(name) { + const tokens = this.expandMacro(name); + + if (tokens) { + return tokens.map(token => token.text).join(""); + } else { + return tokens; + } + } + /** + * Returns the expanded macro as a reversed array of tokens and a macro + * argument count. Or returns `null` if no such macro. + */ + + + _getExpansion(name) { + const definition = this.macros.get(name); + + if (definition == null) { + // mainly checking for undefined here + return definition; + } + + const expansion = typeof definition === "function" ? definition(this) : definition; + + if (typeof expansion === "string") { + let numArgs = 0; + + if (expansion.indexOf("#") !== -1) { + const stripped = expansion.replace(/##/g, ""); + + while (stripped.indexOf("#" + (numArgs + 1)) !== -1) { + ++numArgs; + } + } + + const bodyLexer = new Lexer(expansion, this.settings); + const tokens = []; + let tok = bodyLexer.lex(); + + while (tok.text !== "EOF") { + tokens.push(tok); + tok = bodyLexer.lex(); + } + + tokens.reverse(); // to fit in with stack using push and pop + + const expanded = { + tokens, + numArgs + }; + return expanded; + } + + return expansion; + } + /** + * Determine whether a command is currently "defined" (has some + * functionality), meaning that it's a macro (in the current group), + * a function, a symbol, or one of the special commands listed in + * `implicitCommands`. + */ + + + isDefined(name) { + return this.macros.has(name) || functions.hasOwnProperty(name) || symbols.math.hasOwnProperty(name) || symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name); + } + +} + +// Mapping of Unicode accent characters to their LaTeX equivalent in text and +// math mode (when they exist). +var unicodeAccents = { + '\u0301': { + text: "\\'", + math: '\\acute' + }, + '\u0300': { + text: '\\`', + math: '\\grave' + }, + '\u0308': { + text: '\\"', + math: '\\ddot' + }, + '\u0303': { + text: '\\~', + math: '\\tilde' + }, + '\u0304': { + text: '\\=', + math: '\\bar' + }, + '\u0306': { + text: '\\u', + math: '\\breve' + }, + '\u030c': { + text: '\\v', + math: '\\check' + }, + '\u0302': { + text: '\\^', + math: '\\hat' + }, + '\u0307': { + text: '\\.', + math: '\\dot' + }, + '\u030a': { + text: '\\r', + math: '\\mathring' + }, + '\u030b': { + text: '\\H' + } +}; + +// This file is GENERATED by unicodeMake.js. DO NOT MODIFY. +var unicodeSymbols = { + "\u00e1": "\u0061\u0301", + // á = \'{a} + "\u00e0": "\u0061\u0300", + // à = \`{a} + "\u00e4": "\u0061\u0308", + // ä = \"{a} + "\u01df": "\u0061\u0308\u0304", + // ǟ = \"\={a} + "\u00e3": "\u0061\u0303", + // ã = \~{a} + "\u0101": "\u0061\u0304", + // ā = \={a} + "\u0103": "\u0061\u0306", + // ă = \u{a} + "\u1eaf": "\u0061\u0306\u0301", + // ắ = \u\'{a} + "\u1eb1": "\u0061\u0306\u0300", + // ằ = \u\`{a} + "\u1eb5": "\u0061\u0306\u0303", + // ẵ = \u\~{a} + "\u01ce": "\u0061\u030c", + // ǎ = \v{a} + "\u00e2": "\u0061\u0302", + // â = \^{a} + "\u1ea5": "\u0061\u0302\u0301", + // ấ = \^\'{a} + "\u1ea7": "\u0061\u0302\u0300", + // ầ = \^\`{a} + "\u1eab": "\u0061\u0302\u0303", + // ẫ = \^\~{a} + "\u0227": "\u0061\u0307", + // ȧ = \.{a} + "\u01e1": "\u0061\u0307\u0304", + // ǡ = \.\={a} + "\u00e5": "\u0061\u030a", + // å = \r{a} + "\u01fb": "\u0061\u030a\u0301", + // ǻ = \r\'{a} + "\u1e03": "\u0062\u0307", + // ḃ = \.{b} + "\u0107": "\u0063\u0301", + // ć = \'{c} + "\u010d": "\u0063\u030c", + // č = \v{c} + "\u0109": "\u0063\u0302", + // ĉ = \^{c} + "\u010b": "\u0063\u0307", + // ċ = \.{c} + "\u010f": "\u0064\u030c", + // ď = \v{d} + "\u1e0b": "\u0064\u0307", + // ḋ = \.{d} + "\u00e9": "\u0065\u0301", + // é = \'{e} + "\u00e8": "\u0065\u0300", + // è = \`{e} + "\u00eb": "\u0065\u0308", + // ë = \"{e} + "\u1ebd": "\u0065\u0303", + // ẽ = \~{e} + "\u0113": "\u0065\u0304", + // ē = \={e} + "\u1e17": "\u0065\u0304\u0301", + // ḗ = \=\'{e} + "\u1e15": "\u0065\u0304\u0300", + // ḕ = \=\`{e} + "\u0115": "\u0065\u0306", + // ĕ = \u{e} + "\u011b": "\u0065\u030c", + // ě = \v{e} + "\u00ea": "\u0065\u0302", + // ê = \^{e} + "\u1ebf": "\u0065\u0302\u0301", + // ế = \^\'{e} + "\u1ec1": "\u0065\u0302\u0300", + // ề = \^\`{e} + "\u1ec5": "\u0065\u0302\u0303", + // ễ = \^\~{e} + "\u0117": "\u0065\u0307", + // ė = \.{e} + "\u1e1f": "\u0066\u0307", + // ḟ = \.{f} + "\u01f5": "\u0067\u0301", + // ǵ = \'{g} + "\u1e21": "\u0067\u0304", + // ḡ = \={g} + "\u011f": "\u0067\u0306", + // ğ = \u{g} + "\u01e7": "\u0067\u030c", + // ǧ = \v{g} + "\u011d": "\u0067\u0302", + // ĝ = \^{g} + "\u0121": "\u0067\u0307", + // ġ = \.{g} + "\u1e27": "\u0068\u0308", + // ḧ = \"{h} + "\u021f": "\u0068\u030c", + // ȟ = \v{h} + "\u0125": "\u0068\u0302", + // ĥ = \^{h} + "\u1e23": "\u0068\u0307", + // ḣ = \.{h} + "\u00ed": "\u0069\u0301", + // í = \'{i} + "\u00ec": "\u0069\u0300", + // ì = \`{i} + "\u00ef": "\u0069\u0308", + // ï = \"{i} + "\u1e2f": "\u0069\u0308\u0301", + // ḯ = \"\'{i} + "\u0129": "\u0069\u0303", + // ĩ = \~{i} + "\u012b": "\u0069\u0304", + // ī = \={i} + "\u012d": "\u0069\u0306", + // ĭ = \u{i} + "\u01d0": "\u0069\u030c", + // ǐ = \v{i} + "\u00ee": "\u0069\u0302", + // î = \^{i} + "\u01f0": "\u006a\u030c", + // ǰ = \v{j} + "\u0135": "\u006a\u0302", + // ĵ = \^{j} + "\u1e31": "\u006b\u0301", + // ḱ = \'{k} + "\u01e9": "\u006b\u030c", + // ǩ = \v{k} + "\u013a": "\u006c\u0301", + // ĺ = \'{l} + "\u013e": "\u006c\u030c", + // ľ = \v{l} + "\u1e3f": "\u006d\u0301", + // ḿ = \'{m} + "\u1e41": "\u006d\u0307", + // ṁ = \.{m} + "\u0144": "\u006e\u0301", + // ń = \'{n} + "\u01f9": "\u006e\u0300", + // ǹ = \`{n} + "\u00f1": "\u006e\u0303", + // ñ = \~{n} + "\u0148": "\u006e\u030c", + // ň = \v{n} + "\u1e45": "\u006e\u0307", + // ṅ = \.{n} + "\u00f3": "\u006f\u0301", + // ó = \'{o} + "\u00f2": "\u006f\u0300", + // ò = \`{o} + "\u00f6": "\u006f\u0308", + // ö = \"{o} + "\u022b": "\u006f\u0308\u0304", + // ȫ = \"\={o} + "\u00f5": "\u006f\u0303", + // õ = \~{o} + "\u1e4d": "\u006f\u0303\u0301", + // ṍ = \~\'{o} + "\u1e4f": "\u006f\u0303\u0308", + // ṏ = \~\"{o} + "\u022d": "\u006f\u0303\u0304", + // ȭ = \~\={o} + "\u014d": "\u006f\u0304", + // ō = \={o} + "\u1e53": "\u006f\u0304\u0301", + // ṓ = \=\'{o} + "\u1e51": "\u006f\u0304\u0300", + // ṑ = \=\`{o} + "\u014f": "\u006f\u0306", + // ŏ = \u{o} + "\u01d2": "\u006f\u030c", + // ǒ = \v{o} + "\u00f4": "\u006f\u0302", + // ô = \^{o} + "\u1ed1": "\u006f\u0302\u0301", + // ố = \^\'{o} + "\u1ed3": "\u006f\u0302\u0300", + // ồ = \^\`{o} + "\u1ed7": "\u006f\u0302\u0303", + // ỗ = \^\~{o} + "\u022f": "\u006f\u0307", + // ȯ = \.{o} + "\u0231": "\u006f\u0307\u0304", + // ȱ = \.\={o} + "\u0151": "\u006f\u030b", + // ő = \H{o} + "\u1e55": "\u0070\u0301", + // ṕ = \'{p} + "\u1e57": "\u0070\u0307", + // ṗ = \.{p} + "\u0155": "\u0072\u0301", + // ŕ = \'{r} + "\u0159": "\u0072\u030c", + // ř = \v{r} + "\u1e59": "\u0072\u0307", + // ṙ = \.{r} + "\u015b": "\u0073\u0301", + // ś = \'{s} + "\u1e65": "\u0073\u0301\u0307", + // ṥ = \'\.{s} + "\u0161": "\u0073\u030c", + // š = \v{s} + "\u1e67": "\u0073\u030c\u0307", + // ṧ = \v\.{s} + "\u015d": "\u0073\u0302", + // ŝ = \^{s} + "\u1e61": "\u0073\u0307", + // ṡ = \.{s} + "\u1e97": "\u0074\u0308", + // ẗ = \"{t} + "\u0165": "\u0074\u030c", + // ť = \v{t} + "\u1e6b": "\u0074\u0307", + // ṫ = \.{t} + "\u00fa": "\u0075\u0301", + // ú = \'{u} + "\u00f9": "\u0075\u0300", + // ù = \`{u} + "\u00fc": "\u0075\u0308", + // ü = \"{u} + "\u01d8": "\u0075\u0308\u0301", + // ǘ = \"\'{u} + "\u01dc": "\u0075\u0308\u0300", + // ǜ = \"\`{u} + "\u01d6": "\u0075\u0308\u0304", + // ǖ = \"\={u} + "\u01da": "\u0075\u0308\u030c", + // ǚ = \"\v{u} + "\u0169": "\u0075\u0303", + // ũ = \~{u} + "\u1e79": "\u0075\u0303\u0301", + // ṹ = \~\'{u} + "\u016b": "\u0075\u0304", + // ū = \={u} + "\u1e7b": "\u0075\u0304\u0308", + // ṻ = \=\"{u} + "\u016d": "\u0075\u0306", + // ŭ = \u{u} + "\u01d4": "\u0075\u030c", + // ǔ = \v{u} + "\u00fb": "\u0075\u0302", + // û = \^{u} + "\u016f": "\u0075\u030a", + // ů = \r{u} + "\u0171": "\u0075\u030b", + // ű = \H{u} + "\u1e7d": "\u0076\u0303", + // ṽ = \~{v} + "\u1e83": "\u0077\u0301", + // ẃ = \'{w} + "\u1e81": "\u0077\u0300", + // ẁ = \`{w} + "\u1e85": "\u0077\u0308", + // ẅ = \"{w} + "\u0175": "\u0077\u0302", + // ŵ = \^{w} + "\u1e87": "\u0077\u0307", + // ẇ = \.{w} + "\u1e98": "\u0077\u030a", + // ẘ = \r{w} + "\u1e8d": "\u0078\u0308", + // ẍ = \"{x} + "\u1e8b": "\u0078\u0307", + // ẋ = \.{x} + "\u00fd": "\u0079\u0301", + // ý = \'{y} + "\u1ef3": "\u0079\u0300", + // ỳ = \`{y} + "\u00ff": "\u0079\u0308", + // ÿ = \"{y} + "\u1ef9": "\u0079\u0303", + // ỹ = \~{y} + "\u0233": "\u0079\u0304", + // ȳ = \={y} + "\u0177": "\u0079\u0302", + // ŷ = \^{y} + "\u1e8f": "\u0079\u0307", + // ẏ = \.{y} + "\u1e99": "\u0079\u030a", + // ẙ = \r{y} + "\u017a": "\u007a\u0301", + // ź = \'{z} + "\u017e": "\u007a\u030c", + // ž = \v{z} + "\u1e91": "\u007a\u0302", + // ẑ = \^{z} + "\u017c": "\u007a\u0307", + // ż = \.{z} + "\u00c1": "\u0041\u0301", + // Á = \'{A} + "\u00c0": "\u0041\u0300", + // À = \`{A} + "\u00c4": "\u0041\u0308", + // Ä = \"{A} + "\u01de": "\u0041\u0308\u0304", + // Ǟ = \"\={A} + "\u00c3": "\u0041\u0303", + // à = \~{A} + "\u0100": "\u0041\u0304", + // Ā = \={A} + "\u0102": "\u0041\u0306", + // Ă = \u{A} + "\u1eae": "\u0041\u0306\u0301", + // Ắ = \u\'{A} + "\u1eb0": "\u0041\u0306\u0300", + // Ằ = \u\`{A} + "\u1eb4": "\u0041\u0306\u0303", + // Ẵ = \u\~{A} + "\u01cd": "\u0041\u030c", + // Ǎ = \v{A} + "\u00c2": "\u0041\u0302", + //  = \^{A} + "\u1ea4": "\u0041\u0302\u0301", + // Ấ = \^\'{A} + "\u1ea6": "\u0041\u0302\u0300", + // Ầ = \^\`{A} + "\u1eaa": "\u0041\u0302\u0303", + // Ẫ = \^\~{A} + "\u0226": "\u0041\u0307", + // Ȧ = \.{A} + "\u01e0": "\u0041\u0307\u0304", + // Ǡ = \.\={A} + "\u00c5": "\u0041\u030a", + // Å = \r{A} + "\u01fa": "\u0041\u030a\u0301", + // Ǻ = \r\'{A} + "\u1e02": "\u0042\u0307", + // Ḃ = \.{B} + "\u0106": "\u0043\u0301", + // Ć = \'{C} + "\u010c": "\u0043\u030c", + // Č = \v{C} + "\u0108": "\u0043\u0302", + // Ĉ = \^{C} + "\u010a": "\u0043\u0307", + // Ċ = \.{C} + "\u010e": "\u0044\u030c", + // Ď = \v{D} + "\u1e0a": "\u0044\u0307", + // Ḋ = \.{D} + "\u00c9": "\u0045\u0301", + // É = \'{E} + "\u00c8": "\u0045\u0300", + // È = \`{E} + "\u00cb": "\u0045\u0308", + // Ë = \"{E} + "\u1ebc": "\u0045\u0303", + // Ẽ = \~{E} + "\u0112": "\u0045\u0304", + // Ē = \={E} + "\u1e16": "\u0045\u0304\u0301", + // Ḗ = \=\'{E} + "\u1e14": "\u0045\u0304\u0300", + // Ḕ = \=\`{E} + "\u0114": "\u0045\u0306", + // Ĕ = \u{E} + "\u011a": "\u0045\u030c", + // Ě = \v{E} + "\u00ca": "\u0045\u0302", + // Ê = \^{E} + "\u1ebe": "\u0045\u0302\u0301", + // Ế = \^\'{E} + "\u1ec0": "\u0045\u0302\u0300", + // Ề = \^\`{E} + "\u1ec4": "\u0045\u0302\u0303", + // Ễ = \^\~{E} + "\u0116": "\u0045\u0307", + // Ė = \.{E} + "\u1e1e": "\u0046\u0307", + // Ḟ = \.{F} + "\u01f4": "\u0047\u0301", + // Ǵ = \'{G} + "\u1e20": "\u0047\u0304", + // Ḡ = \={G} + "\u011e": "\u0047\u0306", + // Ğ = \u{G} + "\u01e6": "\u0047\u030c", + // Ǧ = \v{G} + "\u011c": "\u0047\u0302", + // Ĝ = \^{G} + "\u0120": "\u0047\u0307", + // Ġ = \.{G} + "\u1e26": "\u0048\u0308", + // Ḧ = \"{H} + "\u021e": "\u0048\u030c", + // Ȟ = \v{H} + "\u0124": "\u0048\u0302", + // Ĥ = \^{H} + "\u1e22": "\u0048\u0307", + // Ḣ = \.{H} + "\u00cd": "\u0049\u0301", + // Í = \'{I} + "\u00cc": "\u0049\u0300", + // Ì = \`{I} + "\u00cf": "\u0049\u0308", + // Ï = \"{I} + "\u1e2e": "\u0049\u0308\u0301", + // Ḯ = \"\'{I} + "\u0128": "\u0049\u0303", + // Ĩ = \~{I} + "\u012a": "\u0049\u0304", + // Ī = \={I} + "\u012c": "\u0049\u0306", + // Ĭ = \u{I} + "\u01cf": "\u0049\u030c", + // Ǐ = \v{I} + "\u00ce": "\u0049\u0302", + // Î = \^{I} + "\u0130": "\u0049\u0307", + // İ = \.{I} + "\u0134": "\u004a\u0302", + // Ĵ = \^{J} + "\u1e30": "\u004b\u0301", + // Ḱ = \'{K} + "\u01e8": "\u004b\u030c", + // Ǩ = \v{K} + "\u0139": "\u004c\u0301", + // Ĺ = \'{L} + "\u013d": "\u004c\u030c", + // Ľ = \v{L} + "\u1e3e": "\u004d\u0301", + // Ḿ = \'{M} + "\u1e40": "\u004d\u0307", + // Ṁ = \.{M} + "\u0143": "\u004e\u0301", + // Ń = \'{N} + "\u01f8": "\u004e\u0300", + // Ǹ = \`{N} + "\u00d1": "\u004e\u0303", + // Ñ = \~{N} + "\u0147": "\u004e\u030c", + // Ň = \v{N} + "\u1e44": "\u004e\u0307", + // Ṅ = \.{N} + "\u00d3": "\u004f\u0301", + // Ó = \'{O} + "\u00d2": "\u004f\u0300", + // Ò = \`{O} + "\u00d6": "\u004f\u0308", + // Ö = \"{O} + "\u022a": "\u004f\u0308\u0304", + // Ȫ = \"\={O} + "\u00d5": "\u004f\u0303", + // Õ = \~{O} + "\u1e4c": "\u004f\u0303\u0301", + // Ṍ = \~\'{O} + "\u1e4e": "\u004f\u0303\u0308", + // Ṏ = \~\"{O} + "\u022c": "\u004f\u0303\u0304", + // Ȭ = \~\={O} + "\u014c": "\u004f\u0304", + // Ō = \={O} + "\u1e52": "\u004f\u0304\u0301", + // Ṓ = \=\'{O} + "\u1e50": "\u004f\u0304\u0300", + // Ṑ = \=\`{O} + "\u014e": "\u004f\u0306", + // Ŏ = \u{O} + "\u01d1": "\u004f\u030c", + // Ǒ = \v{O} + "\u00d4": "\u004f\u0302", + // Ô = \^{O} + "\u1ed0": "\u004f\u0302\u0301", + // Ố = \^\'{O} + "\u1ed2": "\u004f\u0302\u0300", + // Ồ = \^\`{O} + "\u1ed6": "\u004f\u0302\u0303", + // Ỗ = \^\~{O} + "\u022e": "\u004f\u0307", + // Ȯ = \.{O} + "\u0230": "\u004f\u0307\u0304", + // Ȱ = \.\={O} + "\u0150": "\u004f\u030b", + // Ő = \H{O} + "\u1e54": "\u0050\u0301", + // Ṕ = \'{P} + "\u1e56": "\u0050\u0307", + // Ṗ = \.{P} + "\u0154": "\u0052\u0301", + // Ŕ = \'{R} + "\u0158": "\u0052\u030c", + // Ř = \v{R} + "\u1e58": "\u0052\u0307", + // Ṙ = \.{R} + "\u015a": "\u0053\u0301", + // Ś = \'{S} + "\u1e64": "\u0053\u0301\u0307", + // Ṥ = \'\.{S} + "\u0160": "\u0053\u030c", + // Š = \v{S} + "\u1e66": "\u0053\u030c\u0307", + // Ṧ = \v\.{S} + "\u015c": "\u0053\u0302", + // Ŝ = \^{S} + "\u1e60": "\u0053\u0307", + // Ṡ = \.{S} + "\u0164": "\u0054\u030c", + // Ť = \v{T} + "\u1e6a": "\u0054\u0307", + // Ṫ = \.{T} + "\u00da": "\u0055\u0301", + // Ú = \'{U} + "\u00d9": "\u0055\u0300", + // Ù = \`{U} + "\u00dc": "\u0055\u0308", + // Ü = \"{U} + "\u01d7": "\u0055\u0308\u0301", + // Ǘ = \"\'{U} + "\u01db": "\u0055\u0308\u0300", + // Ǜ = \"\`{U} + "\u01d5": "\u0055\u0308\u0304", + // Ǖ = \"\={U} + "\u01d9": "\u0055\u0308\u030c", + // Ǚ = \"\v{U} + "\u0168": "\u0055\u0303", + // Ũ = \~{U} + "\u1e78": "\u0055\u0303\u0301", + // Ṹ = \~\'{U} + "\u016a": "\u0055\u0304", + // Ū = \={U} + "\u1e7a": "\u0055\u0304\u0308", + // Ṻ = \=\"{U} + "\u016c": "\u0055\u0306", + // Ŭ = \u{U} + "\u01d3": "\u0055\u030c", + // Ǔ = \v{U} + "\u00db": "\u0055\u0302", + // Û = \^{U} + "\u016e": "\u0055\u030a", + // Ů = \r{U} + "\u0170": "\u0055\u030b", + // Ű = \H{U} + "\u1e7c": "\u0056\u0303", + // Ṽ = \~{V} + "\u1e82": "\u0057\u0301", + // Ẃ = \'{W} + "\u1e80": "\u0057\u0300", + // Ẁ = \`{W} + "\u1e84": "\u0057\u0308", + // Ẅ = \"{W} + "\u0174": "\u0057\u0302", + // Ŵ = \^{W} + "\u1e86": "\u0057\u0307", + // Ẇ = \.{W} + "\u1e8c": "\u0058\u0308", + // Ẍ = \"{X} + "\u1e8a": "\u0058\u0307", + // Ẋ = \.{X} + "\u00dd": "\u0059\u0301", + // Ý = \'{Y} + "\u1ef2": "\u0059\u0300", + // Ỳ = \`{Y} + "\u0178": "\u0059\u0308", + // Ÿ = \"{Y} + "\u1ef8": "\u0059\u0303", + // Ỹ = \~{Y} + "\u0232": "\u0059\u0304", + // Ȳ = \={Y} + "\u0176": "\u0059\u0302", + // Ŷ = \^{Y} + "\u1e8e": "\u0059\u0307", + // Ẏ = \.{Y} + "\u0179": "\u005a\u0301", + // Ź = \'{Z} + "\u017d": "\u005a\u030c", + // Ž = \v{Z} + "\u1e90": "\u005a\u0302", + // Ẑ = \^{Z} + "\u017b": "\u005a\u0307", + // Ż = \.{Z} + "\u03ac": "\u03b1\u0301", + // ά = \'{α} + "\u1f70": "\u03b1\u0300", + // ὰ = \`{α} + "\u1fb1": "\u03b1\u0304", + // ᾱ = \={α} + "\u1fb0": "\u03b1\u0306", + // ᾰ = \u{α} + "\u03ad": "\u03b5\u0301", + // έ = \'{ε} + "\u1f72": "\u03b5\u0300", + // ὲ = \`{ε} + "\u03ae": "\u03b7\u0301", + // ή = \'{η} + "\u1f74": "\u03b7\u0300", + // ὴ = \`{η} + "\u03af": "\u03b9\u0301", + // ί = \'{ι} + "\u1f76": "\u03b9\u0300", + // ὶ = \`{ι} + "\u03ca": "\u03b9\u0308", + // ϊ = \"{ι} + "\u0390": "\u03b9\u0308\u0301", + // ΐ = \"\'{ι} + "\u1fd2": "\u03b9\u0308\u0300", + // ῒ = \"\`{ι} + "\u1fd1": "\u03b9\u0304", + // ῑ = \={ι} + "\u1fd0": "\u03b9\u0306", + // ῐ = \u{ι} + "\u03cc": "\u03bf\u0301", + // ό = \'{ο} + "\u1f78": "\u03bf\u0300", + // ὸ = \`{ο} + "\u03cd": "\u03c5\u0301", + // ύ = \'{υ} + "\u1f7a": "\u03c5\u0300", + // ὺ = \`{υ} + "\u03cb": "\u03c5\u0308", + // ϋ = \"{υ} + "\u03b0": "\u03c5\u0308\u0301", + // ΰ = \"\'{υ} + "\u1fe2": "\u03c5\u0308\u0300", + // ῢ = \"\`{υ} + "\u1fe1": "\u03c5\u0304", + // ῡ = \={υ} + "\u1fe0": "\u03c5\u0306", + // ῠ = \u{υ} + "\u03ce": "\u03c9\u0301", + // ώ = \'{ω} + "\u1f7c": "\u03c9\u0300", + // ὼ = \`{ω} + "\u038e": "\u03a5\u0301", + // Ύ = \'{Υ} + "\u1fea": "\u03a5\u0300", + // Ὺ = \`{Υ} + "\u03ab": "\u03a5\u0308", + // Ϋ = \"{Υ} + "\u1fe9": "\u03a5\u0304", + // Ῡ = \={Υ} + "\u1fe8": "\u03a5\u0306", + // Ῠ = \u{Υ} + "\u038f": "\u03a9\u0301", + // Ώ = \'{Ω} + "\u1ffa": "\u03a9\u0300" // Ὼ = \`{Ω} + +}; + +/* eslint no-constant-condition:0 */ + +/** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The functions return ParseNodes. + */ +class Parser { + constructor(input, settings) { + this.mode = void 0; + this.gullet = void 0; + this.settings = void 0; + this.leftrightDepth = void 0; + this.nextToken = void 0; + // Start in math mode + this.mode = "math"; // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + + this.gullet = new MacroExpander(input, settings, this.mode); // Store the settings for use in parsing + + this.settings = settings; // Count leftright depth (for \middle errors) + + this.leftrightDepth = 0; + } + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + */ + + + expect(text, consume) { + if (consume === void 0) { + consume = true; + } + + if (this.fetch().text !== text) { + throw new ParseError(`Expected '${text}', got '${this.fetch().text}'`, this.fetch()); + } + + if (consume) { + this.consume(); + } + } + /** + * Discards the current lookahead token, considering it consumed. + */ + + + consume() { + this.nextToken = null; + } + /** + * Return the current lookahead token, or if there isn't one (at the + * beginning, or if the previous lookahead token was consume()d), + * fetch the next token as the new lookahead token and return it. + */ + + + fetch() { + if (this.nextToken == null) { + this.nextToken = this.gullet.expandNextToken(); + } + + return this.nextToken; + } + /** + * Switches between "text" and "math" modes. + */ + + + switchMode(newMode) { + this.mode = newMode; + this.gullet.switchMode(newMode); + } + /** + * Main parsing function, which parses an entire input. + */ + + + parse() { + // Create a group namespace for the math expression. + // (LaTeX creates a new group for every $...$, $$...$$, \[...\].) + this.gullet.beginGroup(); // Use old \color behavior (same as LaTeX's \textcolor) if requested. + // We do this within the group for the math expression, so it doesn't + // pollute settings.macros. + + if (this.settings.colorIsTextColor) { + this.gullet.macros.set("\\color", "\\textcolor"); + } // Try to parse the input + + + const parse = this.parseExpression(false); // If we succeeded, make sure there's an EOF at the end + + this.expect("EOF"); // End the group namespace for the expression + + this.gullet.endGroup(); + return parse; + } + + parseExpression(breakOnInfix, breakOnTokenText) { + const body = []; // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + + while (true) { + // Ignore spaces in math mode + if (this.mode === "math") { + this.consumeSpaces(); + } + + const lex = this.fetch(); + + if (Parser.endOfExpression.indexOf(lex.text) !== -1) { + break; + } + + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + + if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) { + break; + } + + const atom = this.parseAtom(breakOnTokenText); + + if (!atom) { + break; + } + + body.push(atom); + } + + if (this.mode === "text") { + this.formLigatures(body); + } + + return this.handleInfixNodes(body); + } + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + */ + + + handleInfixNodes(body) { + let overIndex = -1; + let funcName; + + for (let i = 0; i < body.length; i++) { + const node = checkNodeType(body[i], "infix"); + + if (node) { + if (overIndex !== -1) { + throw new ParseError("only one infix operator per group", node.token); + } + + overIndex = i; + funcName = node.replaceWith; + } + } + + if (overIndex !== -1 && funcName) { + let numerNode; + let denomNode; + const numerBody = body.slice(0, overIndex); + const denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = { + type: "ordgroup", + mode: this.mode, + body: numerBody + }; + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = { + type: "ordgroup", + mode: this.mode, + body: denomBody + }; + } + + let node; + + if (funcName === "\\\\abovefrac") { + node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []); + } else { + node = this.callFunction(funcName, [numerNode, denomNode], []); + } + + return [node]; + } else { + return body; + } + } // The greediness of a superscript or subscript + + + /** + * Handle a subscript or superscript with nice errors. + */ + handleSupSubscript(name) { + const symbolToken = this.fetch(); + const symbol = symbolToken.text; + this.consume(); + const group = this.parseGroup(name, false, Parser.SUPSUB_GREEDINESS, undefined, undefined, true); // ignore spaces before sup/subscript argument + + if (!group) { + throw new ParseError("Expected group after '" + symbol + "'", symbolToken); + } + + return group; + } + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + + + formatUnsupportedCmd(text) { + const textordArray = []; + + for (let i = 0; i < text.length; i++) { + textordArray.push({ + type: "textord", + mode: "text", + text: text[i] + }); + } + + const textNode = { + type: "text", + mode: this.mode, + body: textordArray + }; + const colorNode = { + type: "color", + mode: this.mode, + color: this.settings.errorColor, + body: [textNode] + }; + return colorNode; + } + /** + * Parses a group with optional super/subscripts. + */ + + + parseAtom(breakOnTokenText) { + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + const base = this.parseGroup("atom", false, null, breakOnTokenText); // In text mode, we don't have superscripts or subscripts + + if (this.mode === "text") { + return base; + } // Note that base may be empty (i.e. null) at this point. + + + let superscript; + let subscript; + + while (true) { + // Guaranteed in math mode, so eat any spaces first. + this.consumeSpaces(); // Lex the first token + + const lex = this.fetch(); + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + let opNode = checkNodeType(base, "op"); + + if (opNode) { + const limits = lex.text === "\\limits"; + opNode.limits = limits; + opNode.alwaysHandleSupSub = true; + } else { + opNode = checkNodeType(base, "operatorname"); + + if (opNode && opNode.alwaysHandleSupSub) { + const limits = lex.text === "\\limits"; + opNode.limits = limits; + } else { + throw new ParseError("Limit controls must follow a math operator", lex); + } + } + + this.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new ParseError("Double superscript", lex); + } + + superscript = this.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new ParseError("Double subscript", lex); + } + + subscript = this.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + if (superscript) { + throw new ParseError("Double superscript", lex); + } + + const prime = { + type: "textord", + mode: this.mode, + text: "\\prime" + }; // Many primes can be grouped together, so we handle this here + + const primes = [prime]; + this.consume(); // Keep lexing tokens until we get something that's not a prime + + while (this.fetch().text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this.consume(); + } // If there's a superscript following the primes, combine that + // superscript in with the primes. + + + if (this.fetch().text === "^") { + primes.push(this.handleSupSubscript("superscript")); + } // Put everything into an ordgroup as the superscript + + + superscript = { + type: "ordgroup", + mode: this.mode, + body: primes + }; + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } // Base must be set if superscript or subscript are set per logic above, + // but need to check here for type check to pass. + + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return { + type: "supsub", + mode: this.mode, + base: base, + sup: superscript, + sub: subscript + }; + } else { + // Otherwise return the original body + return base; + } + } + /** + * Parses an entire function, including its base and all of its arguments. + */ + + + parseFunction(breakOnTokenText, name, // For error reporting. + greediness) { + const token = this.fetch(); + const func = token.text; + const funcData = functions[func]; + + if (!funcData) { + return null; + } + + this.consume(); // consume command token + + if (greediness != null && funcData.greediness <= greediness) { + throw new ParseError("Got function '" + func + "' with no arguments" + (name ? " as " + name : ""), token); + } else if (this.mode === "text" && !funcData.allowedInText) { + throw new ParseError("Can't use function '" + func + "' in text mode", token); + } else if (this.mode === "math" && funcData.allowedInMath === false) { + throw new ParseError("Can't use function '" + func + "' in math mode", token); + } + + const _this$parseArguments = this.parseArguments(func, funcData), + args = _this$parseArguments.args, + optArgs = _this$parseArguments.optArgs; + + return this.callFunction(func, args, optArgs, token, breakOnTokenText); + } + /** + * Call a function handler with a suitable context and arguments. + */ + + + callFunction(name, args, optArgs, token, breakOnTokenText) { + const context = { + funcName: name, + parser: this, + token, + breakOnTokenText + }; + const func = functions[name]; + + if (func && func.handler) { + return func.handler(context, args, optArgs); + } else { + throw new ParseError(`No function handler for ${name}`); + } + } + /** + * Parses the arguments of a function or environment + */ + + + parseArguments(func, // Should look like "\name" or "\begin{name}". + funcData) { + const totalArgs = funcData.numArgs + funcData.numOptionalArgs; + + if (totalArgs === 0) { + return { + args: [], + optArgs: [] + }; + } + + const baseGreediness = funcData.greediness; + const args = []; + const optArgs = []; + + for (let i = 0; i < totalArgs; i++) { + const argType = funcData.argTypes && funcData.argTypes[i]; + const isOptional = i < funcData.numOptionalArgs; // Ignore spaces between arguments. As the TeXbook says: + // "After you have said ‘\def\row#1#2{...}’, you are allowed to + // put spaces between the arguments (e.g., ‘\row x n’), because + // TeX doesn’t use single spaces as undelimited arguments." + + const consumeSpaces = i > 0 && !isOptional || // Also consume leading spaces in math mode, as parseSymbol + // won't know what to do with them. This can only happen with + // macros, e.g. \frac\foo\foo where \foo expands to a space symbol. + // In LaTeX, the \foo's get treated as (blank) arguments. + // In KaTeX, for now, both spaces will get consumed. + // TODO(edemaine) + i === 0 && !isOptional && this.mode === "math"; + const arg = this.parseGroupOfType(`argument to '${func}'`, argType, isOptional, baseGreediness, consumeSpaces); + + if (!arg) { + if (isOptional) { + optArgs.push(null); + continue; + } + + throw new ParseError(`Expected group after '${func}'`, this.fetch()); + } + + (isOptional ? optArgs : args).push(arg); + } + + return { + args, + optArgs + }; + } + /** + * Parses a group when the mode is changing. + */ + + + parseGroupOfType(name, type, optional, greediness, consumeSpaces) { + switch (type) { + case "color": + if (consumeSpaces) { + this.consumeSpaces(); + } + + return this.parseColorGroup(optional); + + case "size": + if (consumeSpaces) { + this.consumeSpaces(); + } + + return this.parseSizeGroup(optional); + + case "url": + return this.parseUrlGroup(optional, consumeSpaces); + + case "math": + case "text": + return this.parseGroup(name, optional, greediness, undefined, type, consumeSpaces); + + case "hbox": + { + // hbox argument type wraps the argument in the equivalent of + // \hbox, which is like \text but switching to \textstyle size. + const group = this.parseGroup(name, optional, greediness, undefined, "text", consumeSpaces); + + if (!group) { + return group; + } + + const styledGroup = { + type: "styling", + mode: group.mode, + body: [group], + style: "text" // simulate \textstyle + + }; + return styledGroup; + } + + case "raw": + { + if (consumeSpaces) { + this.consumeSpaces(); + } + + if (optional && this.fetch().text === "{") { + return null; + } + + const token = this.parseStringGroup("raw", optional, true); + + if (token) { + return { + type: "raw", + mode: "text", + string: token.text + }; + } else { + throw new ParseError("Expected raw group", this.fetch()); + } + } + + case "original": + case null: + case undefined: + return this.parseGroup(name, optional, greediness, undefined, undefined, consumeSpaces); + + default: + throw new ParseError("Unknown group type as " + name, this.fetch()); + } + } + /** + * Discard any space tokens, fetching the next non-space token. + */ + + + consumeSpaces() { + while (this.fetch().text === " ") { + this.consume(); + } + } + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + */ + + + parseStringGroup(modeName, // Used to describe the mode in error messages. + optional, raw) { + const groupBegin = optional ? "[" : "{"; + const groupEnd = optional ? "]" : "}"; + const beginToken = this.fetch(); + + if (beginToken.text !== groupBegin) { + if (optional) { + return null; + } else if (raw && beginToken.text !== "EOF" && /[^{}[\]]/.test(beginToken.text)) { + this.consume(); + return beginToken; + } + } + + const outerMode = this.mode; + this.mode = "text"; + this.expect(groupBegin); + let str = ""; + const firstToken = this.fetch(); + let nested = 0; // allow nested braces in raw string group + + let lastToken = firstToken; + let nextToken; + + while ((nextToken = this.fetch()).text !== groupEnd || raw && nested > 0) { + switch (nextToken.text) { + case "EOF": + throw new ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str)); + + case groupBegin: + nested++; + break; + + case groupEnd: + nested--; + break; + } + + lastToken = nextToken; + str += lastToken.text; + this.consume(); + } + + this.expect(groupEnd); + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + */ + + + parseRegexGroup(regex, modeName) { + const outerMode = this.mode; + this.mode = "text"; + const firstToken = this.fetch(); + let lastToken = firstToken; + let str = ""; + let nextToken; + + while ((nextToken = this.fetch()).text !== "EOF" && regex.test(str + nextToken.text)) { + lastToken = nextToken; + str += lastToken.text; + this.consume(); + } + + if (str === "") { + throw new ParseError("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); + } + + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + /** + * Parses a color description. + */ + + + parseColorGroup(optional) { + const res = this.parseStringGroup("color", optional); + + if (!res) { + return null; + } + + const match = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(res.text); + + if (!match) { + throw new ParseError("Invalid color: '" + res.text + "'", res); + } + + let color = match[0]; + + if (/^[0-9a-f]{6}$/i.test(color)) { + // We allow a 6-digit HTML color spec without a leading "#". + // This follows the xcolor package's HTML color model. + // Predefined color names are all missed by this RegEx pattern. + color = "#" + color; + } + + return { + type: "color-token", + mode: this.mode, + color + }; + } + /** + * Parses a size specification, consisting of magnitude and unit. + */ + + + parseSizeGroup(optional) { + let res; + let isBlank = false; + + if (!optional && this.fetch().text !== "{") { + res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + + if (!res) { + return null; + } + + if (!optional && res.text.length === 0) { + // Because we've tested for what is !optional, this block won't + // affect \kern, \hspace, etc. It will capture the mandatory arguments + // to \genfrac and \above. + res.text = "0pt"; // Enable \above{} + + isBlank = true; // This is here specifically for \genfrac + } + + const match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); + + if (!match) { + throw new ParseError("Invalid size: '" + res.text + "'", res); + } + + const data = { + number: +(match[1] + match[2]), + // sign + magnitude, cast to number + unit: match[3] + }; + + if (!validUnit(data)) { + throw new ParseError("Invalid unit: '" + data.unit + "'", res); + } + + return { + type: "size", + mode: this.mode, + value: data, + isBlank + }; + } + /** + * Parses an URL, checking escaped letters and allowed protocols, + * and setting the catcode of % as an active character (as in \hyperref). + */ + + + parseUrlGroup(optional, consumeSpaces) { + this.gullet.lexer.setCatcode("%", 13); // active character + + const res = this.parseStringGroup("url", optional, true); // get raw string + + this.gullet.lexer.setCatcode("%", 14); // comment character + + if (!res) { + return null; + } // hyperref package allows backslashes alone in href, but doesn't + // generate valid links in such cases; we interpret this as + // "undefined" behaviour, and keep them as-is. Some browser will + // replace backslashes with forward slashes. + + + const url = res.text.replace(/\\([#$%&~_^{}])/g, '$1'); + return { + type: "url", + mode: this.mode, + url + }; + } + /** + * If `optional` is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}") or an implicit group, a group that starts + * at the current position, and ends right before a higher explicit + * group ends, or at EOF. + * If `optional` is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * If `mode` is present, switches to that mode while parsing the group, + * and switches back after. + */ + + + parseGroup(name, // For error reporting. + optional, greediness, breakOnTokenText, mode, consumeSpaces) { + // Switch to specified mode + const outerMode = this.mode; + + if (mode) { + this.switchMode(mode); + } // Consume spaces if requested, crucially *after* we switch modes, + // so that the next non-space token is parsed in the correct mode. + + + if (consumeSpaces) { + this.consumeSpaces(); + } // Get first token + + + const firstToken = this.fetch(); + const text = firstToken.text; + let result; // Try to parse an open brace or \begingroup + + if (optional ? text === "[" : text === "{" || text === "\\begingroup") { + this.consume(); + const groupEnd = Parser.endOfGroup[text]; // Start a new group namespace + + this.gullet.beginGroup(); // If we get a brace, parse an expression + + const expression = this.parseExpression(false, groupEnd); + const lastToken = this.fetch(); // Check that we got a matching closing brace + + this.expect(groupEnd); // End group namespace + + this.gullet.endGroup(); + result = { + type: "ordgroup", + mode: this.mode, + loc: SourceLocation.range(firstToken, lastToken), + body: expression, + // A group formed by \begingroup...\endgroup is a semi-simple group + // which doesn't affect spacing in math mode, i.e., is transparent. + // https://tex.stackexchange.com/questions/1930/when-should-one- + // use-begingroup-instead-of-bgroup + semisimple: text === "\\begingroup" || undefined + }; + } else if (optional) { + // Return nothing for an optional group + result = null; + } else { + // If there exists a function with this name, parse the function. + // Otherwise, just return a nucleus + result = this.parseFunction(breakOnTokenText, name, greediness) || this.parseSymbol(); + + if (result == null && text[0] === "\\" && !implicitCommands.hasOwnProperty(text)) { + if (this.settings.throwOnError) { + throw new ParseError("Undefined control sequence: " + text, firstToken); + } + + result = this.formatUnsupportedCmd(text); + this.consume(); + } + } // Switch mode back + + + if (mode) { + this.switchMode(outerMode); + } + + return result; + } + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * The group will be modified in place. + */ + + + formLigatures(group) { + let n = group.length - 1; + + for (let i = 0; i < n; ++i) { + const a = group[i]; // $FlowFixMe: Not every node type has a `text` property. + + const v = a.text; + + if (v === "-" && group[i + 1].text === "-") { + if (i + 1 < n && group[i + 2].text === "-") { + group.splice(i, 3, { + type: "textord", + mode: "text", + loc: SourceLocation.range(a, group[i + 2]), + text: "---" + }); + n -= 2; + } else { + group.splice(i, 2, { + type: "textord", + mode: "text", + loc: SourceLocation.range(a, group[i + 1]), + text: "--" + }); + n -= 1; + } + } + + if ((v === "'" || v === "`") && group[i + 1].text === v) { + group.splice(i, 2, { + type: "textord", + mode: "text", + loc: SourceLocation.range(a, group[i + 1]), + text: v + v + }); + n -= 1; + } + } + } + /** + * Parse a single symbol out of the string. Here, we handle single character + * symbols and special functions like \verb. + */ + + + parseSymbol() { + const nucleus = this.fetch(); + let text = nucleus.text; + + if (/^\\verb[^a-zA-Z]/.test(text)) { + this.consume(); + let arg = text.slice(5); + const star = arg.charAt(0) === "*"; + + if (star) { + arg = arg.slice(1); + } // Lexer's tokenRegex is constructed to always have matching + // first/last characters. + + + if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) { + throw new ParseError(`\\verb assertion failed -- + please report what input caused this bug`); + } + + arg = arg.slice(1, -1); // remove first and last char + + return { + type: "verb", + mode: "text", + body: arg, + star + }; + } // At this point, we should have a symbol, possibly with accents. + // First expand any accented base symbol according to unicodeSymbols. + + + if (unicodeSymbols.hasOwnProperty(text[0]) && !symbols[this.mode][text[0]]) { + // This behavior is not strict (XeTeX-compatible) in math mode. + if (this.settings.strict && this.mode === "math") { + this.settings.reportNonstrict("unicodeTextInMathMode", `Accented Unicode text character "${text[0]}" used in ` + `math mode`, nucleus); + } + + text = unicodeSymbols[text[0]] + text.substr(1); + } // Strip off any combining characters + + + const match = combiningDiacriticalMarksEndRegex.exec(text); + + if (match) { + text = text.substring(0, match.index); + + if (text === 'i') { + text = '\u0131'; // dotless i, in math and text mode + } else if (text === 'j') { + text = '\u0237'; // dotless j, in math and text mode + } + } // Recognize base symbol + + + let symbol; + + if (symbols[this.mode][text]) { + if (this.settings.strict && this.mode === 'math' && extraLatin.indexOf(text) >= 0) { + this.settings.reportNonstrict("unicodeTextInMathMode", `Latin-1/Unicode text character "${text[0]}" used in ` + `math mode`, nucleus); + } + + const group = symbols[this.mode][text].group; + const loc = SourceLocation.range(nucleus); + let s; + + if (ATOMS.hasOwnProperty(group)) { + // $FlowFixMe + const family = group; + s = { + type: "atom", + mode: this.mode, + family, + loc, + text + }; + } else { + // $FlowFixMe + s = { + type: group, + mode: this.mode, + loc, + text + }; + } + + symbol = s; + } else if (text.charCodeAt(0) >= 0x80) { + // no symbol for e.g. ^ + if (this.settings.strict) { + if (!supportedCodepoint(text.charCodeAt(0))) { + this.settings.reportNonstrict("unknownSymbol", `Unrecognized Unicode character "${text[0]}"` + ` (${text.charCodeAt(0)})`, nucleus); + } else if (this.mode === "math") { + this.settings.reportNonstrict("unicodeTextInMathMode", `Unicode text character "${text[0]}" used in math mode`, nucleus); + } + } // All nonmathematical Unicode characters are rendered as if they + // are in text mode (wrapped in \text) because that's what it + // takes to render them in LaTeX. Setting `mode: this.mode` is + // another natural choice (the user requested math mode), but + // this makes it more difficult for getCharacterMetrics() to + // distinguish Unicode characters without metrics and those for + // which we want to simulate the letter M. + + + symbol = { + type: "textord", + mode: "text", + loc: SourceLocation.range(nucleus), + text + }; + } else { + return null; // EOF, ^, _, {, }, etc. + } + + this.consume(); // Transform combining characters into accents + + if (match) { + for (let i = 0; i < match[0].length; i++) { + const accent = match[0][i]; + + if (!unicodeAccents[accent]) { + throw new ParseError(`Unknown accent ' ${accent}'`, nucleus); + } + + const command = unicodeAccents[accent][this.mode]; + + if (!command) { + throw new ParseError(`Accent ${accent} unsupported in ${this.mode} mode`, nucleus); + } + + symbol = { + type: "accent", + mode: this.mode, + loc: SourceLocation.range(nucleus), + label: command, + isStretchy: false, + isShifty: true, + base: symbol + }; + } + } + + return symbol; + } + +} +Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"]; +Parser.endOfGroup = { + "[": "]", + "{": "}", + "\\begingroup": "\\endgroup" + /** + * Parses an "expression", which is a list of atoms. + * + * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This + * happens when functions have higher precendence han infix + * nodes in implicit parses. + * + * `breakOnTokenText`: The text of the token that the expression should end + * with, or `null` if something else should end the + * expression. + */ + +}; +Parser.SUPSUB_GREEDINESS = 1; + +/** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + +/** + * Parses an expression using a Parser, then returns the parsed result. + */ +const parseTree = function parseTree(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + + const parser = new Parser(toParse, settings); // Blank out any \df@tag to avoid spurious "Duplicate \tag" errors + + delete parser.gullet.macros.current["\\df@tag"]; + let tree = parser.parse(); // If the input used \tag, it will set the \df@tag macro to the tag. + // In this case, we separately parse the tag and wrap the tree. + + if (parser.gullet.macros.get("\\df@tag")) { + if (!settings.displayMode) { + throw new ParseError("\\tag works only in display equations"); + } + + parser.gullet.feed("\\df@tag"); + tree = [{ + type: "tag", + mode: "text", + body: tree, + tag: parser.parse() + }]; + } + + return tree; +}; + +/* eslint no-console:0 */ + +/** + * Parse and build an expression, and place that expression in the DOM node + * given. + */ +let render = function render(expression, baseNode, options) { + baseNode.textContent = ""; + const node = renderToDomTree(expression, options).toNode(); + baseNode.appendChild(node); +}; // KaTeX's styles don't work properly in quirks mode. Print out an error, and +// disable rendering. + + +if (typeof document !== "undefined") { + if (document.compatMode !== "CSS1Compat") { + typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your " + "website has a suitable doctype."); + + render = function render() { + throw new ParseError("KaTeX doesn't work in quirks mode."); + }; + } +} +/** + * Parse and build an expression, and return the markup for that. + */ + + +const renderToString = function renderToString(expression, options) { + const markup = renderToDomTree(expression, options).toMarkup(); + return markup; +}; +/** + * Parse an expression and return the parse tree. + */ + + +const generateParseTree = function generateParseTree(expression, options) { + const settings = new Settings(options); + return parseTree(expression, settings); +}; +/** + * If the given error is a KaTeX ParseError and options.throwOnError is false, + * renders the invalid LaTeX as a span with hover title giving the KaTeX + * error message. Otherwise, simply throws the error. + */ + + +const renderError = function renderError(error, expression, options) { + if (options.throwOnError || !(error instanceof ParseError)) { + throw error; + } + + const node = buildCommon.makeSpan(["katex-error"], [new SymbolNode(expression)]); + node.setAttribute("title", error.toString()); + node.setAttribute("style", `color:${options.errorColor}`); + return node; +}; +/** + * Generates and returns the katex build tree. This is used for advanced + * use cases (like rendering to custom output). + */ + + +const renderToDomTree = function renderToDomTree(expression, options) { + const settings = new Settings(options); + + try { + const tree = parseTree(expression, settings); + return buildTree(tree, expression, settings); + } catch (error) { + return renderError(error, expression, settings); + } +}; +/** + * Generates and returns the katex build tree, with just HTML (no MathML). + * This is used for advanced use cases (like rendering to custom output). + */ + + +const renderToHTMLTree = function renderToHTMLTree(expression, options) { + const settings = new Settings(options); + + try { + const tree = parseTree(expression, settings); + return buildHTMLTree(tree, expression, settings); + } catch (error) { + return renderError(error, expression, settings); + } +}; + +var katex = { + /** + * Current KaTeX version + */ + version: "0.11.1", + + /** + * Renders the given LaTeX into an HTML+MathML combination, and adds + * it as a child to the specified DOM node. + */ + render, + + /** + * Renders the given LaTeX into an HTML+MathML combination string, + * for sending to the client. + */ + renderToString, + + /** + * KaTeX error, usually during parsing. + */ + ParseError, + + /** + * Parses the given LaTeX into KaTeX's internal parse tree structure, + * without rendering to HTML or MathML. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: generateParseTree, + + /** + * Renders the given LaTeX into an HTML+MathML internal DOM tree + * representation, without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToDomTree: renderToDomTree, + + /** + * Renders the given LaTeX into an HTML internal DOM tree representation, + * without MathML and without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToHTMLTree: renderToHTMLTree, + + /** + * extends internal font metrics object with a new object + * each key in the new object represents a font name + */ + __setFontMetrics: setFontMetrics, + + /** + * adds a new symbol to builtin symbols table + */ + __defineSymbol: defineSymbol, + + /** + * adds a new macro to builtin macro list + */ + __defineMacro: defineMacro, + + /** + * Expose the dom tree node types, which can be useful for type checking nodes. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __domTree: { + Span, + Anchor, + SymbolNode, + SvgNode, + PathNode, + LineNode + } +}; + +export default katex; diff --git a/node_modules/mavon-editor/dist/markdown/github-markdown.min.css b/node_modules/mavon-editor/dist/markdown/github-markdown.min.css new file mode 100644 index 0000000..2d83c36 --- /dev/null +++ b/node_modules/mavon-editor/dist/markdown/github-markdown.min.css @@ -0,0 +1,2 @@ +@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format('woff')}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit}.markdown-body strong{font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr::before{display:table;content:""}.markdown-body hr::after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code::after,.markdown-body code::before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::after,.markdown-body pre code::before{content:normal}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee} +/*# sourceMappingURL=github-markdown.min.css.map */ \ No newline at end of file diff --git a/node_modules/mavon-editor/dist/mavon-editor.js b/node_modules/mavon-editor/dist/mavon-editor.js new file mode 100644 index 0000000..5f1854d --- /dev/null +++ b/node_modules/mavon-editor/dist/mavon-editor.js @@ -0,0 +1,22 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("MavonEditor",["vue"],t):"object"==typeof exports?exports.MavonEditor=t(require("vue")):e.MavonEditor=t(e.Vue)}(window,(function(__WEBPACK_EXTERNAL_MODULE__0__){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=79)}([function(e,t){e.exports=__WEBPACK_EXTERNAL_MODULE__0__},function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty;function o(e,t){return n.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),c=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,u=r(62);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&","<":"<",">":">",'"':"""};function f(e){return h[e]}var _=/[.?*+^$[\]\\(){}|-]/g;var m=r(40);t.lib={},t.lib.mdurl=r(63),t.lib.ucmicro=r(145),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(r){e[r]=t[r]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,r){return t||function(e,t){var r=0;return o(u,t)?u[t]:35===t.charCodeAt(0)&&c.test(t)&&i(r="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(r):e}(e,r)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return m.test(e)},t.escapeRE=function(e){return e.replace(_,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{const r=e.__vccOpts||e;for(const[e,n]of t)r[e]=n;return r}},function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,r){var n=r(6),o=r(16);e.exports=r(7)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},function(e,t,r){var n=r(14),o=r(47),i=r(28),a=Object.defineProperty;t.f=r(7)?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},function(e,t,r){e.exports=!r(15)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,r){var n=r(89),o=r(27);e.exports=function(e){return n(o(e))}},function(e,t,r){var n=r(32)("wks"),o=r(17),i=r(2).Symbol,a="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=n},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof2=__webpack_require__(25),_typeof3=_interopRequireDefault(_typeof2),_keydownListen=__webpack_require__(110),_langHljsCss=__webpack_require__(111),_langHljsCss2=_interopRequireDefault(_langHljsCss),_langHljs=__webpack_require__(56),_langHljs2=_interopRequireDefault(_langHljs),_extraFunction=__webpack_require__(57),_util=__webpack_require__(112),_toolbar_left_click2=__webpack_require__(113),_toolbar_right_click2=__webpack_require__(114),_config=__webpack_require__(115),_markdown=__webpack_require__(132),_markdown2=_interopRequireDefault(_markdown),_mdToolbarLeft=__webpack_require__(70),_mdToolbarLeft2=_interopRequireDefault(_mdToolbarLeft),_mdToolbarRight=__webpack_require__(72),_mdToolbarRight2=_interopRequireDefault(_mdToolbarRight),_autoTextarea=__webpack_require__(216),_autoTextarea2=_interopRequireDefault(_autoTextarea);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}__webpack_require__(222),__webpack_require__(231),exports.default={emits:["imgDel","change","fullScreen","readModel","previewToggle","subfieldToggle","htmlCode","helpToggle","save","navigationToggle","update:modelValue"],mixins:[_markdown2.default],props:{scrollStyle:{type:Boolean,default:!0},boxShadow:{type:Boolean,default:!0},transition:{type:Boolean,default:!0},autofocus:{type:Boolean,default:!0},fontSize:{type:String,default:"14px"},toolbarsBackground:{type:String,default:"#ffffff"},editorBackground:{type:String,default:"#ffffff"},previewBackground:{type:String,default:"#fbfbfb"},boxShadowStyle:{type:String,default:"0 2px 12px 0 rgba(0, 0, 0, 0.1)"},help:{type:String,default:null},modelValue:{type:String,default:""},language:{type:String,default:"zh-CN"},subfield:{type:Boolean,default:!0},navigation:{type:Boolean,default:!1},defaultOpen:{type:String,default:null},editable:{type:Boolean,default:!0},toolbarsFlag:{type:Boolean,default:!0},toolbars:{type:Object,default:function(){return _config.CONFIG.toolbars}},html:{type:Boolean,default:!0},xssOptions:{type:[Object,Boolean],default:function(){return{}}},codeStyle:{type:String,default:function(){return"github"}},placeholder:{type:String,default:null},ishljs:{type:Boolean,default:!0},externalLink:{type:[Object,Boolean],default:!0},imageFilter:{type:Function,default:null},imageClick:{type:Function,default:null},tabSize:{type:Number,default:0},shortCut:{type:Boolean,default:!0}},data:function(){var e,t,r=this;return{s_right_click_menu_show:!1,right_click_menu_top:0,right_click_menu_left:0,s_subfield:r.subfield,s_autofocus:!0,s_navigation:r.navigation,s_scrollStyle:r.scrollStyle,d_value:"",d_render:"",s_preview_switch:(t=r.defaultOpen,t||(t=r.subfield?"preview":"edit"),"preview"===t),s_fullScreen:!1,s_help:!1,s_html_code:!1,d_help:null,d_words:null,edit_scroll_height:-1,s_readmodel:!1,s_table_enter:!1,d_history:(e=[],e.push(r.modelValue),e),d_history_index:0,currentTimeout:"",d_image_file:[],d_preview_imgsrc:null,s_external_link:{markdown_css:function(){return"https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.9.0/github-markdown.min.css"},hljs_js:function(){return"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/highlight.min.js"},hljs_lang:function(e){return"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/languages/"+e+".min.js"},hljs_css:function(e){return _langHljsCss2.default[e]?"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/styles/"+e+".min.css":""},katex_js:function(){return"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js"},katex_css:function(){return"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css"}},p_external_link:{},textarea_selectionEnd:0,textarea_selectionEnds:[0],_xssHandler:null}},created:function(){var e=this;this.initLanguage(),this.initExternalFuc(),this.$nextTick((function(){e.editableTextarea()}))},mounted:function(){var e=this;this.$el.addEventListener("paste",(function(t){e.$paste(t)})),this.$el.addEventListener("drop",(function(t){e.$drag(t)})),(0,_keydownListen.keydownListen)(this),(0,_extraFunction.ImagePreviewListener)(this),this.autofocus&&this.getTextareaDom().focus(),(0,_extraFunction.fullscreenchange)(this),this.d_value=this.modelValue||"",document.body.appendChild(this.$refs.help),this.loadExternalLink("markdown_css","css"),this.loadExternalLink("katex_css","css"),this.loadExternalLink("katex_js","js",(function(){e.iRender(!0)})),this.loadExternalLink("hljs_js","js",(function(){e.iRender(!0)})),"object"===(0,_typeof3.default)(e.externalLink)&&"function"==typeof e.externalLink.markdown_css||e.codeStyleChange(e.codeStyle,!0)},beforeUnmount:function(){document.body.removeChild(this.$refs.help)},getMarkdownIt:function(){var e=this.mixins[0].data().markdownIt;return e||(e=(0,_markdown.initMarkdown)()),e},methods:{loadExternalLink:function(e,t,r){if("function"==typeof this.p_external_link[e]){var n={css:_extraFunction.loadLink,js:_extraFunction.loadScript};n.hasOwnProperty(t)&&n[t](this.p_external_link[e](),r)}else!1!==this.p_external_link[e]&&console.error("external_link."+e,"is not a function, if you want to disabled this error log, set external_link."+e,"to function or false")},initExternalFuc:function(){for(var e=["markdown_css","hljs_js","hljs_css","hljs_lang","katex_js","katex_css"],t=(0,_typeof3.default)(this.externalLink),r="object"===t,n="boolean"===t,o=0;o<e.length;o++)n&&!this.externalLink||r&&!1===this.externalLink[e[o]]?this.p_external_link[e[o]]=!1:r&&"function"==typeof this.externalLink[e[o]]?this.p_external_link[e[o]]=this.externalLink[e[o]]:this.p_external_link[e[o]]=this.s_external_link[e[o]]},textAreaFocus:function(){this.$refs.vNoteTextarea.$refs.vTextarea.focus()},$drag:function(e){var t=e.dataTransfer;if(t){var r=t.files;r.length>0&&(e.preventDefault(),this.$refs.toolbar_left.$imgFilesAdd(r))}},$paste:function(e){var t=e.clipboardData;if(t){var r=t.items;if(!r)return;for(var n=t.types||[],o=null,i=0;i<n.length;i++)if("Files"===n[i]){o=r[i];break}if(o&&"file"===o.kind){(0,_util.stopEvent)(e);var a=o.getAsFile();this.$refs.toolbar_left.$imgFilesAdd([a])}}},$imgTouch:function(e){},$imgDel:function(e){this.markdownIt.image_del(e[1]);var t=e[0],r=new RegExp("\\!\\["+e[1]._name+"\\]\\("+t+"\\)","g");this.d_value=this.d_value.replace(r,""),this.iRender(),this.$emit("imgDel",e)},$imgAdd:function(e,t,r){void 0===r&&(r=!0);var n=this;if(null==this.__rFilter&&(this.__rFilter=/^image\//i),this.__oFReader=new FileReader,this.__oFReader.onload=function(o){n.markdownIt.image_add(e,o.target.result),t.miniurl=o.target.result,!0===r&&(t._name=t.name.replace(/[\[\]\(\)\+\{\}&\|\\\*^%$#@\-]/g,""),n.insertText(n.getTextareaDom(),{prefix:"",subfix:"",str:""}),n.$nextTick((function(){n.$emit("imgAdd",e,t)})))},t){var o=t;this.__rFilter.test(o.type)&&this.__oFReader.readAsDataURL(o)}},$imgUpdateByUrl:function(e,t){var r=this;this.markdownIt.image_add(e,t),this.$nextTick((function(){r.d_render=this.markdownIt.render(this.d_value)}))},$imgAddByUrl:function(e,t){return!!this.$refs.toolbar_left.$imgAddByUrl(e,t)&&(this.$imgUpdateByUrl(e,t),!0)},$img2Url:function $img2Url(fileIndex,url){var reg_str="/(!\\[[^\\[]*?\\](?=\\())\\(\\s*("+fileIndex+")\\s*\\)/g",reg=eval(reg_str);this.d_value=this.d_value.replace(reg,"$1("+url+")"),this.$refs.toolbar_left.$changeUrl(fileIndex,url),this.iRender()},$imglst2Url:function(e){if(e instanceof Array)for(var t=0;t<e.length;t++)this.$img2Url(e[t][0],e[t][1])},toolbar_left_click:function(e){(0,_toolbar_left_click2.toolbar_left_click)(e,this)},toolbar_left_addlink:function(e,t,r){(0,_toolbar_left_click2.toolbar_left_addlink)(e,t,r,this)},toolbar_right_click:function(e){(0,_toolbar_right_click2.toolbar_right_click)(e,this)},getNavigation:function(e,t){return(0,_extraFunction.getNavigation)(e,t)},change:function(e,t){this.$emit("change",e,t)},fullscreen:function(e,t){this.$emit("fullScreen",e,t)},readmodel:function(e,t){this.$emit("readModel",e,t)},previewtoggle:function(e,t){this.$emit("previewToggle",e,t)},subfieldtoggle:function(e,t){this.$emit("subfieldToggle",e,t)},htmlcode:function(e,t){this.$emit("htmlCode",e,t)},helptoggle:function(e,t){this.$emit("helpToggle",e,t)},save:function(e,t){this.$emit("save",e,t)},navigationtoggle:function(e,t){this.$emit("navigationToggle",e,t)},$toolbar_right_read_change_status:function(){this.s_readmodel=!this.s_readmodel,this.readmodel&&this.readmodel(this.s_readmodel,this.d_value),this.s_readmodel&&this.toolbars.navigation&&this.getNavigation(this,!0)},$v_edit_scroll:function(e){(0,_extraFunction.scrollLink)(e,this)},getTextareaDom:function(){return this.$refs.vNoteTextarea.$refs.vTextarea},insertText:function(e,t){var r=t.prefix,n=t.subfix,o=t.str,i=t.type;(0,_extraFunction.insertTextAtCaret)(e,{prefix:r,subfix:n,str:o,type:i},this)},insertTab:function(){(0,_extraFunction.insertTab)(this,this.tabSize)},insertOl:function(){(0,_extraFunction.insertOl)(this)},removeLine:function(){(0,_extraFunction.removeLine)(this)},insertUl:function(){(0,_extraFunction.insertUl)(this)},unInsertTab:function(){(0,_extraFunction.unInsertTab)(this,this.tabSize)},insertCodeBlock:function(){(0,_extraFunction.insertCodeBlock)(this)},insertEnter:function(e){(0,_extraFunction.insertEnter)(this,e)},saveHistory:function(){this.d_history.splice(this.d_history_index+1,this.d_history.length),this.d_history.push(this.d_value),this.textarea_selectionEnds.splice(this.d_history_index+1,this.textarea_selectionEnds.length),this.textarea_selectionEnds.push(this.textarea_selectionEnd),this.d_history_index=this.d_history.length-1},saveSelectionEndsHistory:function(){var e=this.$refs.vNoteTextarea&&this.$refs.vNoteTextarea.$el.querySelector("textarea");this.textarea_selectionEnd=e?e.selectionEnd:this.textarea_selectionEnd},initLanguage:function(){var e=_config.CONFIG.langList.indexOf(this.language)>=0?this.language:"zh-CN",t=this;t.$render(_config.CONFIG["help_"+e],(function(e){t.d_help=e})),this.d_words=_config.CONFIG["words_"+e]},editableTextarea:function(){var e=this.$refs.vNoteTextarea.$refs.vTextarea;this.editable?e.removeAttribute("disabled"):e.setAttribute("disabled","disabled")},codeStyleChange:function(e,t){if(t=t||!1,"function"==typeof this.p_external_link.hljs_css){var r=this.p_external_link.hljs_css(e);0===r.length&&t&&(console.warn("hljs color scheme",e,"do not exist, loading default github"),r=this.p_external_link.hljs_css("github")),r.length>0?(0,_extraFunction.loadLink)(r,null,"md-code-style"):console.warn("hljs color scheme",e,"do not exist, hljs color scheme will not change")}else!1!==this.p_external_link.hljs_css&&console.error("external_link.hljs_css is not a function, if you want to disabled this error log, set external_link.hljs_css to function or false")},iRender:function(e){var t=this;this.$render(t.d_value,(function(r){t.d_render=r,e||t.change&&t.change(t.d_value,t.d_render),t.s_navigation&&(0,_extraFunction.getNavigation)(t,!1),t.$emit("update:modelValue",t.d_value),t.d_value!==t.d_history[t.d_history_index]&&(window.clearTimeout(t.currentTimeout),t.currentTimeout=setTimeout((function(){t.saveHistory()}),500))}))},$emptyHistory:function(){this.d_history=[this.d_value],this.d_history_index=0}},watch:{d_value:function(e,t){this.saveSelectionEndsHistory(),this.iRender()},modelValue:function(e,t){e!==this.d_value&&(this.d_value=e)},subfield:function(e,t){this.s_subfield=e},d_history_index:function(){this.d_history_index>20&&(this.d_history.shift(),this.d_history_index=this.d_history_index-1),this.d_value=this.d_history[this.d_history_index]},language:function(e){this.initLanguage()},editable:function(){this.editableTextarea()},defaultOpen:function(e){var t=e;return t||(t=this.subfield?"preview":"edit"),this.s_preview_switch="preview"===t,this.s_preview_switch},codeStyle:function(e){this.codeStyleChange(e)}},components:{"v-autoTextarea":_autoTextarea2.default,"v-md-toolbar-left":_mdToolbarLeft2.default,"v-md-toolbar-right":_mdToolbarRight2.default}}},function(e,t){e.exports=!0},function(e,t){var r=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(e,t,r){var n=r(10);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var r=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["toolbar_left_addlink","imgTouch","imgAdd","imgDel","imgAdd","imgAdd","toolbar_left_click","toolbar_left_click"],name:"s-md-toolbar-left",props:{editable:{type:Boolean,default:!0},transition:{type:Boolean,default:!0},toolbars:{type:Object,required:!0},d_words:{type:Object,required:!0},image_filter:{type:Function,default:null}},data:function(){return{img_file:[[0,null]],img_timer:null,header_timer:null,s_img_dropdown_open:!1,s_header_dropdown_open:!1,s_img_link_open:!1,trigger:null,num:0,link_text:"",link_addr:"",link_type:"link"}},methods:{$imgLinkAdd:function(){this.$emit("toolbar_left_addlink",this.link_type,this.link_text,this.link_addr),this.s_img_link_open=!1},$toggle_imgLinkAdd:function(e){var t=this;this.link_type=e,this.link_text=this.link_addr="",this.s_img_link_open=!0,this.$nextTick((function(){t.$refs.linkTextInput.focus()})),this.s_img_dropdown_open=!1},$imgFileListClick:function(e){this.$emit("imgTouch",this.img_file[e])},$changeUrl:function(e,t){this.img_file[e][0]=t},$imgFileAdd:function(e){this.img_file.push([++this.num,e]),this.$emit("imgAdd",this.num,e),this.s_img_dropdown_open=!1},$imgFilesAdd:function(e){for(var t="function"==typeof this.image_filter,r=0;r<e.length;r++)(t&&!0===this.image_filter(e[r])||!t&&e[r].type.match(/^image\//i))&&this.$imgFileAdd(e[r])},$imgAdd:function(e){this.$imgFilesAdd(e.target.files),e.target.value=""},$imgDel:function(e){this.$emit("imgDel",this.img_file[e]),this.img_file.splice(e,1),this.num--,this.s_img_dropdown_open=!1},isEqualName:function(e,t){return!(!this.img_file[t][1]||this.img_file[t][1].name!==e&&this.img_file[t][1]._name!==e)},$imgDelByFilename:function(e){for(var t=0;this.img_file.length>t;){if(this.img_file[t][1]===e||this.isEqualName(e,t))return this.$imgDel(t),!0;t+=1}return!1},$imgAddByFilename:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e)return!1;return this.img_file[0][0]=e,this.img_file[0][1]=t,this.img_file[0][2]=e,this.img_file.unshift(["./"+this.num,null]),this.$emit("imgAdd",this.img_file[1][0],t,!1),!0},$imgAddByUrl:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e)return!1;return this.img_file[0][0]=e,this.img_file[0][1]=t,this.img_file.unshift(["./"+this.num,null]),!0},$imgUpdateByFilename:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e||this.isEqualName(e,r))return this.img_file[r][1]=t,this.$emit("imgAdd",e,t,!1),!0;return!1},$mouseenter_img_dropdown:function(){this.editable&&(clearTimeout(this.img_timer),this.s_img_dropdown_open=!0)},$mouseleave_img_dropdown:function(){var e=this;this.img_timer=setTimeout((function(){e.s_img_dropdown_open=!1}),200)},$mouseenter_header_dropdown:function(){this.editable&&(clearTimeout(this.header_timer),this.s_header_dropdown_open=!0)},$mouseleave_header_dropdown:function(){var e=this;this.header_timer=setTimeout((function(){e.s_header_dropdown_open=!1}),200)},$clicks:function(e){this.editable&&this.$emit("toolbar_left_click",e)},$click_header:function(e){this.$emit("toolbar_left_click",e),this.s_header_dropdown_open=!1},handleClose:function(e){this.s_img_dropdown_open=!1}},watch:{s_img_link_open:function(e){this.$parent.$el.style.zIndex=e?1501:1500}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["toolbar_right_click"],name:"s-md-toolbar-right",props:{s_subfield:{type:Boolean,required:!0},toolbars:{type:Object,required:!0},s_preview_switch:{type:Boolean,required:!0},s_fullScreen:{type:Boolean,required:!0},s_html_code:{type:Boolean,required:!0},s_navigation:{type:Boolean,required:!0},d_words:{type:Object,required:!0}},methods:{$clicks:function(e){this.$emit("toolbar_right_click",e)}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["update:modelValue"],data:function(){var e=this;return{temp_value:e.modelValue,s_autofocus:function(){if(e.autofocus)return"autofocus"}()}},created:function(){},props:{fullHeight:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},modelValue:{type:String,default:""},placeholder:{type:String,default:""},border:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},onchange:{type:Function,default:null},fontSize:{type:String,default:"14px"},lineHeight:{type:String,default:"18px"}},methods:{change:function(e){this.onchange&&this.onchange(this.temp_value,e)}},watch:{modelValue:function(e,t){this.temp_value=e},temp_value:function(e,t){this.$emit("update:modelValue",e)}}}},function(e,t,r){"use strict";r.r(t);var n=r(11),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(18),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(19),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(20),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";t.__esModule=!0;var n=a(r(81)),o=a(r(99)),i="function"==typeof o.default&&"symbol"==typeof n.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===i(n.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t){var r=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,r){var n=r(10);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports={}},function(e,t,r){var n=r(51),o=r(33);e.exports=Object.keys||function(e){return n(e,o)}},function(e,t,r){var n=r(32)("keys"),o=r(17);e.exports=function(e){return n[e]||(n[e]=o(e))}},function(e,t,r){var n=r(13),o=r(2),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(12)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,r){var n=r(6).f,o=r(4),i=r(9)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},function(e,t,r){t.f=r(9)},function(e,t,r){var n=r(2),o=r(13),i=r(12),a=r(35),s=r(6).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,r){var n=r(59),o=r(135);for(var i in(t=e.exports=function(e,t){return new o(t).process(e)}).FilterCSS=o,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,o;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,o=e.length;n<o;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}}},function(e,t){e.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},function(e,t,r){"use strict";function n(){this.__rules__=[],this.__cache__=null}n.prototype.__find__=function(e){for(var t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1},n.prototype.__compile__=function(){var e=this,t=[""];e.__rules__.forEach((function(e){e.enabled&&e.alt.forEach((function(e){t.indexOf(e)<0&&t.push(e)}))})),e.__cache__={},t.forEach((function(t){e.__cache__[t]=[],e.__rules__.forEach((function(r){r.enabled&&(t&&r.alt.indexOf(t)<0||e.__cache__[t].push(r.fn))}))}))},n.prototype.at=function(e,t,r){var n=this.__find__(e),o=r||{};if(-1===n)throw new Error("Parser rule not found: "+e);this.__rules__[n].fn=t,this.__rules__[n].alt=o.alt||[],this.__cache__=null},n.prototype.before=function(e,t,r,n){var o=this.__find__(e),i=n||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},n.prototype.after=function(e,t,r,n){var o=this.__find__(e),i=n||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},n.prototype.push=function(e,t,r){var n=r||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:n.alt||[]}),this.__cache__=null},n.prototype.enable=function(e,t){Array.isArray(e)||(e=[e]);var r=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,r.push(e)}),this),this.__cache__=null,r},n.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach((function(e){e.enabled=!1})),this.enable(e,t)},n.prototype.disable=function(e,t){Array.isArray(e)||(e=[e]);var r=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,r.push(e)}),this),this.__cache__=null,r},n.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}n.prototype.attrIndex=function(e){var t,r,n;if(!this.attrs)return-1;for(r=0,n=(t=this.attrs).length;r<n;r++)if(t[r][0]===e)return r;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},n.prototype.attrSet=function(e,t){var r=this.attrIndex(e),n=[e,t];r<0?this.attrPush(n):this.attrs[r]=n},n.prototype.attrGet=function(e){var t=this.attrIndex(e),r=null;return t>=0&&(r=this.attrs[t][1]),r},n.prototype.attrJoin=function(e,t){var r=this.attrIndex(e);r<0?this.attrPush([e,t]):this.attrs[r][1]=this.attrs[r][1]+" "+t},e.exports=n},function(e,t,r){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=function(e,t){var r=e[1]||"",n=e[3];if(!n)return r;if(t&&"function"==typeof btoa){var o=(a=n,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),i=n.sources.map((function(e){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(e," */")}));return[r].concat(i).concat([o]).join("\n")}var a,s,l;return[r].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s<e.length;s++){var l=[].concat(e[s]);n&&o[l[0]]||(r&&(l[2]?l[2]="".concat(r," and ").concat(l[2]):l[2]=r),t.push(l))}},t}},function(e,t,r){"use strict";function n(e,t){for(var r=[],n={},o=0;o<t.length;o++){var i=t[o],a=i[0],s={id:e+":"+o,css:i[1],media:i[2],sourceMap:i[3]};n[a]?n[a].parts.push(s):r.push(n[a]={id:a,parts:[s]})}return r}r.r(t),r.d(t,"default",(function(){return h}));var o="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!o)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var i={},a=o&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,u=function(){},p=null,d="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(e,t,r,o){c=r,p=o||{};var a=n(e,t);return f(a),function(t){for(var r=[],o=0;o<a.length;o++){var s=a[o];(l=i[s.id]).refs--,r.push(l)}t?f(a=n(e,t)):a=[];for(o=0;o<r.length;o++){var l;if(0===(l=r[o]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete i[l.id]}}}}function f(e){for(var t=0;t<e.length;t++){var r=e[t],n=i[r.id];if(n){n.refs++;for(var o=0;o<n.parts.length;o++)n.parts[o](r.parts[o]);for(;o<r.parts.length;o++)n.parts.push(m(r.parts[o]));n.parts.length>r.parts.length&&(n.parts.length=r.parts.length)}else{var a=[];for(o=0;o<r.parts.length;o++)a.push(m(r.parts[o]));i[r.id]={id:r.id,refs:1,parts:a}}}}function _(){var e=document.createElement("style");return e.type="text/css",a.appendChild(e),e}function m(e){var t,r,n=document.querySelector('style[data-vue-ssr-id~="'+e.id+'"]');if(n){if(c)return u;n.parentNode.removeChild(n)}if(d){var o=l++;n=s||(s=_()),t=v.bind(null,n,o,!1),r=v.bind(null,n,o,!0)}else n=_(),t=k.bind(null,n),r=function(){n.parentNode.removeChild(n)};return t(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;t(e=n)}else r()}}var g,b=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function v(e,t,r,n){var o=r?"":n.css;if(e.styleSheet)e.styleSheet.cssText=b(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function k(e,t){var r=t.css,n=t.media,o=t.sourceMap;if(n&&e.setAttribute("media",n),p.ssrId&&e.setAttribute("data-vue-ssr-id",t.id),o&&(r+="\n/*# sourceURL="+o.sources[0]+" */",r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}},function(e,t,r){"use strict";var n=r(12),o=r(46),i=r(49),a=r(5),s=r(29),l=r(87),c=r(34),u=r(94),p=r(9)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,r,f,_,m,g){l(r,t,f);var b,v,k,w=function(e){if(!d&&e in j)return j[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},y=t+" Iterator",x="values"==_,C=!1,j=e.prototype,O=j[p]||j["@@iterator"]||_&&j[_],S=O||w(_),E=_?x?w("entries"):S:void 0,T="Array"==t&&j.entries||O;if(T&&(k=u(T.call(new e)))!==Object.prototype&&k.next&&(c(k,y,!0),n||"function"==typeof k[p]||a(k,p,h)),x&&O&&"values"!==O.name&&(C=!0,S=function(){return O.call(this)}),n&&!g||!d&&!C&&j[p]||a(j,p,S),s[t]=S,s[y]=h,_)if(b={values:x?S:w("values"),keys:m?S:w("keys"),entries:E},g)for(v in b)v in j||i(j,v,b[v]);else o(o.P+o.F*(d||C),t,b);return b}},function(e,t,r){var n=r(2),o=r(13),i=r(85),a=r(5),s=r(4),l=function(e,t,r){var c,u,p,d=e&l.F,h=e&l.G,f=e&l.S,_=e&l.P,m=e&l.B,g=e&l.W,b=h?o:o[t]||(o[t]={}),v=b.prototype,k=h?n:f?n[t]:(n[t]||{}).prototype;for(c in h&&(r=t),r)(u=!d&&k&&void 0!==k[c])&&s(b,c)||(p=u?k[c]:r[c],b[c]=h&&"function"!=typeof k[c]?r[c]:m&&u?i(p,n):g&&k[c]==p?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(p):_&&"function"==typeof p?i(Function.call,p):p,_&&((b.virtual||(b.virtual={}))[c]=p,e&l.R&&v&&!v[c]&&a(v,c,p)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,r){e.exports=!r(7)&&!r(15)((function(){return 7!=Object.defineProperty(r(48)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,r){var n=r(10),o=r(2).document,i=n(o)&&n(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,r){e.exports=r(5)},function(e,t,r){var n=r(14),o=r(88),i=r(33),a=r(31)("IE_PROTO"),s=function(){},l=function(){var e,t=r(48)("iframe"),n=i.length;for(t.style.display="none",r(93).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;n--;)delete l.prototype[i[n]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(s.prototype=n(e),r=new s,s.prototype=null,r[a]=e):r=l(),void 0===t?r:o(r,t)}},function(e,t,r){var n=r(4),o=r(8),i=r(90)(!1),a=r(31)("IE_PROTO");e.exports=function(e,t){var r,s=o(e),l=0,c=[];for(r in s)r!=a&&n(s,r)&&c.push(r);for(;t.length>l;)n(s,r=t[l++])&&(~i(c,r)||c.push(r));return c}},function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,r){var n=r(27);e.exports=function(e){return Object(n(e))}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,r){var n=r(51),o=r(33).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={"1c":"1c",abnf:"abnf",accesslog:"accesslog",actionscript:"actionscript",as:"actionscript",ada:"ada",apache:"apache",apacheconf:"apache",applescript:"applescript",osascript:"applescript",arduino:"arduino",armasm:"armasm",arm:"armasm",asciidoc:"asciidoc",adoc:"asciidoc",aspectj:"aspectj",autohotkey:"autohotkey",ahk:"autohotkey",autoit:"autoit",avrasm:"avrasm",awk:"awk",axapta:"axapta",bash:"bash",sh:"bash",zsh:"bash",basic:"basic",bnf:"bnf",brainfuck:"brainfuck",bf:"brainfuck",cal:"cal",capnproto:"capnproto",capnp:"capnproto",ceylon:"ceylon",clean:"clean",icl:"clean",dcl:"clean","clojure-repl":"clojure-repl",clojure:"clojure",clj:"clojure",cmake:"cmake","cmake.in":"cmake",coffeescript:"coffeescript",coffee:"coffeescript",cson:"coffeescript",iced:"coffeescript",coq:"coq",cos:"cos",cls:"cos",cpp:"cpp",c:"cpp",cc:"cpp",h:"cpp","c++":"cpp","h++":"cpp",hpp:"cpp",crmsh:"crmsh",crm:"crmsh",pcmk:"crmsh",crystal:"crystal",cr:"crystal",cs:"cs",csharp:"cs",csp:"csp",css:"css",d:"d",dart:"dart",delphi:"delphi",dpr:"delphi",dfm:"delphi",pas:"delphi",pascal:"delphi",freepascal:"delphi",lazarus:"delphi",lpr:"delphi",lfm:"delphi",diff:"diff",patch:"diff",django:"django",jinja:"django",dns:"dns",bind:"dns",zone:"dns",dockerfile:"dockerfile",docker:"dockerfile",dos:"dos",bat:"dos",cmd:"dos",dsconfig:"dsconfig",dts:"dts",dust:"dust",dst:"dust",ebnf:"ebnf",elixir:"elixir",elm:"elm",erb:"erb","erlang-repl":"erlang-repl",erlang:"erlang",erl:"erlang",excel:"excel",xlsx:"excel",xls:"excel",fix:"fix",flix:"flix",fortran:"fortran",f90:"fortran",f95:"fortran",fsharp:"fsharp",fs:"fsharp",gams:"gams",gms:"gams",gauss:"gauss",gss:"gauss",gcode:"gcode",nc:"gcode",gherkin:"gherkin",feature:"gherkin",glsl:"glsl",go:"go",golang:"go",golo:"golo",gradle:"gradle",groovy:"groovy",haml:"haml",handlebars:"handlebars",hbs:"handlebars","html.hbs":"handlebars","html.handlebars":"handlebars",haskell:"haskell",hs:"haskell",haxe:"haxe",hx:"haxe",hsp:"hsp",htmlbars:"htmlbars",http:"http",https:"http",hy:"hy",hylang:"hy",inform7:"inform7",i7:"inform7",ini:"ini",toml:"ini",irpf90:"irpf90",java:"java",jsp:"java",javascript:"javascript",js:"javascript",jsx:"javascript","jboss-cli":"jboss-cli","wildfly-cli":"jboss-cli",json:"json","julia-repl":"julia-repl",julia:"julia",kotlin:"kotlin",lasso:"lasso",ls:"livescript",lassoscript:"lasso",ldif:"ldif",leaf:"leaf",less:"less",lisp:"lisp",livecodeserver:"livecodeserver",livescript:"livescript",llvm:"llvm",lsl:"lsl",lua:"lua",makefile:"makefile",mk:"makefile",mak:"makefile",markdown:"markdown",md:"markdown",mkdown:"markdown",mkd:"markdown",mathematica:"mathematica",mma:"mathematica",matlab:"matlab",maxima:"maxima",mel:"mel",mercury:"mercury",m:"mercury",moo:"mercury",mipsasm:"mipsasm",mips:"mipsasm",mizar:"mizar",mojolicious:"mojolicious",monkey:"monkey",moonscript:"moonscript",moon:"moonscript",n1ql:"n1ql",nginx:"nginx",nginxconf:"nginx",nimrod:"nimrod",nim:"nimrod",nix:"nix",nixos:"nix",nsis:"nsis",objectivec:"objectivec",mm:"objectivec",objc:"objectivec","obj-c":"objectivec",ocaml:"ocaml",ml:"sml",openscad:"openscad",scad:"openscad",oxygene:"oxygene",parser3:"parser3",perl:"perl",pl:"perl",pm:"perl",pf:"pf","pf.conf":"pf",php:"php",php3:"php",php4:"php",php5:"php",php6:"php",pony:"pony",powershell:"powershell",ps:"powershell",processing:"processing",profile:"profile",prolog:"prolog",protobuf:"protobuf",puppet:"puppet",pp:"puppet",purebasic:"purebasic",pb:"purebasic",pbi:"purebasic",python:"python",py:"python",gyp:"python",q:"q",k:"q",kdb:"q",qml:"qml",qt:"qml",r:"r",rib:"rib",roboconf:"roboconf",graph:"roboconf",instances:"roboconf",routeros:"routeros",mikrotik:"routeros",rsl:"rsl",ruby:"ruby",rb:"ruby",gemspec:"ruby",podspec:"ruby",thor:"ruby",irb:"ruby",ruleslanguage:"ruleslanguage",rust:"rust",rs:"rust",scala:"scala",scheme:"scheme",scilab:"scilab",sci:"scilab",scss:"scss",shell:"shell",console:"shell",smali:"smali",smalltalk:"smalltalk",st:"smalltalk",sml:"sml",sqf:"sqf",sql:"sql",stan:"stan",stata:"stata",do:"stata",ado:"stata",step21:"step21",p21:"step21",step:"step21",stp:"step21",stylus:"stylus",styl:"stylus",subunit:"subunit",swift:"swift",taggerscript:"taggerscript",tap:"tap",tcl:"tcl",tk:"tcl",tex:"tex",thrift:"thrift",tp:"tp",twig:"twig",craftcms:"twig",typescript:"typescript",ts:"typescript",vala:"vala",vbnet:"vbnet",vb:"vbnet","vbscript-html":"vbscript-html",vbscript:"vbscript",vbs:"vbscript",verilog:"verilog",v:"verilog",sv:"verilog",svh:"verilog",vhdl:"vhdl",vim:"vim",x86asm:"x86asm",xl:"xl",tao:"xl",xml:"xml",html:"xml",xhtml:"xml",rss:"xml",atom:"xml",xjb:"xml",xsd:"xml",xsl:"xml",plist:"xml",xquery:"xquery",xpath:"xquery",xq:"xquery",yaml:"yaml",yml:"yaml",YAML:"yaml",zephir:"zephir",zep:"zephir"}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadScript=function(e,t){"function"!=typeof t&&(t=function(){});var r=document.querySelectorAll("script[src='"+e+"']");if(r.length>0)return r[0].addEventListener("load",(function(){t()})),void t();var n=document.createElement("script"),o=document.getElementsByTagName("head")[0];n.type="text/javascript",n.charset="UTF-8",n.src=e,n.addEventListener?n.addEventListener("load",(function(){t()}),!1):n.attachEvent&&n.attachEvent("onreadystatechange",(function(){"loaded"===window.event.srcElement.readyState&&t()}));o.appendChild(n)},t.loadLink=function(e,t,r){"function"!=typeof t&&(t=function(){});if(document.querySelectorAll("link[href='"+e+"']").length>0)return void t();if(r){var n=document.querySelectorAll("link#"+r);if(n.length)return void(n[0].href=e)}var o=document.createElement("link"),i=document.getElementsByTagName("head")[0];o.rel="stylesheet",o.href=e,r&&(o.id=r),o.addEventListener?o.addEventListener("load",(function(){t()}),!1):o.attachEvent&&o.attachEvent("onreadystatechange",(function(){"loaded"===window.event.srcElement.readyState&&t()}));i.appendChild(o)};t.insertTextAtCaret=function(e,t,r){var n=t.prefix,o=t.subfix,i=t.str;t.type;if(e.focus(),s(e)){var a=e.selectionStart,l=e.selectionEnd,c=e.value;a===l?(e.value=c.substring(0,a)+n+i+o+c.substring(l,c.length),e.selectionStart=a+n.length,e.selectionEnd=a+(i.length+n.length)):c.substring(a-n.length,a)===n&&c.substring(l,l+o.length)===o&&function(e,t,r,n,o){if("*"===e&&"*"===t&&"*"===r.substring(n-2,n-1)&&"*"===r.substring(o+1,o+2))return!1;return!0}(n,o,c,a,l)?(e.value=c.substring(0,a-n.length)+c.substring(a,l)+c.substring(l+o.length,c.length),e.selectionStart=a-n.length,e.selectionEnd=l-n.length):(e.value=c.substring(0,a)+n+c.substring(a,l)+o+c.substring(l,c.length),e.selectionStart=a+n.length,e.selectionEnd=a+(l-a+n.length))}else alert("Error: Browser version is too low");r.d_value=e.value,e.focus()};var n="```",o="\n```\n",i="language";t.insertCodeBlock=function(e){var t=e.getTextareaDom();if(s(t)){var r=i,l=t.selectionStart,c=t.selectionEnd,u=t.value;l===c?a(r,"",t):function(e){var t=e.selectionStart,r=e.selectionEnd,i=e.value,a=n,s=o;"\n"===i.substring(t-1,t)?a+="\n":s="\n"+s;return i.substring(t-a.length,t)===a&&i.substring(r,r+s.length)===s}(t)?function(e){var t=n,r=o,a=i,s=e.selectionStart,l=e.selectionEnd,c=e.value,u=c.substring(s,l);if("\n"===c.substring(s-1,s))t+="\n";else if(t+a+(r="\n"+r)===c.substring(s-t.length,l+r.length)){var p=c.substring(0,s-t.length);return p+=c.substring(l+r.length,c.length),e.value=p,e.selectionStart=s-t.length,void(e.selectionEnd=e.selectionStart)}var d=c.substring(0,s-t.length);d+=u,d+=c.substring(l+r.length,c.length),e.value=d,e.selectionStart=s-t.length,e.selectionEnd=e.selectionStart+u.length}(t):a("",u.substring(l,c),t),e.d_value=t.value,t.focus()}else alert("Error: Browser version is too low")};function a(e,t,r){var i=n,a=o,s=r.selectionStart,l=r.selectionEnd,c=r.value,u=c.substring(0,s);u+=i+e+"\n",u+=t,u+=a,u+=c.substring(l,c.length),r.value=u,r.selectionStart=s+i.length+(e?0:1),r.selectionEnd=r.selectionStart+e.length+t.length}function s(e){return"number"==typeof e.selectionStart&&"number"==typeof e.selectionEnd}t.insertOl=function(e){var t=e.getTextareaDom();if(s(t)){var r=t.selectionStart,n=t.selectionEnd,o=t.value;if(r===n)t.value=o.substring(0,r)+"1. "+o.substring(n,o.length),t.selectionEnd=t.selectionStart=r+3;else{for(var i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;for(var a=o.substring(i,n),l=a.split("\n"),c=0;c<l.length;c++)l[c]=c+1+". "+l[c];var u=l.join("\n");t.value=o.substring(0,i)+u+o.substring(n,o.length),t.selectionStart=i,t.selectionEnd=n+u.length-a.length}}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.removeLine=function(e){var t=e.getTextareaDom();if(s(t)){for(var r=t.selectionStart,n=t.selectionEnd,o=t.value,i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;for(var a=n;a<o.length&&"\n"!==o.substring(a,a+1);)a++;a<o.length&&a++,t.value=o.substring(0,i)+o.substring(a,o.length),t.selectionEnd=t.selectionStart=0===i?0:i-1}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.insertUl=function(e){var t=e.getTextareaDom();if(s(t)){var r=t.selectionStart,n=t.selectionEnd,o=t.value;if(r===n)t.value=o.substring(0,r)+"- "+o.substring(n,o.length),t.selectionEnd=t.selectionStart=r+2;else{for(var i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;var a=o.substring(i,n),l=a.replace(/\n/g,"\n- ");l="- "+l,t.value=o.substring(0,i)+l+o.substring(n,o.length),t.selectionStart=i,t.selectionEnd=n+l.length-a.length}}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.insertTab=function(e,t){t=t?new Array(t).fill(" ").join(""):"\t";var r=e.getTextareaDom();if(s(r)){var n=r.selectionStart,o=r.selectionEnd,i=r.value,a=i.substring(0,n).split("\n").pop();if(a.match(/^\s*[0-9]+\.\s+\S*/)){var l=a.replace(/(\d+)/,1);r.value=i.substring(0,n-l.length)+t+l+i.substring(o,i.length)}else a.match(/^\s*-\s+\S*/)?r.value=i.substring(0,n-a.length)+t+a+i.substring(o,i.length):r.value=i.substring(0,n)+t+i.substring(o,i.length);r.selectionStart=r.selectionEnd=n+t.length}else alert("Error: Browser version is too low");e.d_value=r.value,r.focus()},t.unInsertTab=function(e,t){var r=new RegExp(t?"\\s{"+t+"}":"\t");console.log("regTab:",r);var n=e.getTextareaDom();if(s(n)){var o=n.selectionStart,i=n.selectionEnd,a=n.value,l=a.substring(0,o).split("\n").pop();l.search(r)>=0&&(n.value=a.substring(0,o-l.length)+l.replace(r,"")+a.substring(i,a.length),n.selectionStart=n.selectionEnd=o-(t||1))}else alert("Error: Browser version is too low");e.d_value=n.value,n.focus()},t.insertEnter=function(e,t){var r=e.getTextareaDom();if(s(r)){var n=r.selectionStart,o=r.selectionEnd,i=r.value,a=i.substring(0,n).split("\n").pop(),l=a.match(/^\s*(?:[0-9]+\.|-)\s+\S+/);if(l){t.preventDefault();var c=l.shift().match(/^\s*(?:[0-9]+\.|-)\s/).shift();if(c.search(/-/)>=0)r.value=i.substring(0,n)+"\n"+c+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n+c.length+1;else{var u=c.replace(/(\d+)/,parseInt(c)+1);r.value=i.substring(0,n)+"\n"+u+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n+u.length+1}}else{var p=a.match(/^\s*(?:[0-9]+\.|-)\s+$/);if(p){t.preventDefault();var d=p.shift().length;r.value=i.substring(0,n-d)+"\n"+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n-d}}}else alert("Error: Browser version is too low");e.d_value=r.value,r.focus()},t.getNavigation=function(e,t){var r=void 0;(r=e.$refs.navigationContent).innerHTML=e.d_render;var n=r.children;if(n.length)for(var o=0;o<n.length;o++)i(n[o],o,n);function i(t,r,n){/^H[1-6]{1}$/.exec(t.tagName)?t.onclick=function(){var t=e.$refs.vShowContent,n=e.$refs.vNoteEdit;e.s_subfield?e.s_preview_switch&&(n.scrollTop=t.children[r].offsetTop*(n.scrollHeight-n.offsetHeight)/(t.scrollHeight-t.offsetHeight)):e.s_preview_switch&&(t.scrollTop=t.children[r].offsetTop)}:t.style.display="none"}},t.scrollLink=function(e,t){var r=e.srcElement?e.srcElement:e.target,n=r.scrollTop/(r.scrollHeight-r.offsetHeight);t.edit_scroll_height>=0&&r.scrollHeight!==t.edit_scroll_height&&r.scrollHeight-r.offsetHeight-r.scrollTop<=30&&(t.$refs.vNoteEdit.scrollTop=r.scrollHeight-r.offsetHeight,n=1),t.edit_scroll_height=r.scrollHeight,t.$refs.vShowContent.scrollHeight>t.$refs.vShowContent.offsetHeight&&(t.$refs.vShowContent.scrollTop=(t.$refs.vShowContent.scrollHeight-t.$refs.vShowContent.offsetHeight)*n)},t.fullscreenchange=function(e){e.$el.addEventListener("fullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("mozfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("webkitfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("msfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1)},t.windowResize=function(e){function t(){e.$el.clientWidth>768?e.s_subfield=e.subfield:e.s_subfield=!1}t(),window.addEventListener("resize",t)};t.ImagePreviewListener=function(e){e.$refs.vShowContent.addEventListener("click",(function(t){var r=(t=t||window.event).srcElement?t.srcElement:t.target;"IMG"===r.tagName&&(null!=e.imageClick?e.imageClick(r):e.d_preview_imgsrc=r.src)}))}},function(e,t,r){var n=r(38).FilterCSS,o=r(38).getDefaultWhiteList,i=r(39);function a(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var s=new n;function l(e){return e.replace(c,"<").replace(u,">")}var c=/</g,u=/>/g,p=/"/g,d=/"/g,h=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,_=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,g=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,b=/u\s*r\s*l\s*\(.*/gi;function v(e){return e.replace(p,""")}function k(e){return e.replace(d,'"')}function w(e){return e.replace(h,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function y(e){return e.replace(f,":").replace(_," ")}function x(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return i.trim(t)}function C(e){return e=x(e=y(e=w(e=k(e))))}function j(e){return e=l(e=v(e))}t.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},t.getDefaultWhiteList=a,t.onTag=function(e,t,r){},t.onIgnoreTag=function(e,t,r){},t.onTagAttr=function(e,t,r){},t.onIgnoreTagAttr=function(e,t,r){},t.safeAttrValue=function(e,t,r,n){if(r=C(r),"href"===t||"src"===t){if("#"===(r=i.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(r))return""}else if("style"===t){if(g.lastIndex=0,g.test(r))return"";if(b.lastIndex=0,b.test(r)&&(m.lastIndex=0,m.test(r)))return"";!1!==n&&(r=(n=n||s).process(r))}return r=j(r)},t.escapeHtml=l,t.escapeQuote=v,t.unescapeQuote=k,t.escapeHtmlEntities=w,t.escapeDangerHtml5Entities=y,t.clearNonPrintableCharacter=x,t.friendlyAttrValue=C,t.escapeAttrValue=j,t.onIgnoreTagStripAll=function(){return""},t.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],o=!1;return{onIgnoreTag:function(a,s,l){if(function(t){return!!r||-1!==i.indexOf(e,t)}(a)){if(l.isClosing){var c="[/removed]",u=l.position+c.length;return n.push([!1!==o?o:l.position,u]),o=!1,c}return o||(o=l.position),"[removed]"}return t(a,s,l)},remove:function(e){var t="",r=0;return i.forEach(n,(function(n){t+=e.slice(r,n[0]),r=n[1]})),t+=e.slice(r)}}},t.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var o=e.indexOf("--\x3e",n);if(-1===o)break;r=o+3}return t},t.stripBlankChar=function(e){var t=e.split("");return(t=t.filter((function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}))).join("")},t.cssFilter=s,t.getDefaultCSSWhiteList=o},function(e,t){function r(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var n=/javascript\s*\:/gim;t.whiteList=r(),t.getDefaultWhiteList=r,t.onAttr=function(e,t,r){},t.onIgnoreAttr=function(e,t,r){},t.safeAttrValue=function(e,t){return n.test(t)?"":t}},function(e,t){e.exports={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,o;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,o=e.length;n<o;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},function(e,t,r){var n=r(39);function o(e){var t,r=n.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=n.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function i(e){return"</"===e.slice(0,2)}var a=/[^a-zA-Z0-9\\_:.-]/gim;function s(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function l(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function c(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function u(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}t.parseTag=function(e,t,r){"use strict";var n="",a=0,s=!1,l=!1,c=0,u=e.length,p="",d="";e:for(c=0;c<u;c++){var h=e.charAt(c);if(!1===s){if("<"===h){s=c;continue}}else if(!1===l){if("<"===h){n+=r(e.slice(a,c)),s=c,a=c;continue}if(">"===h||c===u-1){n+=r(e.slice(a,s)),p=o(d=e.slice(s,c+1)),n+=t(s,n.length,p,d,i(d)),a=c+1,s=!1;continue}if('"'===h||"'"===h)for(var f=1,_=e.charAt(c-f);""===_.trim()||"="===_;){if("="===_){l=h;continue e}_=e.charAt(c-++f)}}else if(h===l){l=!1;continue}}return a<u&&(n+=r(e.substr(a))),n},t.parseAttr=function(e,t){"use strict";var r=0,o=0,i=[],p=!1,d=e.length;function h(e,r){if(!((e=(e=n.trim(e)).replace(a,"").toLowerCase()).length<1)){var o=t(e,r||"");o&&i.push(o)}}for(var f=0;f<d;f++){var _,m=e.charAt(f);if(!1!==p||"="!==m)if(!1===p||f!==o)if(/\s|\n|\t/.test(m)){if(e=e.replace(/\s|\n|\t/g," "),!1===p){if(-1===(_=s(e,f))){h(n.trim(e.slice(r,f))),p=!1,r=f+1;continue}f=_-1;continue}if(-1===(_=c(e,f-1))){h(p,u(n.trim(e.slice(r,f)))),p=!1,r=f+1;continue}}else;else{if(-1===(_=e.indexOf(m,f+1)))break;h(p,n.trim(e.slice(o+1,_))),p=!1,r=(f=_)+1}else p=e.slice(r,f),r=f+1,o='"'===e.charAt(r)||"'"===e.charAt(r)?r:l(e,f+1)}return r<e.length&&(!1===p?h(e.slice(r)):h(p,u(n.trim(e.slice(r))))),n.trim(i.join(" "))}},function(e,t,r){"use strict";e.exports=r(140)},function(e,t,r){"use strict";e.exports.encode=r(141),e.exports.decode=r(142),e.exports.format=r(143),e.exports.parse=r(144)},function(e,t){e.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},function(e,t){e.exports=/[\0-\x1F\x7F-\x9F]/},function(e,t){e.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},function(e,t,r){"use strict";var n="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",o="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",i=new RegExp("^(?:"+n+"|"+o+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),a=new RegExp("^(?:"+n+"|"+o+")");e.exports.HTML_TAG_RE=i,e.exports.HTML_OPEN_CLOSE_TAG_RE=a},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s=[],l=t.length;for(r=0;r<l;r++)126===(o=t[r]).marker&&-1!==o.end&&(i=t[o.end],(a=e.tokens[o.token]).type="s_open",a.tag="s",a.nesting=1,a.markup="~~",a.content="",(a=e.tokens[i.token]).type="s_close",a.tag="s",a.nesting=-1,a.markup="~~",a.content="","text"===e.tokens[i.token-1].type&&"~"===e.tokens[i.token-1].content&&s.push(i.token-1));for(;s.length;){for(n=(r=s.pop())+1;n<e.tokens.length&&"s_close"===e.tokens[n].type;)n++;r!==--n&&(a=e.tokens[n],e.tokens[n]=e.tokens[r],e.tokens[r]=a)}}e.exports.tokenize=function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(126!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,length:0,jump:r,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(e,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(e,r[t].delimiters)}},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s;for(r=t.length-1;r>=0;r--)95!==(n=t[r]).marker&&42!==n.marker||-1!==n.end&&(o=t[n.end],s=r>0&&t[r-1].end===n.end+1&&t[r-1].token===n.token-1&&t[n.end+1].token===o.token+1&&t[r-1].marker===n.marker,a=String.fromCharCode(n.marker),(i=e.tokens[n.token]).type=s?"strong_open":"em_open",i.tag=s?"strong":"em",i.nesting=1,i.markup=s?a+a:a,i.content="",(i=e.tokens[o.token]).type=s?"strong_close":"em_close",i.tag=s?"strong":"em",i.nesting=-1,i.markup=s?a+a:a,i.content="",s&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}e.exports.tokenize=function(e,t){var r,n,o=e.pos,i=e.src.charCodeAt(o);if(t)return!1;if(95!==i&&42!==i)return!1;for(n=e.scanDelims(e.pos,42===i),r=0;r<n.length;r++)e.push("text","",0).content=String.fromCharCode(i),e.delimiters.push({marker:i,length:n.length,jump:r,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(e,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(e,r[t].delimiters)}},function(e,t,r){"use strict";r.r(t);var n=r(76),o=r(22);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(214);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a],["__scopeId","data-v-218640b4"]]);t.default=s},function(e,t,r){var n=r(215);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("74ee9320",n,!1,{})},function(e,t,r){"use strict";r.r(t);var n=r(77),o=r(23);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a]]);t.default=s},function(e,t,r){var n=r(218);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("4958985a",n,!1,{})},function(e,t,r){var n=r(220);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("200b97d3",n,!1,{})},function(e,t,r){"use strict";r.d(t,"a",(function(){return p}));var n=r(0);const o={class:"v-note-panel"},i=["innerHTML"],a={class:"v-note-navigation-title"},s={ref:"help"},l=["innerHTML"],c=["src"],u=["innerHTML"];function p(e,t,r,p,d,h){const f=Object(n.resolveComponent)("v-md-toolbar-left"),_=Object(n.resolveComponent)("v-md-toolbar-right"),m=Object(n.resolveComponent)("v-autoTextarea");return Object(n.openBlock)(),Object(n.createElementBlock)("div",{class:Object(n.normalizeClass)([[{fullscreen:d.s_fullScreen,shadow:r.boxShadow}],"v-note-wrapper markdown-body"]),style:Object(n.normalizeStyle)({"box-shadow":r.boxShadow?r.boxShadowStyle:""})},[Object(n.createCommentVNode)("工具栏"),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:"v-note-op",style:Object(n.normalizeStyle)({background:r.toolbarsBackground})},[Object(n.createVNode)(f,{ref:"toolbar_left",editable:r.editable,transition:r.transition,d_words:d.d_words,onToolbar_left_click:h.toolbar_left_click,onToolbar_left_addlink:h.toolbar_left_addlink,toolbars:r.toolbars,onImgAdd:h.$imgAdd,onImgDel:h.$imgDel,onImgTouch:h.$imgTouch,image_filter:r.imageFilter,class:Object(n.normalizeClass)({transition:r.transition})},{"left-toolbar-before":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"left-toolbar-before",{},void 0,!0)]),"left-toolbar-after":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"left-toolbar-after",{},void 0,!0)]),_:3},8,["editable","transition","d_words","onToolbar_left_click","onToolbar_left_addlink","toolbars","onImgAdd","onImgDel","onImgTouch","image_filter","class"]),Object(n.createVNode)(_,{ref:"toolbar_right",d_words:d.d_words,onToolbar_right_click:h.toolbar_right_click,toolbars:r.toolbars,s_subfield:d.s_subfield,s_preview_switch:d.s_preview_switch,s_fullScreen:d.s_fullScreen,s_html_code:d.s_html_code,s_navigation:d.s_navigation,class:Object(n.normalizeClass)({transition:r.transition})},{"right-toolbar-before":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"right-toolbar-before",{},void 0,!0)]),"right-toolbar-after":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"right-toolbar-after",{},void 0,!0)]),_:3},8,["d_words","onToolbar_right_click","toolbars","s_subfield","s_preview_switch","s_fullScreen","s_html_code","s_navigation","class"])],4),[[n.vShow,r.toolbarsFlag]]),Object(n.createCommentVNode)("编辑展示区域"),Object(n.createElementVNode)("div",o,[Object(n.createCommentVNode)("编辑区"),Object(n.createElementVNode)("div",{ref:"vNoteEdit",onScroll:t[1]||(t[1]=(...e)=>h.$v_edit_scroll&&h.$v_edit_scroll(...e)),class:Object(n.normalizeClass)(["v-note-edit divarea-wrapper",{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle&&!d.s_preview_switch&&!d.s_html_code,"single-edit":!d.s_preview_switch&&!d.s_html_code,"single-show":!d.s_subfield&&d.s_preview_switch||!d.s_subfield&&d.s_html_code,transition:r.transition}]),onClick:t[2]||(t[2]=(...e)=>h.textAreaFocus&&h.textAreaFocus(...e))},[Object(n.createElementVNode)("div",{class:"content-input-wrapper",style:Object(n.normalizeStyle)({"background-color":r.editorBackground})},[Object(n.createCommentVNode)(" 双栏 "),Object(n.createVNode)(m,{ref:"vNoteTextarea",placeholder:r.placeholder?r.placeholder:d.d_words.start_editor,class:"content-input",fontSize:r.fontSize,lineHeight:"1.5",modelValue:d.d_value,"onUpdate:modelValue":t[0]||(t[0]=e=>d.d_value=e),fullHeight:"",style:Object(n.normalizeStyle)({"background-color":r.editorBackground})},null,8,["placeholder","fontSize","modelValue","style"])],4)],34),Object(n.createCommentVNode)("展示区"),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{"single-show":!d.s_subfield&&d.s_preview_switch||!d.s_subfield&&d.s_html_code},"v-note-show"])},[Object(n.withDirectives)(Object(n.createElementVNode)("div",{ref:"vShowContent",innerHTML:d.d_render,class:Object(n.normalizeClass)([{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle},"v-show-content"]),style:Object(n.normalizeStyle)({"background-color":r.previewBackground})},null,14,i),[[n.vShow,!d.s_html_code]]),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle},"v-show-content-html"]),style:Object(n.normalizeStyle)({"background-color":r.previewBackground})},Object(n.toDisplayString)(d.d_render),7),[[n.vShow,d.s_html_code]])],2),[[n.vShow,d.s_preview_switch||d.s_html_code]]),Object(n.createCommentVNode)("标题导航"),Object(n.createVNode)(n.Transition,{name:"slideTop",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["v-note-navigation-wrapper",{transition:r.transition}])},[Object(n.createElementVNode)("div",a,[Object(n.createTextVNode)(Object(n.toDisplayString)(d.d_words.navigation_title),1),Object(n.createElementVNode)("i",{onClick:t[3]||(t[3]=e=>h.toolbar_right_click("navigation")),class:"fa fa-mavon-times v-note-navigation-close","aria-hidden":"true"})]),Object(n.createElementVNode)("div",{ref:"navigationContent",class:Object(n.normalizeClass)(["v-note-navigation-content",{"scroll-style":d.s_scrollStyle}])},null,2)],2),[[n.vShow,d.s_navigation]])]),_:1})]),Object(n.createCommentVNode)("帮助文档"),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[Object(n.createElementVNode)("div",s,[d.s_help?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,onClick:t[5]||(t[5]=Object(n.withModifiers)(e=>h.toolbar_right_click("help"),["self"])),class:"v-note-help-wrapper"},[Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["v-note-help-content markdown-body",{shadow:r.boxShadow}])},[Object(n.createElementVNode)("i",{onClick:t[4]||(t[4]=Object(n.withModifiers)(e=>h.toolbar_right_click("help"),["stop","prevent"])),class:"fa fa-mavon-times","aria-hidden":"true"}),Object(n.createElementVNode)("div",{class:"scroll-style v-note-help-show",innerHTML:d.d_help},null,8,l)],2)])):Object(n.createCommentVNode)("v-if",!0)],512)]),_:1}),Object(n.createCommentVNode)(" 预览图片 "),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[d.d_preview_imgsrc?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,onClick:t[6]||(t[6]=e=>d.d_preview_imgsrc=null),class:"v-note-img-wrapper"},[Object(n.createElementVNode)("img",{src:d.d_preview_imgsrc,alt:"none"},null,8,c)])):Object(n.createCommentVNode)("v-if",!0)]),_:1}),Object(n.createCommentVNode)("阅读模式"),Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{show:d.s_readmodel},"v-note-read-model scroll-style"]),ref:"vReadModel"},[Object(n.createElementVNode)("div",{ref:"vNoteReadContent",class:"v-note-read-content",innerHTML:d.d_render},null,8,u)],2)],6)}},function(e,t,r){"use strict";r.d(t,"a",(function(){return R}));var n=r(0);const o={class:"v-left-item"},i=["disabled","title"],a=["disabled","title"],s=["disabled","title"],l={key:3,class:"op-icon-divider"},c=["disabled","title"],u=["disabled","title"],p=["disabled","title"],d=["disabled","title"],h=["disabled","title"],f=["disabled","title"],_=["disabled","title"],m=["disabled","title"],g={key:12,class:"op-icon-divider"},b=["disabled","title"],v=["disabled","title"],k=["disabled","title"],w={key:16,class:"op-icon-divider"},y=["disabled","title"],x=["disabled"],C={class:"dropdown-item",style:{overflow:"hidden"}},j=["title","onClick"],O=["onClick","title"],S=["src"],E=["disabled","title"],T=["disabled","title"],A={key:21,class:"op-icon-divider"},D=["title"],L=["title"],q=["title"],z=["title"],$={key:0,class:"add-image-link-wrapper"},M={class:"add-image-link"},F={class:"title"},N={class:"link-text input-wrapper"},B=["placeholder"],I={class:"link-addr input-wrapper"},V=["placeholder"];function R(e,t,r,R,H,P){return Object(n.openBlock)(),Object(n.createElementBlock)("div",o,[Object(n.renderSlot)(e.$slots,"left-toolbar-before",{},void 0,!0),r.toolbars.bold?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:0,disabled:!r.editable,type:"button",onClick:t[0]||(t[0]=e=>P.$clicks("bold")),class:"op-icon fa fa-mavon-bold","aria-hidden":"true",title:r.d_words.tl_bold+" (ctrl+b)"},null,8,i)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.italic?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:1,disabled:!r.editable,type:"button",onClick:t[1]||(t[1]=e=>P.$clicks("italic")),class:"op-icon fa fa-mavon-italic","aria-hidden":"true",title:r.d_words.tl_italic+" (ctrl+i)"},null,8,a)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.header?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:2,class:Object(n.normalizeClass)([{selected:H.s_header_dropdown_open},"op-icon fa fa-mavon-header dropdown dropdown-wrapper"]),disabled:!r.editable,type:"button",onMouseleave:t[10]||(t[10]=(...e)=>P.$mouseleave_header_dropdown&&P.$mouseleave_header_dropdown(...e)),onMouseenter:t[11]||(t[11]=(...e)=>P.$mouseenter_header_dropdown&&P.$mouseenter_header_dropdown(...e)),"aria-hidden":"true",title:r.d_words.tl_header+" (ctrl+h)"},[Object(n.createVNode)(n.Transition,{name:"fade",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["op-header popup-dropdown",{transition:r.transition}]),onMouseenter:t[8]||(t[8]=(...e)=>P.$mouseenter_header_dropdown&&P.$mouseenter_header_dropdown(...e)),onMouseleave:t[9]||(t[9]=(...e)=>P.$mouseleave_header_dropdown&&P.$mouseleave_header_dropdown(...e))},[Object(n.createElementVNode)("div",{title:"#",class:"dropdown-item",onClick:t[2]||(t[2]=Object(n.withModifiers)(e=>P.$click_header("header1"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_one),1)]),Object(n.createElementVNode)("div",{title:"## ",class:"dropdown-item",onClick:t[3]||(t[3]=Object(n.withModifiers)(e=>P.$click_header("header2"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_two),1)]),Object(n.createElementVNode)("div",{title:"### ",class:"dropdown-item",onClick:t[4]||(t[4]=Object(n.withModifiers)(e=>P.$click_header("header3"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_three),1)]),Object(n.createElementVNode)("div",{title:"#### ",class:"dropdown-item",onClick:t[5]||(t[5]=Object(n.withModifiers)(e=>P.$click_header("header4"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_four),1)]),Object(n.createElementVNode)("div",{title:"##### ",class:"dropdown-item",onClick:t[6]||(t[6]=Object(n.withModifiers)(e=>P.$click_header("header5"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_five),1)]),Object(n.createElementVNode)("div",{title:"###### ",class:"dropdown-item",onClick:t[7]||(t[7]=Object(n.withModifiers)(e=>P.$click_header("header6"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_six),1)])],34),[[n.vShow,H.s_header_dropdown_open]])]),_:1})],42,s)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.header||r.toolbars.italic||r.toolbars.bold?(Object(n.openBlock)(),Object(n.createElementBlock)("span",l)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.underline?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:4,disabled:!r.editable,type:"button",onClick:t[12]||(t[12]=e=>P.$clicks("underline")),class:"op-icon fa fa-mavon-underline",title:r.d_words.tl_underline+" (ctrl+u)","aria-hidden":"true"},null,8,c)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.strikethrough?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:5,disabled:!r.editable,type:"button",onClick:t[13]||(t[13]=e=>P.$clicks("strikethrough")),class:"op-icon fa fa-mavon-strikethrough",title:r.d_words.tl_strikethrough+" (ctrl+shift+d)","aria-hidden":"true"},null,8,u)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.mark?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:6,disabled:!r.editable,type:"button",onClick:t[14]||(t[14]=e=>P.$clicks("mark")),class:"op-icon fa fa-mavon-thumb-tack",title:r.d_words.tl_mark+" (ctrl+m)","aria-hidden":"true"},null,8,p)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.superscript?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:7,disabled:!r.editable,type:"button",onClick:t[15]||(t[15]=e=>P.$clicks("superscript")),class:"op-icon fa fa-mavon-superscript","aria-hidden":"true",title:r.d_words.tl_superscript+" (ctrl+alt+s)"},null,8,d)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.subscript?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:8,disabled:!r.editable,type:"button",onClick:t[16]||(t[16]=e=>P.$clicks("subscript")),class:"op-icon fa fa-mavon-subscript","aria-hidden":"true",title:r.d_words.tl_subscript+" (ctrl+shift+s)"},null,8,h)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.alignleft?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:9,disabled:!r.editable,type:"button",onClick:t[17]||(t[17]=e=>P.$clicks("alignleft")),class:"op-icon fa fa-mavon-align-left","aria-hidden":"true",title:r.d_words.tl_alignleft+" (ctrl+l)"},null,8,f)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.aligncenter?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:10,disabled:!r.editable,type:"button",onClick:t[18]||(t[18]=e=>P.$clicks("aligncenter")),class:"op-icon fa fa-mavon-align-center","aria-hidden":"true",title:r.d_words.tl_aligncenter+" (ctrl+e)"},null,8,_)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.alignright?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:11,disabled:!r.editable,type:"button",onClick:t[19]||(t[19]=e=>P.$clicks("alignright")),class:"op-icon fa fa-mavon-align-right","aria-hidden":"true",title:r.d_words.tl_alignright+" (ctrl+r)"},null,8,m)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.superscript||r.toolbars.subscript||r.toolbars.underline||r.toolbars.strikethrough||r.toolbars.mark?(Object(n.openBlock)(),Object(n.createElementBlock)("span",g)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.quote?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:13,disabled:!r.editable,type:"button",onClick:t[20]||(t[20]=e=>P.$clicks("quote")),class:"op-icon fa fa-mavon-quote-left","aria-hidden":"true",title:r.d_words.tl_quote+" (ctrl+q)"},null,8,b)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ol?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:14,disabled:!r.editable,type:"button",onClick:t[21]||(t[21]=e=>P.$clicks("ol")),class:"op-icon fa fa-mavon-list-ol","aria-hidden":"true",title:r.d_words.tl_ol+" (ctrl+o)"},null,8,v)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ul?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:15,disabled:!r.editable,type:"button",onClick:t[22]||(t[22]=e=>P.$clicks("ul")),class:"op-icon fa fa-mavon-list-ul","aria-hidden":"true",title:r.d_words.tl_ul+" (ctrl+alt+u)"},null,8,k)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ul||r.toolbars.ol||r.toolbars.quote?(Object(n.openBlock)(),Object(n.createElementBlock)("span",w)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.link?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:17,disabled:!r.editable,type:"button",onClick:t[23]||(t[23]=Object(n.withModifiers)(e=>P.$toggle_imgLinkAdd("link"),["stop"])),class:"op-icon fa fa-mavon-link","aria-hidden":"true",title:r.d_words.tl_link+" (ctrl+l)"},null,8,y)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.imagelink?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:18,disabled:!r.editable,class:Object(n.normalizeClass)([{selected:H.s_img_dropdown_open},"op-icon fa fa-mavon-picture-o dropdown dropdown-wrapper"]),type:"button",onMouseleave:t[28]||(t[28]=(...e)=>P.$mouseleave_img_dropdown&&P.$mouseleave_img_dropdown(...e)),onMouseenter:t[29]||(t[29]=(...e)=>P.$mouseenter_img_dropdown&&P.$mouseenter_img_dropdown(...e)),"aria-hidden":"true"},[Object(n.createVNode)(n.Transition,{name:"fade",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["op-image popup-dropdown",{transition:r.transition}]),onMouseleave:t[26]||(t[26]=(...e)=>P.$mouseleave_img_dropdown&&P.$mouseleave_img_dropdown(...e)),onMouseenter:t[27]||(t[27]=(...e)=>P.$mouseenter_img_dropdown&&P.$mouseenter_img_dropdown(...e))},[Object(n.createElementVNode)("div",{class:"dropdown-item",onClick:t[24]||(t[24]=Object(n.withModifiers)(e=>P.$toggle_imgLinkAdd("imagelink"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_image),1)]),Object(n.createElementVNode)("div",C,[Object(n.createElementVNode)("input",{type:"file",accept:"image/gif,image/jpeg,image/jpg,image/png,image/svg",onChange:t[25]||(t[25]=e=>P.$imgAdd(e)),multiple:"multiple"},null,32),Object(n.createTextVNode)(Object(n.toDisplayString)(r.d_words.tl_upload),1)]),(Object(n.openBlock)(!0),Object(n.createElementBlock)(n.Fragment,null,Object(n.renderList)(H.img_file,(e,t)=>(Object(n.openBlock)(),Object(n.createElementBlock)(n.Fragment,{key:t},[e&&e[1]?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,class:"dropdown-item dropdown-images",title:e[1].name,onClick:Object(n.withModifiers)(e=>P.$imgFileListClick(t),["stop"])},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(e[1].name),1),Object(n.createElementVNode)("button",{type:"button",onClick:Object(n.withModifiers)(e=>P.$imgDel(t),["stop"]),class:"op-icon fa fa-mavon-times","aria-hidden":"true",title:r.d_words.tl_upload_remove},null,8,O),Object(n.createCommentVNode)(" 缩略图展示 "),Object(n.createElementVNode)("img",{class:Object(n.normalizeClass)(["image-show",{transition:r.transition}]),src:e[1].miniurl,alt:"none"},null,10,S)],8,j)):Object(n.createCommentVNode)("v-if",!0)],64))),128))],34),[[n.vShow,H.s_img_dropdown_open]])]),_:1})],42,x)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.code?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:19,disabled:!r.editable,type:"button",onClick:t[30]||(t[30]=e=>P.$clicks("code")),class:"op-icon fa fa-mavon-code","aria-hidden":"true",title:r.d_words.tl_code+" (ctrl+alt+c)"},null,8,E)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.table?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:20,disabled:!r.editable,type:"button",onClick:t[31]||(t[31]=e=>P.$clicks("table")),class:"op-icon fa fa-mavon-table","aria-hidden":"true",title:r.d_words.tl_table+" (ctrl+alt+t)"},null,8,T)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.link||r.toolbars.imagelink||r.toolbars.code||r.toolbars.table?(Object(n.openBlock)(),Object(n.createElementBlock)("span",A)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.undo?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:22,type:"button",onClick:t[32]||(t[32]=e=>P.$clicks("undo")),class:"op-icon fa fa-mavon-undo","aria-hidden":"true",title:r.d_words.tl_undo+" (ctrl+z)"},null,8,D)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.redo?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:23,type:"button",onClick:t[33]||(t[33]=e=>P.$clicks("redo")),class:"op-icon fa fa-mavon-repeat","aria-hidden":"true",title:r.d_words.tl_redo+" (ctrl+y)"},null,8,L)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.trash?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:24,type:"button",onClick:t[34]||(t[34]=e=>P.$clicks("trash")),class:"op-icon fa fa-mavon-trash-o","aria-hidden":"true",title:r.d_words.tl_trash+" (ctrl+breakspace)"},null,8,q)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.save?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:25,type:"button",onClick:t[35]||(t[35]=e=>P.$clicks("save")),class:"op-icon fa fa-mavon-floppy-o","aria-hidden":"true",title:r.d_words.tl_save+" (ctrl+s)"},null,8,z)):Object(n.createCommentVNode)("v-if",!0),Object(n.renderSlot)(e.$slots,"left-toolbar-after",{},void 0,!0),Object(n.createCommentVNode)(" 添加image链接 "),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[H.s_img_link_open?(Object(n.openBlock)(),Object(n.createElementBlock)("div",$,[Object(n.createElementVNode)("div",M,[Object(n.createElementVNode)("i",{onClick:t[36]||(t[36]=Object(n.withModifiers)(e=>H.s_img_link_open=!1,["stop","prevent"])),class:"fa fa-mavon-times","aria-hidden":"true"}),Object(n.createElementVNode)("h3",F,Object(n.toDisplayString)("link"==H.link_type?r.d_words.tl_popup_link_title:r.d_words.tl_popup_img_link_title),1),Object(n.createElementVNode)("div",N,[Object(n.withDirectives)(Object(n.createElementVNode)("input",{ref:"linkTextInput",type:"text","onUpdate:modelValue":t[37]||(t[37]=e=>H.link_text=e),placeholder:"link"==H.link_type?r.d_words.tl_popup_link_text:r.d_words.tl_popup_img_link_text},null,8,B),[[n.vModelText,H.link_text]])]),Object(n.createElementVNode)("div",I,[Object(n.withDirectives)(Object(n.createElementVNode)("input",{type:"text","onUpdate:modelValue":t[38]||(t[38]=e=>H.link_addr=e),placeholder:"link"==H.link_type?r.d_words.tl_popup_link_addr:r.d_words.tl_popup_img_link_addr},null,8,V),[[n.vModelText,H.link_addr]])]),Object(n.createElementVNode)("div",{class:"op-btn cancel",onClick:t[39]||(t[39]=Object(n.withModifiers)(e=>H.s_img_link_open=!1,["stop"]))},Object(n.toDisplayString)(r.d_words.tl_popup_link_cancel),1),Object(n.createElementVNode)("div",{class:"op-btn sure",onClick:t[40]||(t[40]=Object(n.withModifiers)(e=>P.$imgLinkAdd(),["stop"]))},Object(n.toDisplayString)(r.d_words.tl_popup_link_sure),1)])])):Object(n.createCommentVNode)("v-if",!0)]),_:1})])}},function(e,t,r){"use strict";r.d(t,"a",(function(){return g}));var n=r(0);const o={class:"v-right-item"},i=["title"],a=["title"],s=["title"],l=["title"],c=["title"],u=["title"],p=["title"],d=["title"],h={key:8,class:"op-icon-divider"},f=["title"],_=["title"],m=["title"];function g(e,t,r,g,b,v){return Object(n.openBlock)(),Object(n.createElementBlock)("div",o,[Object(n.renderSlot)(e.$slots,"right-toolbar-before"),r.toolbars.navigation?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:0,type:"button",onClick:t[0]||(t[0]=e=>v.$clicks("navigation")),class:"op-icon fa fa-mavon-bars","aria-hidden":"true",title:r.d_words.tl_navigation_on+" (F8)"},null,8,i)),[[n.vShow,!r.s_navigation]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.navigation?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:1,type:"button",onClick:t[1]||(t[1]=e=>v.$clicks("navigation")),class:"op-icon fa fa-mavon-bars selected","aria-hidden":"true",title:r.d_words.tl_navigation_off+" (F8)"},null,8,a)),[[n.vShow,r.s_navigation]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.preview?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:2,type:"button",onClick:t[2]||(t[2]=e=>v.$clicks("preview")),class:"op-icon fa fa-mavon-eye-slash selected","aria-hidden":"true",title:r.d_words.tl_edit+" (F9)"},null,8,s)),[[n.vShow,r.s_preview_switch]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.preview?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:3,type:"button",onClick:t[3]||(t[3]=e=>v.$clicks("preview")),class:"op-icon fa fa-mavon-eye","aria-hidden":"true",title:r.d_words.tl_preview+" (F9)"},null,8,l)),[[n.vShow,!r.s_preview_switch]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.fullscreen?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:4,type:"button",onClick:t[4]||(t[4]=e=>v.$clicks("fullscreen")),class:"op-icon fa fa-mavon-arrows-alt",title:r.d_words.tl_fullscreen_on+" (F10)","aria-hidden":"true"},null,8,c)),[[n.vShow,!r.s_fullScreen]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.fullscreen?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:5,type:"button",onClick:t[5]||(t[5]=e=>v.$clicks("fullscreen")),class:"op-icon fa fa-mavon-compress selected",title:r.d_words.tl_fullscreen_off+" (F10)","aria-hidden":"true"},null,8,u)),[[n.vShow,r.s_fullScreen]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.readmodel?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:6,type:"button",onClick:t[6]||(t[6]=e=>v.$clicks("read")),class:"op-icon fa fa-mavon-window-maximize","aria-hidden":"true",title:r.d_words.tl_read+" (F11)"},null,8,p)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.subfield?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:7,type:"button",onClick:t[7]||(t[7]=e=>v.$clicks("subfield")),class:Object(n.normalizeClass)(["op-icon fa fa-mavon-columns",{selected:r.s_subfield}]),"aria-hidden":"true",title:(r.s_subfield?r.d_words.tl_single_column:r.d_words.tl_double_column)+" (F12)"},null,10,d)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.help&&r.toolbars.htmlcode&&r.toolbars.readmodel&&r.toolbars.fullscreen&&r.toolbars.subfield&&r.toolbars.navigation?(Object(n.openBlock)(),Object(n.createElementBlock)("span",h)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.htmlcode?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:9,type:"button",onClick:t[8]||(t[8]=e=>v.$clicks("html")),class:"op-icon fa fa-mavon-code",title:r.d_words.tl_html_on,"aria-hidden":"true"},null,8,f)),[[n.vShow,!r.s_html_code]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.htmlcode?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:10,type:"button",onClick:t[9]||(t[9]=e=>v.$clicks("html")),class:"op-icon fa fa-mavon-code selected",title:r.d_words.tl_html_off,"aria-hidden":"true"},null,8,_)),[[n.vShow,r.s_html_code]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.help?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:11,type:"button",onClick:t[10]||(t[10]=e=>v.$clicks("help")),class:"op-icon fa fa-mavon-question-circle",style:{"font-size":"17px",padding:"5px 6px 5px 3px"},title:r.d_words.tl_help,"aria-hidden":"true"},null,8,m)):Object(n.createCommentVNode)("v-if",!0),Object(n.renderSlot)(e.$slots,"right-toolbar-after")])}},function(e,t,r){"use strict";r.d(t,"a",(function(){return a}));var n=r(0);const o=Object(n.createElementVNode)("br",null,null,-1),i=["autofocus","placeholder"];function a(e,t,r,a,s,l){return Object(n.openBlock)(),Object(n.createElementBlock)("div",{style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight,height:r.fullHeight?"100%":"auto"}),class:"auto-textarea-wrapper"},[Object(n.createElementVNode)("pre",{style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight,minHeight:r.fullHeight?"100%":"auto"}),class:"auto-textarea-block"},[o,Object(n.createTextVNode)(Object(n.toDisplayString)(s.temp_value)+" ",1)],4),Object(n.withDirectives)(Object(n.createElementVNode)("textarea",{ref:"vTextarea",autofocus:s.s_autofocus,onKeyup:t[0]||(t[0]=(...e)=>l.change&&l.change(...e)),spellcheck:"false",placeholder:r.placeholder,"onUpdate:modelValue":t[1]||(t[1]=e=>s.temp_value=e),style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight}),class:Object(n.normalizeClass)([{"no-border":!r.border,"no-resize":!r.resize},"auto-textarea-input"])},"\r\n ",46,i),[[n.vModelText,s.temp_value]])],4)}},function(e,t,r){"use strict";var n=r(80).default,o={markdownIt:n.mixins[0].data().markdownIt,mavonEditor:n,LeftToolbar:r(70).default,RightToolbar:r(72).default,install:function(e){e.component("mavon-editor",n)}};e.exports=o},function(e,t,r){"use strict";r.r(t);var n=r(75),o=r(21);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(219),r(221);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a],["__scopeId","data-v-33c11741"]]);t.default=s},function(e,t,r){e.exports={default:r(82),__esModule:!0}},function(e,t,r){r(83),r(95),e.exports=r(35).f("iterator")},function(e,t,r){"use strict";var n=r(84)(!0);r(45)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})}))},function(e,t,r){var n=r(26),o=r(27);e.exports=function(e){return function(t,r){var i,a,s=String(o(t)),l=n(r),c=s.length;return l<0||l>=c?e?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===c||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):i:e?s.slice(l,l+2):a-56320+(i-55296<<10)+65536}}},function(e,t,r){var n=r(86);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,r){"use strict";var n=r(50),o=r(16),i=r(34),a={};r(5)(a,r(9)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),i(e,t+" Iterator")}},function(e,t,r){var n=r(6),o=r(14),i=r(30);e.exports=r(7)?Object.defineProperties:function(e,t){o(e);for(var r,a=i(t),s=a.length,l=0;s>l;)n.f(e,r=a[l++],t[r]);return e}},function(e,t,r){var n=r(52);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t,r){var n=r(8),o=r(91),i=r(92);e.exports=function(e){return function(t,r,a){var s,l=n(t),c=o(l.length),u=i(a,c);if(e&&r!=r){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===r)return e||u||0;return!e&&-1}}},function(e,t,r){var n=r(26),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},function(e,t,r){var n=r(26),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):i(e,t)}},function(e,t,r){var n=r(2).document;e.exports=n&&n.documentElement},function(e,t,r){var n=r(4),o=r(53),i=r(31)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,r){r(96);for(var n=r(2),o=r(5),i=r(29),a=r(9)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<s.length;l++){var c=s[l],u=n[c],p=u&&u.prototype;p&&!p[a]&&o(p,a,c),i[c]=i.Array}},function(e,t,r){"use strict";var n=r(97),o=r(98),i=r(29),a=r(8);e.exports=r(45)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,r){e.exports={default:r(100),__esModule:!0}},function(e,t,r){r(101),r(107),r(108),r(109),e.exports=r(13).Symbol},function(e,t,r){"use strict";var n=r(2),o=r(4),i=r(7),a=r(46),s=r(49),l=r(102).KEY,c=r(15),u=r(32),p=r(34),d=r(17),h=r(9),f=r(35),_=r(36),m=r(103),g=r(104),b=r(14),v=r(10),k=r(53),w=r(8),y=r(28),x=r(16),C=r(50),j=r(105),O=r(106),S=r(54),E=r(6),T=r(30),A=O.f,D=E.f,L=j.f,q=n.Symbol,z=n.JSON,$=z&&z.stringify,M=h("_hidden"),F=h("toPrimitive"),N={}.propertyIsEnumerable,B=u("symbol-registry"),I=u("symbols"),V=u("op-symbols"),R=Object.prototype,H="function"==typeof q&&!!S.f,P=n.QObject,W=!P||!P.prototype||!P.prototype.findChild,U=i&&c((function(){return 7!=C(D({},"a",{get:function(){return D(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=A(R,t);n&&delete R[t],D(e,t,r),n&&e!==R&&D(R,t,n)}:D,G=function(e){var t=I[e]=C(q.prototype);return t._k=e,t},K=H&&"symbol"==typeof q.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof q},Z=function(e,t,r){return e===R&&Z(V,t,r),b(e),t=y(t,!0),b(r),o(I,t)?(r.enumerable?(o(e,M)&&e[M][t]&&(e[M][t]=!1),r=C(r,{enumerable:x(0,!1)})):(o(e,M)||D(e,M,x(1,{})),e[M][t]=!0),U(e,t,r)):D(e,t,r)},X=function(e,t){b(e);for(var r,n=m(t=w(t)),o=0,i=n.length;i>o;)Z(e,r=n[o++],t[r]);return e},J=function(e){var t=N.call(this,e=y(e,!0));return!(this===R&&o(I,e)&&!o(V,e))&&(!(t||!o(this,e)||!o(I,e)||o(this,M)&&this[M][e])||t)},Q=function(e,t){if(e=w(e),t=y(t,!0),e!==R||!o(I,t)||o(V,t)){var r=A(e,t);return!r||!o(I,t)||o(e,M)&&e[M][t]||(r.enumerable=!0),r}},Y=function(e){for(var t,r=L(w(e)),n=[],i=0;r.length>i;)o(I,t=r[i++])||t==M||t==l||n.push(t);return n},ee=function(e){for(var t,r=e===R,n=L(r?V:w(e)),i=[],a=0;n.length>a;)!o(I,t=n[a++])||r&&!o(R,t)||i.push(I[t]);return i};H||(s((q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(r){this===R&&t.call(V,r),o(this,M)&&o(this[M],e)&&(this[M][e]=!1),U(this,e,x(1,r))};return i&&W&&U(R,e,{configurable:!0,set:t}),G(e)}).prototype,"toString",(function(){return this._k})),O.f=Q,E.f=Z,r(55).f=j.f=Y,r(37).f=J,S.f=ee,i&&!r(12)&&s(R,"propertyIsEnumerable",J,!0),f.f=function(e){return G(h(e))}),a(a.G+a.W+a.F*!H,{Symbol:q});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)h(te[re++]);for(var ne=T(h.store),oe=0;ne.length>oe;)_(ne[oe++]);a(a.S+a.F*!H,"Symbol",{for:function(e){return o(B,e+="")?B[e]:B[e]=q(e)},keyFor:function(e){if(!K(e))throw TypeError(e+" is not a symbol!");for(var t in B)if(B[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),a(a.S+a.F*!H,"Object",{create:function(e,t){return void 0===t?C(e):X(C(e),t)},defineProperty:Z,defineProperties:X,getOwnPropertyDescriptor:Q,getOwnPropertyNames:Y,getOwnPropertySymbols:ee});var ie=c((function(){S.f(1)}));a(a.S+a.F*ie,"Object",{getOwnPropertySymbols:function(e){return S.f(k(e))}}),z&&a(a.S+a.F*(!H||c((function(){var e=q();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))),"JSON",{stringify:function(e){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=t=n[1],(v(t)||void 0!==e)&&!K(e))return g(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!K(t))return t}),n[1]=t,$.apply(z,n)}}),q.prototype[F]||r(5)(q.prototype,F,q.prototype.valueOf),p(q,"Symbol"),p(Math,"Math",!0),p(n.JSON,"JSON",!0)},function(e,t,r){var n=r(17)("meta"),o=r(10),i=r(4),a=r(6).f,s=0,l=Object.isExtensible||function(){return!0},c=!r(15)((function(){return l(Object.preventExtensions({}))})),u=function(e){a(e,n,{value:{i:"O"+ ++s,w:{}}})},p=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!l(e))return"F";if(!t)return"E";u(e)}return e[n].i},getWeak:function(e,t){if(!i(e,n)){if(!l(e))return!0;if(!t)return!1;u(e)}return e[n].w},onFreeze:function(e){return c&&p.NEED&&l(e)&&!i(e,n)&&u(e),e}}},function(e,t,r){var n=r(30),o=r(54),i=r(37);e.exports=function(e){var t=n(e),r=o.f;if(r)for(var a,s=r(e),l=i.f,c=0;s.length>c;)l.call(e,a=s[c++])&&t.push(a);return t}},function(e,t,r){var n=r(52);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,r){var n=r(8),o=r(55).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(n(e))}},function(e,t,r){var n=r(37),o=r(16),i=r(8),a=r(28),s=r(4),l=r(47),c=Object.getOwnPropertyDescriptor;t.f=r(7)?c:function(e,t){if(e=i(e),t=a(t,!0),l)try{return c(e,t)}catch(e){}if(s(e,t))return o(!n.f.call(e,t),e[t])}},function(e,t){},function(e,t,r){r(36)("asyncIterator")},function(e,t,r){r(36)("observable")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=119,o=120,i=121,a=122,s=123,l=66,c=73,u=72,p=85,d=68,h=77,f=81,_=79,m=76,g=83,b=90,v=89,k=67,w=84,y=82,x=8,C=9,j=13,O=97,S=98,E=99,T=100,A=101,D=102,L=49,q=50,z=51,$=52,M=53,F=54;t.keydownListen=function(e){e.shortCut&&e.$el.addEventListener("keydown",(function(t){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey)if(!t.ctrlKey&&!t.metaKey||t.altKey||t.shiftKey){if((t.ctrlKey||t.metaKey)&&t.altKey&&!t.shiftKey)switch(t.keyCode){case g:t.preventDefault(),e.toolbar_left_click("superscript");break;case p:t.preventDefault(),e.toolbar_left_click("ul");break;case m:t.preventDefault(),e.toolbar_left_click("imagelink");break;case k:t.preventDefault(),e.toolbar_left_click("code");break;case w:t.preventDefault(),e.toolbar_left_click("table")}else if((t.ctrlKey||t.metaKey)&&t.shiftKey&&!t.altKey)switch(t.keyCode){case g:t.preventDefault(),e.toolbar_left_click("subscript");break;case d:t.preventDefault(),e.toolbar_left_click("strikethrough");break;case m:t.preventDefault(),e.toolbar_left_click("alignleft");break;case y:t.preventDefault(),e.toolbar_left_click("alignright");break;case k:t.preventDefault(),e.toolbar_left_click("aligncenter")}else if(!t.ctrlKey&&!t.metaKey&&t.shiftKey&&!t.altKey)switch(t.keyCode){case C:e.$refs.toolbar_left.s_img_link_open||(t.preventDefault(),e.unInsertTab())}}else switch(t.keyCode){case l:t.preventDefault(),e.toolbar_left_click("bold");break;case c:t.preventDefault(),e.toolbar_left_click("italic");break;case u:t.preventDefault(),e.toolbar_left_click("header");break;case p:t.preventDefault(),e.toolbar_left_click("underline");break;case d:t.preventDefault(),e.toolbar_left_click("removeLine");break;case h:t.preventDefault(),e.toolbar_left_click("mark");break;case f:t.preventDefault(),e.toolbar_left_click("quote");break;case _:t.preventDefault(),e.toolbar_left_click("ol");break;case m:t.preventDefault(),e.toolbar_left_click("link");break;case g:t.preventDefault(),e.toolbar_left_click("save");break;case b:t.preventDefault(),e.toolbar_left_click("undo");break;case v:t.preventDefault(),e.toolbar_left_click("redo");break;case x:t.preventDefault(),e.toolbar_left_click("trash");break;case O:t.preventDefault(),e.toolbar_left_click("header1");break;case S:t.preventDefault(),e.toolbar_left_click("header2");break;case E:t.preventDefault(),e.toolbar_left_click("header3");break;case T:t.preventDefault(),e.toolbar_left_click("header4");break;case A:t.preventDefault(),e.toolbar_left_click("header5");break;case D:t.preventDefault(),e.toolbar_left_click("header6");break;case L:t.preventDefault(),e.toolbar_left_click("header1");break;case q:t.preventDefault(),e.toolbar_left_click("header2");break;case z:t.preventDefault(),e.toolbar_left_click("header3");break;case $:t.preventDefault(),e.toolbar_left_click("header4");break;case M:t.preventDefault(),e.toolbar_left_click("header5");break;case F:t.preventDefault(),e.toolbar_left_click("header6")}else switch(t.keyCode){case n:e.toolbars.navigation&&(t.preventDefault(),e.toolbar_right_click("navigation"));break;case o:e.toolbars.preview&&(t.preventDefault(),e.toolbar_right_click("preview"));break;case i:e.toolbars.fullscreen&&(t.preventDefault(),e.toolbar_right_click("fullscreen"));break;case a:e.toolbars.readmodel&&(t.preventDefault(),e.toolbar_right_click("read"));break;case s:e.toolbars.subfield&&(t.preventDefault(),e.toolbar_right_click("subfield"));break;case C:e.$refs.toolbar_left.s_img_link_open||(t.preventDefault(),e.insertTab());break;case j:e.$refs.toolbar_left.s_img_link_open?(t.preventDefault(),e.$refs.toolbar_left.$imgLinkAdd()):e.insertEnter(t)}}))}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={agate:1,androidstudio:1,"arduino-light":1,arta:1,ascetic:1,"atom-one-dark":1,"atom-one-light":1,"brown-paper":1,"codepen-embed":1,"color-brewer":1,dark:1,default:1,docco:1,far:1,foundation:1,github:1,googlecode:1,grayscale:1,hybrid:1,idea:1,"ir-black":1,magula:1,"mono-blue":1,"monokai-sublime":1,monokai:1,obsidian:1,"paraiso-dark":1,"paraiso-light":1,pojoaque:1,purebasic:1,rainbow:1,routeros:1,"school-book":1,sunburst:1,"tomorrow-night-blue":1,"tomorrow-night-bright":1,vs:1,vs2015:1,xcode:1,xt256:1,"a11y-dark":1,"a11y-light":1,"an-old-hope":1,"atom-one-dark-reasonable":1,"brown-pap":1,devibeans:1,"github-dark":1,"github-dark-dimmed":1,gml:1,"gradient-dark":1,"gradient-light":1,"isbl-editor-dark":1,"isbl-editor-light":1,"kimbie-dark":1,"kimbie-light":1,lightfair:1,lioshi:1,"night-owl":1,"nnfx-dark":1,"nnfx-light":1,nord:1,pojo:1,"qtcreator-dark":1,"qtcreator-light":1,"shades-of-purple":1,srcery:1,"stackoverflow-dark":1,"stackoverflow-light":1}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=r(25),i=(n=o)&&n.__esModule?n:{default:n};t.p_ObjectCopy_DEEP=function e(t,r){for(var n in r){var o=(0,i.default)(r[n]);!t[n]||"Object"!==o&&"object"!==o?t[n]=r[n]:t[n]=e(t[n],r[n])}return t},t.p_urlParse=function(){var e=window.location.search,t={},r=e.match(/[?&][^?&]+=[^?&]+/g);r&&r.forEach((function(e){var r=e.substring(1).split("="),n=decodeURIComponent(r[0]),o=decodeURIComponent(r[1]);t[n]=o}));return t},t.stopEvent=function(e){if(!e)return;e.preventDefault&&e.preventDefault();e.stopPropagation&&e.stopPropagation()}},function(e,t,r){"use strict";function n(e){e.d_history_index>0&&e.d_history_index--,e.$nextTick((function(){var t=e.textarea_selectionEnds[e.d_history_index];e.getTextareaDom().selectionStart=t,e.getTextareaDom().selectionEnd=t})),e.getTextareaDom().focus()}function o(e){e.d_history_index<e.d_history.length-1&&e.d_history_index++,e.$nextTick((function(){var t=e.textarea_selectionEnds[e.d_history_index];e.getTextareaDom().selectionStart=t,e.getTextareaDom().selectionEnd=t})),e.getTextareaDom().focus()}function i(e){e.d_value="",e.getTextareaDom().focus()}function a(e){e.save(e.d_value,e.d_render)}function s(e){e.insertOl()}function l(e){e.insertUl()}function c(e){e.removeLine()}function u(e){e.insertCodeBlock()}Object.defineProperty(t,"__esModule",{value:!0});t.toolbar_left_addlink=function(e,t,r,n){var o={prefix:"link"===e?"["+t+"](":"",str:r};n.insertText(n.getTextareaDom(),o)},t.toolbar_left_click=function(e,t){var r={bold:{prefix:"**",subfix:"**",str:t.d_words.tl_bold},italic:{prefix:"*",subfix:"*",str:t.d_words.tl_italic},header:{prefix:"# ",subfix:"",str:t.d_words.tl_header},header1:{prefix:"# ",subfix:"",str:t.d_words.tl_header_one},header2:{prefix:"## ",subfix:"",str:t.d_words.tl_header_two},header3:{prefix:"### ",subfix:"",str:t.d_words.tl_header_three},header4:{prefix:"#### ",subfix:"",str:t.d_words.tl_header_four},header5:{prefix:"##### ",subfix:"",str:t.d_words.tl_header_five},header6:{prefix:"###### ",subfix:"",str:t.d_words.tl_header_six},underline:{prefix:"++",subfix:"++",str:t.d_words.tl_underline},strikethrough:{prefix:"~~",subfix:"~~",str:t.d_words.tl_strikethrough},mark:{prefix:"==",subfix:"==",str:t.d_words.tl_mark},superscript:{prefix:"^",subfix:"^",str:t.d_words.tl_superscript},subscript:{prefix:"~",subfix:"~",str:t.d_words.tl_subscript},quote:{prefix:"> ",subfix:"",str:t.d_words.tl_quote},link:{prefix:"[](",subfix:")",str:t.d_words.tl_link},imagelink:{prefix:"",str:t.d_words.tl_image},table:{prefix:"",subfix:"",str:"|column1|column2|column3|\n|-|-|-|\n|content1|content2|content3|\n"},aligncenter:{prefix:"::: hljs-center\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_aligncenter},alignright:{prefix:"::: hljs-right\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_alignright},alignleft:{prefix:"::: hljs-left\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_alignleft}};r.hasOwnProperty(e)&&t.insertText(t.getTextareaDom(),r[e]);var p={undo:n,redo:o,trash:i,save:a,ol:s,ul:l,removeLine:c,code:u};p.hasOwnProperty(e)&&p[e](t)}},function(e,t,r){"use strict";function n(e){e.s_html_code=!e.s_html_code,e.htmlcode&&e.htmlcode(e.s_html_code,e.d_value)}function o(e){e.s_help=!e.s_help,e.helptoggle&&e.helptoggle(e.s_help,e.d_value)}function i(e){var t=e.$refs.vReadModel;t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()}function a(e){e.s_preview_switch=!e.s_preview_switch,e.previewtoggle&&e.previewtoggle(e.s_preview_switch,e.d_value)}function s(e){e.s_fullScreen=!e.s_fullScreen,e.fullscreen&&e.fullscreen(e.s_fullScreen,e.d_value)}function l(e){e.s_subfield=!e.s_subfield,e.s_preview_switch=e.s_subfield,e.previewtoggle&&e.previewtoggle(e.s_preview_switch,e.d_value),e.subfieldtoggle&&e.subfieldtoggle(e.s_subfield,e.d_value)}function c(e){e.s_navigation=!e.s_navigation,e.s_navigation&&(e.s_preview_switch=!0),e.navigationtoggle&&e.navigationtoggle(e.s_navigation,e.d_value),e.s_navigation&&e.getNavigation(e,!1)}Object.defineProperty(t,"__esModule",{value:!0});t.toolbar_right_click=function(e,t){var r={help:o,html:n,read:i,preview:a,fullscreen:s,navigation:c,subfield:l};r.hasOwnProperty(e)&&r[e](t)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CONFIG=void 0;var n=v(r(116)),o=v(r(117)),i=v(r(118)),a=v(r(119)),s=v(r(120)),l=v(r(121)),c=v(r(122)),u=v(r(123)),p=v(r(124)),d=v(r(125)),h=v(r(126)),f=v(r(127)),_=v(r(128)),m=v(r(129)),g=v(r(130)),b=v(r(131));function v(e){return e&&e.__esModule?e:{default:e}}t.CONFIG={"help_zh-CN":n.default,"help_zh-TW":o.default,"help_pt-BR":s.default,help_en:i.default,help_fr:a.default,help_ru:l.default,help_de:c.default,help_ja:u.default,"words_zh-CN":p.default,"words_zh-TW":d.default,"words_pt-BR":_.default,words_en:h.default,words_fr:f.default,words_ru:m.default,words_de:g.default,words_ja:b.default,langList:["en","zh-CN","zh-TW","fr","pt-BR","ru","de","ja"],toolbars:{bold:!0,italic:!0,header:!0,underline:!0,strikethrough:!0,mark:!0,superscript:!0,subscript:!0,quote:!0,ol:!0,ul:!0,link:!0,imagelink:!0,code:!0,table:!0,undo:!0,redo:!0,trash:!0,save:!0,alignleft:!0,aligncenter:!0,alignright:!0,navigation:!0,subfield:!0,fullscreen:!0,readmodel:!0,htmlcode:!0,help:!0,preview:!0}}},function(e,t){e.exports='@[toc](目录)\r\n\r\nMarkdown 语法简介\r\n=============\r\n> [语法详解](http://commonmark.org/help/)\r\n\r\n## **目录**\r\n```\r\n@[toc](目录)\r\n```\r\n\r\n## **粗体**\r\n```\r\n**粗体**\r\n__粗体__\r\n```\r\n## *斜体*\r\n```\r\n*斜体*\r\n_斜体_\r\n```\r\n## 标题\r\n```\r\n# 一级标题 #\r\n一级标题\r\n====\r\n## 二级标题 ##\r\n二级标题\r\n----\r\n### 三级标题 ###\r\n#### 四级标题 ####\r\n##### 五级标题 #####\r\n###### 六级标题 ######\r\n```\r\n## 分割线\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上^角~下~标\r\n```\r\n上角标 x^2^\r\n下角标 H~2~0\r\n```\r\n## ++下划线++ ~~中划线~~\r\n```\r\n++下划线++\r\n~~中划线~~\r\n```\r\n## ==标记==\r\n```\r\n==标记==\r\n```\r\n## 段落引用\r\n```\r\n> 一级\r\n>> 二级\r\n>>> 三级\r\n...\r\n```\r\n\r\n## 列表\r\n```\r\n有序列表\r\n1.\r\n2.\r\n3.\r\n...\r\n无序列表\r\n-\r\n-\r\n...\r\n```\r\n\r\n## 任务列表\r\n\r\n- [x] 已完成任务\r\n- [ ] 未完成任务\r\n\r\n```\r\n- [x] 已完成任务\r\n- [ ] 未完成任务\r\n```\r\n\r\n## 链接\r\n```\r\n[链接](www.baidu.com)\r\n\r\n```\r\n## 代码段落\r\n\\``` type\r\n\r\n代码段落\r\n\r\n\\```\r\n\r\n\\` 代码块 \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n## 表格(table)\r\n```\r\n| 标题1 | 标题2 | 标题3 |\r\n| :-- | :--: | ----: |\r\n| 左对齐 | 居中 | 右对齐 |\r\n| ---------------------- | ------------- | ----------------- |\r\n```\r\n| 标题1 | 标题2 | 标题3 |\r\n| :-- | :--: | ----: |\r\n| 左对齐 | 居中 | 右对齐 |\r\n| ---------------------- | ------------- | ----------------- |\r\n## 脚注(footnote)\r\n```\r\nhello[^hello]\r\n```\r\n\r\n见底部脚注[^hello]\r\n\r\n[^hello]: 一个注脚\r\n\r\n## 表情(emoji)\r\n[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$公式\r\n\r\n我们可以渲染公式例如:$x_i + y_i = z_i$和$\\sum_{i=1}^n a_i=0$\r\n我们也可以单行渲染\r\n$$\\sum_{i=1}^n a_i=0$$\r\n具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## 布局\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`居左`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`居中`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`居右`\r\n`:::`\r\n:::\r\n\r\n## 定义\r\n\r\n术语一\r\n\r\n: 定义一\r\n\r\n包含有*行内标记*的术语二\r\n\r\n: 定义二\r\n\r\n {一些定义二的文字或代码}\r\n\r\n 定义二的第三段\r\n\r\n```\r\n术语一\r\n\r\n: 定义一\r\n\r\n包含有*行内标记*的术语二\r\n\r\n: 定义二\r\n\r\n {一些定义二的文字或代码}\r\n\r\n 定义二的第三段\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nHTML 规范由 W3C 维护\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nHTML 规范由 W3C 维护\r\n```\r\n\r\n'},function(e,t){e.exports='@[toc](目錄)\r\n\r\nMarkdown 語法簡介\r\n=============\r\n> [語法詳解](http://commonmark.org/help/)\r\n\r\n## **粗體**\r\n```\r\n**粗體**\r\n__粗體__\r\n```\r\n## *斜體*\r\n```\r\n*斜體*\r\n_斜體_\r\n```\r\n## 標題\r\n```\r\n# 一級標題 #\r\n一級標題\r\n====\r\n## 二級標題 ##\r\n二級標題\r\n----\r\n### 三級標題 ###\r\n#### 四級標題 ####\r\n##### 五級標題 #####\r\n###### 六級標題 ######\r\n```\r\n## 分割線\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上^角~下~標\r\n```\r\n上角標 x^2^\r\n下角標 H~2~0\r\n```\r\n## ++下劃線++ ~~中劃線~~\r\n```\r\n++下劃線++\r\n~~中劃線~~\r\n```\r\n## ==標記==\r\n```\r\n==標記==\r\n```\r\n## 段落引用\r\n```\r\n> 一級\r\n>> 二級\r\n>>> 三級\r\n...\r\n```\r\n\r\n## 列表\r\n```\r\n有序列表\r\n1.\r\n2.\r\n3.\r\n...\r\n無序列表\r\n-\r\n-\r\n...\r\n```\r\n\r\n## 任務列表\r\n\r\n- [x] 已完成任務\r\n- [ ] 未完成任務\r\n\r\n```\r\n- [x] 已完成任務\r\n- [ ] 未完成任務\r\n```\r\n\r\n## 鏈接\r\n```\r\n[鏈接](www.baidu.com)\r\n\r\n```\r\n## 代碼段落\r\n\\``` type\r\n\r\n代碼段落\r\n\r\n\\```\r\n\r\n\\` 代碼塊 \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n## 表格(table)\r\n```\r\n| 標題1 | 標題2 | 標題3 |\r\n| :-- | :--: | ----: |\r\n| 左對齊 | 居中 | 右對齊 |\r\n| ---------------------- | ------------- | ----------------- |\r\n```\r\n| 標題1 | 標題2 | 標題3 |\r\n| :-- | :--: | ----: |\r\n| 左對齊 | 居中 | 右對齊 |\r\n| ---------------------- | ------------- | ----------------- |\r\n## 腳註(footnote)\r\n```\r\nhello[^hello]\r\n```\r\n\r\n見底部腳註[^hello]\r\n\r\n[^hello]: 一個註腳\r\n\r\n## 表情(emoji)\r\n[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$公式\r\n\r\n我們可以渲染公式例如:$x_i + y_i = z_i$和$\\sum_{i=1}^n a_i=0$\r\n我們也可以單行渲染\r\n$$\\sum_{i=1}^n a_i=0$$\r\n具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## 布局\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`居左`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`居中`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`居右`\r\n`:::`\r\n:::\r\n\r\n## 定義\r\n\r\n術語一\r\n\r\n: 定義一\r\n\r\n包含有*行內標記*的術語二\r\n\r\n: 定義二\r\n\r\n {一些定義二的文字或代碼}\r\n\r\n 定義二的第三段\r\n\r\n```\r\n術語一\r\n\r\n: 定義一\r\n\r\n包含有*行內標記*的術語二\r\n\r\n: 定義二\r\n\r\n {一些定義二的文字或代碼}\r\n\r\n 定義二的第三段\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nHTML 規範由 W3C 維護\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nHTML 規範由 W3C 維護\r\n```\r\n\r\n'},function(e,t){e.exports='@[toc](Catalog)\r\n\r\nMarkdown Guide\r\n===\r\n> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Bold**\r\n```\r\n**bold**\r\n__bold__\r\n```\r\n## *Italic*\r\n```\r\n*italic*\r\n_italic_\r\n```\r\n## Header\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Dividing line\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Super^script & ~Sub~script\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++Underline++ & ~~Strikethrough~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==Mark==\r\n```\r\n==mark==\r\n```\r\n## Quote\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## List\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo List\r\n\r\n- [x] task 1\r\n- [ ] task 2\r\n\r\n```\r\n- [x] task 1\r\n- [ ] task 2\r\n```\r\n\r\n## Link\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n\r\n```\r\n## Code\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Table\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Footnote\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## Emojis\r\nDetailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## deflist\r\n\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Catalogue)\r\n\r\nGuide Markdown\r\n==============\r\n> Détail : [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Bold**\r\n```\r\n**bold**\r\n__bold__\r\n```\r\n## *Italic*\r\n```\r\n*italic*\r\n_italic_\r\n```\r\n## Header\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Dividing line\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Super^script & ~Sub~script\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++Underline++ & ~~Strikethrough~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==Mark==\r\n```\r\n==mark==\r\n```\r\n## Quote\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## List\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n## Link\r\n\r\n## Todo List\r\n\r\n- [x] Équipe 1\r\n- [ ] Équipe 2\r\n\r\n```\r\n- [x] Équipe 1\r\n- [ ] Équipe 2\r\n```\r\n\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n\r\n```\r\n## Code\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Table\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Footnote\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## Emojis\r\nDetailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## deflist\r\n\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Directory)\r\n\r\nGuia Markdown\r\n===\r\n> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Negrito**\r\n```\r\n**negrito**\r\n__negrito__\r\n```\r\n## *Itálico*\r\n```\r\n*itálico*\r\n_itálico_\r\n```\r\n## Cabeçalho\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Linha Divisora\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Sobre^scrito & ~Sub~scrito\r\n```\r\nsobre x^2^\r\nsub H~2~0\r\n```\r\n## ++Sublinhar++ & ~~Tachar~~\r\n```\r\n++sublinhar++\r\n~~tachar~~\r\n```\r\n## ==Marcador==\r\n```\r\n==marcador==\r\n```\r\n## Citação\r\n\r\n```\r\n> citação 1\r\n>> citação 2\r\n>>> citação 3\r\n...\r\n```\r\n\r\n## Listas\r\n```\r\nlista Numerada\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nlista com marcadores\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo Listas\r\n\r\n- [x] Tarefa 1\r\n- [ ] Tarefa 2\r\n\r\n```\r\n- [x] Tarefa 1\r\n- [ ] Tarefa 2\r\n```\r\n\r\n## Link\r\n```\r\nLink Texto\r\n[Text](www.baidu.com)\r\n\r\nLink Imagem\r\n\r\n```\r\n## Código\r\n\\``` tipo\r\n\r\nbloco de código\r\n\r\n\\```\r\n\r\n\\` código \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Tabela\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| esquerda | centro | direita |\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| esquerda | centro | direita |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Rodapé\r\n```\r\nolá[^olá]\r\n```\r\n\r\nOlhe para baixo[^olá]\r\n\r\n[^olá]: rodapé\r\n\r\n## Emojis\r\nDetalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nPodemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nPodemos também mostrar em uma única linha:\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`esquerda`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`centro`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`direita`\r\n`:::`\r\n:::\r\n\r\n## Definições\r\n\r\nTermo 1\r\n\r\n: Definição 1\r\n\r\nTermo 2 com *markup inline*\r\n\r\n: Definição 2\r\n\r\n { um pouco de código, parte da Definição 2 }\r\n\r\n Terceiro parágrafo da definição 2.\r\n\r\n```\r\nTermo 1\r\n\r\n: Definição 1\r\n\r\nTermo 2 com *markup inline*\r\n\r\n: Definição 2\r\n\r\n { um pouco de código, parte da Definição 2 }\r\n\r\n Terceiro parágrafo da definição 2.\r\n\r\n```\r\n\r\n## Abreviações\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nA especificação HTML\r\né mantida pela W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\né mantida pela W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Catalog) \r\n \r\nMarkdown помощь \r\n=== \r\n> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/) \r\n \r\n## **Полужирный** \r\n``` \r\n**Полужирный** \r\n__Полужирный__ \r\n``` \r\n## *Курсив* \r\n``` \r\n*Курсив* \r\n_Курсив_ \r\n``` \r\n## Заголовок \r\n``` \r\n# h1 # \r\nh1 \r\n==== \r\n## h2 ## \r\nh2 \r\n---- \r\n### h3 ### \r\n#### h4 #### \r\n##### h5 ##### \r\n###### h6 ###### \r\n``` \r\n## Разделительная линия \r\n``` \r\n*** \r\n--- \r\n``` \r\n**** \r\n## ^Верхний^индекс & ~Нижний~индекс \r\n``` \r\nверхний x^2^ \r\nнижний H~2~0 \r\n``` \r\n## ++Подчеркнутый++ & ~~Зачеркнутый~~ \r\n``` \r\n++Подчеркнутый++ \r\n~~Зачеркнутый~~ \r\n``` \r\n## ==Отметка== \r\n``` \r\n==Отметка== \r\n``` \r\n## Цитата \r\n \r\n``` \r\n> Цитата \r\n>> Цитата 2 \r\n>>> Цитата 3 \r\n... \r\n``` \r\n \r\n## Список \r\n``` \r\nol \r\n1. \r\n2. \r\n3. \r\n... \r\n \r\nul \r\n- \r\n- \r\n... \r\n``` \r\n \r\n## Список задач \r\n \r\n- [x] Задача 1 \r\n- [ ] Задача 2 \r\n \r\n``` \r\n- [x] Задача 1 \r\n- [ ] Задача 2 \r\n``` \r\n \r\n## Ссылка \r\n``` \r\nСсылка \r\n[Текст](www.baidu.com) \r\n \r\nСсылка изображения \r\n \r\n``` \r\n## Код \r\n\\``` type \r\n \r\ncode block \r\n \r\n\\``` \r\n \r\n\\` code \\` \r\n \r\n```c++ \r\nint main() \r\n{ \r\n printf("hello world!");} \r\n``` \r\n`code` \r\n \r\n## Таблица \r\n``` \r\n| th1 | th2 | th3 | \r\n| :-- | :--: | ----: | \r\n| left | center | right | \r\n``` \r\n| th1 | th2 | th3 | \r\n| :-- | :--: | ----: | \r\n| left | center | right | \r\n| ---------------------- | ------------- | ----------------- | \r\n## Сноска \r\n``` \r\nПривет[^Привет] \r\n``` \r\n \r\nТут что-то непонятное[^Привет] \r\n \r\n[^Привет]: А тут объяснение \r\n \r\n## Emojis \r\nПодробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) \r\n``` \r\n:laughing: \r\n:blush: \r\n:smiley: \r\n:) \r\n... \r\n``` \r\n:laughing::blush::smiley::) \r\n \r\n## $\\KaTeX$ Mathematics \r\n \r\nМожно выводить такие формулы:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$ \r\nА также в одну строку:\r\n$$\\sum_{i=1}^n a_i=0$$ \r\nПодробнее: \r\n- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)\r\n- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)\r\n- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) \r\n \r\n## Разметка\r\n \r\n::: hljs-left \r\n`::: hljs-left` \r\n`left` \r\n`:::` \r\n::: \r\n \r\n::: hljs-center \r\n`::: hljs-center` \r\n`center` \r\n`:::` \r\n::: \r\n \r\n::: hljs-right \r\n`::: hljs-right` \r\n`right` \r\n`:::` \r\n::: \r\n \r\n## Список определений\r\n \r\nТермин 1 \r\n \r\n: Определение 1 \r\n \r\nТермин 2 с использованием *разметки*\r\n \r\n: Определение 2 \r\n \r\n { Какой-нибудь код, часть определения 2 } \r\n Третий параграф определения 2. \r\n``` \r\nТермин 1 \r\n \r\n: Определение 1 \r\n \r\nТермин 2 с использованием *разметки*\r\n \r\n: Определение 2 \r\n \r\n { Какой-нибудь код, часть определения 2 } \r\n Третий параграф определения 2. \r\n``` \r\n \r\n## Сокращения\r\n*[HTML]: Hyper Text Markup Language \r\n*[W3C]: World Wide Web Consortium \r\nThe HTML specification \r\nis maintained by the W3C. \r\n``` \r\n*[HTML]: Hyper Text Markup Language \r\n*[W3C]: World Wide Web Consortium \r\nThe HTML specification \r\nis maintained by the W3C. \r\n```\r\n'},function(e,t){e.exports='@[toc](Catalog)\r\n\r\nMarkdown Handbuch\r\n===\r\n> Details: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Fett**\r\n```\r\n**fett**\r\n__fett__\r\n```\r\n## *Kursiv*\r\n```\r\n*kursiv*\r\n_kursiv_\r\n```\r\n## Überschriften\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Trennlinien\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Hoch^gestellt & ~Tief~gestellt\r\n```\r\nhochgestellt x^2^\r\ntiefgestellt H~2~0\r\n```\r\n## ++Unterstrichen++ & ~~Durchgestrichen~~\r\n```\r\n++unterstrichen++\r\n~~durchgestrichen~~\r\n```\r\n## ==Markiert==\r\n```\r\n==markiert==\r\n```\r\n## Zitat\r\n\r\n```\r\n> zitat 1\r\n>> zitat 2\r\n>>> zitat 3\r\n...\r\n```\r\n\r\n## Liste\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo Liste\r\n\r\n- [x] aufgabe 1\r\n- [ ] aufgabe 2\r\n\r\n```\r\n- [x] aufgabe 1\r\n- [ ] aufgabe 2\r\n```\r\n\r\n## Link\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nLink mit Bild\r\n\r\n```\r\n## Code\r\n\\``` Typ\r\n\r\nCodeblock\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Tabelle\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| links | mitte | rechts |\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| links | mitte | rechts |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Fußnote\r\n```\r\nhallo[^hallo]\r\n```\r\n\r\nSchau zum unteren Rand[^hallo]\r\n\r\n[^hallo]: fussnote\r\n\r\n## Emojis\r\nDetails: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematik\r\n\r\nFormeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\\sum_{i=1}^n a_i=0$\r\nFormeln können auf einer eigenen Zeile gerendert werden\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetails: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`links`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`mitte`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`rechts`\r\n`:::`\r\n:::\r\n\r\n## Liste von Definitionen\r\n\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 mit *inline markup*\r\n\r\n: Definition 2\r\n\r\n { ein wenig code, teil von Definition 2 }\r\n\r\n Dritter Absatz von Definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 mit *inline markup*\r\n\r\n: Definition 2\r\n\r\n { ein wenig code, teil von Definition 2 }\r\n\r\n Dritter Absatz von Definition 2.\r\n\r\n```\r\n\r\n## Abkürzungen\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nDie HTML Spezifikation\r\nwird gepflegt vom W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nDie HTML Spezifikation\r\nwird gepflegt vom W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](目次)\r\n\r\nMarkdown 文法ガイド\r\n===\r\n> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **太字**\r\n```\r\n**太字**\r\n__太字__\r\n```\r\n## *斜体*\r\n```\r\n*斜体*\r\n_斜体_\r\n```\r\n## 見出し\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## 横線\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上付き^文字 & ~下付き~文字\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++下線++ & ~~取り消し線~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==蛍光ペン==\r\n```\r\n==mark==\r\n```\r\n## 引用\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## リスト\r\n```\r\n番号付きリスト\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\n箇条書きリスト\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todoリスト\r\n\r\n- [x] task 1\r\n- [ ] task 2\r\n\r\n```\r\n- [x] task 1\r\n- [ ] task 2\r\n```\r\n\r\n## リンク\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n\r\n```\r\n## コード\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## 表\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :-- | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n\r\n## 脚注\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## 絵文字\r\n> Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ 数式\r\n> Detailed: [KaTeXマニュアル](http://www.intmath.com/cg5/katex-mathjax-comparison.php)、[KaTeX function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)、[LaTeXマニュアル](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$ \r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\n\r\n## レイアウト\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## 定義リスト\r\n\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n: Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n: Definition 2\r\n\r\n { some code, part of Definition 2 }\r\n\r\n Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]: World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e){e.exports=JSON.parse('{"start_editor":"开始编辑...","navigation_title":"导航目录","tl_bold":"粗体","tl_italic":"斜体","tl_header":"标题","tl_header_one":"一级标题","tl_header_two":"二级标题","tl_header_three":"三级标题","tl_header_four":"四级标题","tl_header_five":"五级标题","tl_header_six":"六级标题","tl_underline":"下划线","tl_strikethrough":"中划线","tl_mark":"标记","tl_superscript":"上角标","tl_subscript":"下角标","tl_quote":"段落引用","tl_ol":"有序列表","tl_ul":"无序列表","tl_link":"链接","tl_image":"添加图片链接","tl_code":"代码块","tl_table":"表格","tl_undo":"上一步","tl_redo":"下一步","tl_trash":"清空","tl_save":"保存","tl_navigation_on":"开启标题导航","tl_navigation_off":"关闭标题导航","tl_preview":"预览","tl_aligncenter":"居中","tl_alignleft":"居左","tl_alignright":"居右","tl_edit":"编辑","tl_single_column":"单栏","tl_double_column":"双栏","tl_fullscreen_on":"全屏编辑","tl_fullscreen_off":"退出全屏","tl_read":"沉浸式阅读","tl_html_on":"查看html文本","tl_html_off":"返回markdown文本","tl_help":"markdown语法帮助","tl_upload":"上传图片","tl_upload_remove":"删除","tl_popup_link_title":"添加链接","tl_popup_link_text":"链接描述","tl_popup_link_addr":"链接地址","tl_popup_img_link_title":"添加图片","tl_popup_img_link_text":"图片描述","tl_popup_img_link_addr":"图片链接","tl_popup_link_sure":"确定","tl_popup_link_cancel":"取消"}')},function(e){e.exports=JSON.parse('{"start_editor":"開始編輯...","navigation_title":"導航目錄","tl_bold":"粗體","tl_italic":"斜體","tl_header":"標題","tl_header_one":"一級標題","tl_header_two":"二級標題","tl_header_three":"三級標題","tl_header_four":"四級標題","tl_header_five":"五級標題","tl_header_six":"六級標題","tl_underline":"下劃線","tl_strikethrough":"中劃線","tl_mark":"標記","tl_superscript":"上角標","tl_subscript":"下角標","tl_quote":"段落引用","tl_ol":"有序列表","tl_ul":"無序列表","tl_link":"鏈接","tl_image":"添加圖片鏈接","tl_code":"代碼塊","tl_table":"表格","tl_undo":"上一步","tl_redo":"下一步","tl_trash":"清空","tl_save":"保存","tl_navigation_on":"開啟標題導航","tl_navigation_off":"關閉標題導航","tl_preview":"預覽","tl_aligncenter":"居中","tl_alignleft":"居左","tl_alignright":"居右","tl_edit":"編輯","tl_single_column":"單欄","tl_double_column":"雙欄","tl_fullscreen_on":"全屏編輯","tl_fullscreen_off":"退出全屏","tl_read":"沈浸式閱讀","tl_html_on":"查看html文本","tl_html_off":"返回markdown文本","tl_help":"markdown語法幫助","tl_upload":"上傳圖片","tl_upload_remove":"刪除","tl_popup_link_title":"添加鏈接","tl_popup_link_text":"鏈接描述","tl_popup_link_addr":"鏈接地址","tl_popup_img_link_title":"添加圖片","tl_popup_img_link_text":"圖片描述","tl_popup_img_link_addr":"圖片鏈接","tl_popup_link_sure":"確定","tl_popup_link_cancel":"取消"}')},function(e){e.exports=JSON.parse('{"start_editor":"Begin editing...","navigation_title":"Navigation","tl_bold":"Bold","tl_italic":"Italic","tl_header":"Header","tl_header_one":"Header 1","tl_header_two":"Header 2","tl_header_three":"Header 3","tl_header_four":"Header 4","tl_header_five":"Header 5","tl_header_six":"Header 6","tl_underline":"Underline","tl_strikethrough":"Strikethrough","tl_mark":"Mark","tl_superscript":"Superscript","tl_subscript":"Subscript","tl_quote":"Quote","tl_ol":"Ol","tl_ul":"Ul","tl_link":"Link","tl_image":"Image Link","tl_code":"Code","tl_table":"Table","tl_undo":"Undo","tl_redo":"Redo","tl_trash":"Trash","tl_save":"Save","tl_navigation_on":"Navigation ON","tl_navigation_off":"Navigation OFF","tl_preview":"Preview","tl_aligncenter":"Center text","tl_alignleft":"Clamp text to the left","tl_alignright":"Clamp text to the right","tl_edit":"Edit","tl_single_column":"Single Column","tl_double_column":"Double Columns","tl_fullscreen_on":"FullScreen ON","tl_fullscreen_off":"FullScreen OFF","tl_read":"Read Model","tl_html_on":"HTML ON","tl_html_off":"HTML OFF","tl_help":"Markdown Guide","tl_upload":"Upload Images","tl_upload_remove":"Remove","tl_popup_link_title":"Add Link","tl_popup_link_text":"Link text","tl_popup_link_addr":"Link address","tl_popup_img_link_title":"Add Image","tl_popup_img_link_text":"Image Text","tl_popup_img_link_addr":"Image Link","tl_popup_link_sure":"Sure","tl_popup_link_cancel":"Cancel"}')},function(e){e.exports=JSON.parse('{"start_editor":"Début d\'édition...","navigation_title":"Navigation","tl_bold":"Gras","tl_italic":"Italique","tl_header":"Entête","tl_header_one":"Entête 1","tl_header_two":"Entête 2","tl_header_three":"Entête 3","tl_header_four":"Entête 4","tl_header_five":"Entête 5","tl_header_six":"Entête 6","tl_underline":"Souligné","tl_strikethrough":"Barré","tl_mark":"Mark","tl_superscript":"Exposant","tl_subscript":"Sous-exposant","tl_quote":"Quote","tl_ol":"Liste ","tl_ul":"Puce","tl_link":"Lien","tl_image":"Image Lien","tl_code":"Code","tl_table":"Table","tl_undo":"Annuler","tl_redo":"Refaire","tl_trash":"Supprimer","tl_save":"Sauver","tl_navigation_on":"Activer la navigation","tl_navigation_off":"Désactiver le navigation","tl_preview":"Previsualisé","tl_aligncenter":"Center le texte","tl_alignleft":"Férer le texte à gauche","tl_alignright":"Férer le texte à droite","tl_edit":"Editer","tl_single_column":"Seule Colonne","tl_double_column":"Colonnes Doubles","tl_fullscreen_on":"Activer le mode plein écran","tl_fullscreen_off":"Désactiver le mode plein écran","tl_read":"Lire le modèle","tl_html_on":"Activer le mode HTML","tl_html_off":"Désactiver le mode HTML","tl_help":"Guide Markdown","tl_upload":"Télécharger les images","tl_upload_remove":"Supprimer","tl_popup_link_title":"Ajouter un lien","tl_popup_link_text":"Description","tl_popup_link_addr":"Link","tl_popup_img_link_title":"Ajouter une image","tl_popup_img_link_text":"Description","tl_popup_img_link_addr":"Link","tl_popup_link_sure":"sûr","tl_popup_link_cancel":"Annuler"}')},function(e){e.exports=JSON.parse('{"start_editor":"Começar edição...","navigation_title":"Navegação","tl_bold":"Negrito","tl_italic":"Itálico","tl_header":"Cabeçalho","tl_header_one":"Cabeçalho 1","tl_header_two":"Cabeçalho 2","tl_header_three":"Cabeçalho 3","tl_header_four":"Cabeçalho 4","tl_header_five":"Cabeçalho 5","tl_header_six":"Cabeçalho 6","tl_underline":"Sublinhar","tl_strikethrough":"Tachar","tl_mark":"Marcação","tl_superscript":"Sobrescrito","tl_subscript":"Subscrito","tl_quote":"Citação","tl_ol":"Lista Numerada","tl_ul":"Lista com marcadores","tl_link":"Link","tl_image":"Link de imagem","tl_code":"Código","tl_table":"Tabela","tl_undo":"Desfazer","tl_redo":"Refazer","tl_trash":"Lixo","tl_save":"Salvar","tl_navigation_on":"Mostrar Navegação","tl_navigation_off":"Esconder Navegação","tl_preview":"Preview","tl_aligncenter":"Alinhar no centro","tl_alignleft":"Alinhar à esquerda","tl_alignright":"Alinhar à direita","tl_edit":"Editar","tl_single_column":"Coluna Única","tl_double_column":"Duas Colunas","tl_fullscreen_on":"Ligar Tela Cheia","tl_fullscreen_off":"Desligar Tela Cheia","tl_read":"Modo de Leitura","tl_html_on":"Ligar HTML","tl_html_off":"Desligar HTML","tl_help":"Guia Markdown","tl_upload":"Upload de Imagens","tl_upload_remove":"Remover","tl_popup_link_title":"Adicionar Link","tl_popup_link_text":"Descrição","tl_popup_link_addr":"Link","tl_popup_img_link_title":"Adicionar fotos","tl_popup_img_link_text":"Descrição","tl_popup_img_link_addr":"Link","tl_popup_link_sure":"Confirmar","tl_popup_link_cancel":"Cancelar"}')},function(e){e.exports=JSON.parse('{"start_editor":"Начните редактирование...","navigation_title":"Навигация","tl_bold":"Полужирный","tl_italic":"Курсив","tl_header":"Заголовки","tl_header_one":"Заголовок 1","tl_header_two":"Заголовок 2","tl_header_three":"Заголовок 3","tl_header_four":"Заголовок 4","tl_header_five":"Заголовок 5","tl_header_six":"Заголовок 6","tl_underline":"Подчеркнутый","tl_strikethrough":"Зачеркнутый","tl_mark":"Отметка","tl_superscript":"Верхний индекс","tl_subscript":"Нижний индекс","tl_quote":"Цитата","tl_ol":"Нумерованный список","tl_ul":"Список","tl_link":"Ссылка","tl_image":"Ссылка изображения","tl_code":"Код","tl_table":"Таблица","tl_undo":"Отменить","tl_redo":"Вернуть","tl_trash":"Удалить","tl_save":"Сохранить","tl_navigation_on":"Показать навигацию","tl_navigation_off":"Скрыть навигацию","tl_preview":"Предпросмотр","tl_aligncenter":"Выровнять по центру","tl_alignleft":"Выровнять по левому краю","tl_alignright":"Выровнять по правому краю","tl_edit":"Редактор","tl_single_column":"Одно поле","tl_double_column":"Два поля","tl_fullscreen_on":"Полноэкранный режим","tl_fullscreen_off":"Выключить полноэкранный режим","tl_read":"Режим чтения","tl_html_on":"Показать HTML","tl_html_off":"Убрать HTML","tl_help":"Markdown помощь","tl_upload":"Загрузить изображение","tl_upload_remove":"Удалить","tl_popup_link_title":"Добавить ссылку","tl_popup_link_text":"Текст ссылки","tl_popup_link_addr":"Адрес ссылки","tl_popup_img_link_title":"Локальное изображение","tl_popup_img_link_text":"Текст изображения","tl_popup_img_link_addr":"Ссылка изображения","tl_popup_link_sure":"Добавить","tl_popup_link_cancel":"Отменить"}')},function(e){e.exports=JSON.parse('{"start_editor":"Bearbeitung beginnen...","navigation_title":"Navigation","tl_bold":"Fett","tl_italic":"Kursiv","tl_header":"Überschrift","tl_header_one":"Überschrift 1","tl_header_two":"Überschrift 2","tl_header_three":"Überschrift 3","tl_header_four":"Überschrift 4","tl_header_five":"Überschrift 5","tl_header_six":"Überschrift 6","tl_underline":"Unterstrichen","tl_strikethrough":"Durchgestrichen","tl_mark":"Markiert","tl_superscript":"Hochgestellt","tl_subscript":"Tiefgestellt","tl_quote":"Zitat","tl_ol":"Ol","tl_ul":"Ul","tl_link":"Link","tl_image":"Link mit Bild","tl_code":"Code","tl_table":"Tabelle","tl_undo":"Rückgängig","tl_redo":"Wiederherstellen","tl_trash":"Mülleimer","tl_save":"Speichern","tl_navigation_on":"Navigation AN","tl_navigation_off":"Navigation AUS","tl_preview":"Vorschau","tl_aligncenter":"Text zentrieren","tl_alignleft":"Nach links ausrichten","tl_alignright":"Nach rechts ausrichten","tl_edit":"Bearbeiten","tl_single_column":"Einspaltig","tl_double_column":"Zweispaltig","tl_fullscreen_on":"Vollbild AN","tl_fullscreen_off":"Vollbild AUS","tl_read":"Lesemodus","tl_html_on":"HTML AN","tl_html_off":"HTML AUS","tl_help":"Markdown Handbuch","tl_upload":"Bilder-Upload","tl_upload_remove":"Entfernen","tl_popup_link_title":"Link hinzufügen","tl_popup_link_text":"Text des Links","tl_popup_link_addr":"Linkziel","tl_popup_img_link_title":"Bild hinzufügen","tl_popup_img_link_text":"Text des Bildes","tl_popup_img_link_addr":"Link auf Bild","tl_popup_link_sure":"Ja","tl_popup_link_cancel":"Abbruch"}')},function(e){e.exports=JSON.parse('{"start_editor":"編集を始めてね!","navigation_title":"ナビゲーション","tl_bold":"太字","tl_italic":"斜体","tl_header":"見出し","tl_header_one":"見出し1","tl_header_two":"見出し2","tl_header_three":"見出し3","tl_header_four":"見出し4","tl_header_five":"見出し5","tl_header_six":"見出し6","tl_underline":"下線","tl_strikethrough":"取り消し線","tl_mark":"蛍光ペン","tl_superscript":"上付き文字","tl_subscript":"下付き文字","tl_quote":"引用","tl_ol":"番号付きリスト","tl_ul":"箇条書きリスト","tl_link":"ハイパーリンク","tl_image":"画像のリンク","tl_code":"コードの挿入","tl_table":"表の挿入","tl_undo":"戻る","tl_redo":"進む","tl_trash":"削除","tl_save":"保存","tl_navigation_on":"ナビゲーションを表示","tl_navigation_off":"ナビゲーションを非表示","tl_preview":"プレビュー","tl_aligncenter":"中央揃え","tl_alignleft":"左揃え","tl_alignright":"右揃え","tl_edit":"編集","tl_single_column":"一列","tl_double_column":"二列","tl_fullscreen_on":"全画面表示","tl_fullscreen_off":"全画面表示の終了","tl_read":"モデルの読み込み","tl_html_on":"HTMLで表示","tl_html_off":"HTML表示の終了","tl_help":"ヘルプ","tl_upload":"画像をアップロード","tl_upload_remove":"画像の削除","tl_popup_link_title":"リンクの追加","tl_popup_link_text":"リンクテキスト","tl_popup_link_addr":"リンク先のURL","tl_popup_img_link_title":"画像の追加","tl_popup_img_link_text":"画像タイトル","tl_popup_img_link_addr":"画像URL","tl_popup_link_sure":"OK","tl_popup_link_cancel":"戻る"}')},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(25));t.initMarkdown=S;var o=s(r(56)),i=r(57),a=s(r(133));function s(e){return e&&e.__esModule?e:{default:e}}var l={html:!0,xhtmlOut:!0,breaks:!0,langPrefix:"lang-",linkify:!1,typographer:!0,quotes:"“”‘’"},c=r(138),u=r(195),p=r(201),d=r(202),h=r(203),f=r(204),_=r(205),m=r(206),g=r(207),b=r(208),v=r(209),k=r(210),w=r(211),y=r(212),x=r(213),C={},j=[],O={hljs:"auto",highlighted:!0,langCheck:function(e){e&&o.default[e]&&!C[e]&&(C[e]=1,j.push(o.default[e]))}};function S(){var e=new c(l),t=e.renderer.rules.link_open||function(e,t,r,n,o){return o.renderToken(e,t,r)};return e.renderer.rules.link_open=function(e,r,n,o,i){var a=e[r].attrIndex("href");if(e[r].attrs[a][1].startsWith("#"))return t(e,r,n,o,i);var s=e[r].attrIndex("target");return s<0?e[r].attrPush(["target","_blank"]):e[r].attrs[s][1]="_blank",t(e,r,n,o,i)},e.use(w,O).use(u).use(d).use(p).use(v).use(v,"hljs-left").use(v,"hljs-center").use(v,"hljs-right").use(h).use(f).use(_).use(m).use(g).use(v).use(x).use(y).use(b).use(k),e}t.default={data:function(){return{markdownIt:null}},created:function(){this.markdownIt=S(),this.html?"object"===(0,n.default)(this.xssOptions)&&this.markdownIt.use(a.default,this.xssOptions):(this.markdownIt.set({html:!1}),this.xssOptions=!1)},mounted:function(){O.highlighted=this.ishljs},methods:{$render:function(e,t){C={},j=[];var r=this.markdownIt.render(e);this.ishljs&&j.length>0&&this.$_render(e,t,r),t(r)},$_render:function(e,t,r){for(var n=0,o=0;o<j.length;o++){var a=this.p_external_link.hljs_lang(j[o]);(0,i.loadScript)(a,(function(){(n+=1)===j.length&&(r=this.markdownIt.render(e),t(r))}))}}},watch:{ishljs:function(e){O.highlighted=e}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){e.options.html&&(o=new n.FilterXSS(t),e.core.ruler.push("mavoneditor_sanitizer",i))};var n=r(134),o=void 0;function i(e){o&&function e(t,r){for(var n=void 0,i=void 0,a=0;a<t.length;a++)-1!==r.indexOf(t[a].type)&&(n=t[a].content,i=t[a].children,t[a].content=o.process(n),i&&i.length&&n!==t[a].content&&e(i,["html_inline"]))}(e.tokens,["inline","html_block"])}},function(e,t,r){var n=r(58),o=r(61),i=r(137);function a(e,t){return new i(t).process(e)}(t=e.exports=a).filterXSS=a,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var r in o)t[r]=o[r]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)},function(e,t,r){var n=r(59),o=r(136);r(60);function i(e){return null==e}function a(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||n.whiteList,e.onAttr=e.onAttr||n.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||n.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||n.safeAttrValue,this.options=e}a.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,a=t.onIgnoreAttr,s=t.safeAttrValue;return o(e,(function(e,t,o,l,c){var u=r[o],p=!1;if(!0===u?p=u:"function"==typeof u?p=u(l):u instanceof RegExp&&(p=u.test(l)),!0!==p&&(p=!1),l=s(o,l)){var d,h={position:t,sourcePosition:e,source:c,isWhite:p};return p?i(d=n(o,l,h))?o+":"+l:d:i(d=a(o,l,h))?void 0:d}}))},e.exports=a},function(e,t,r){var n=r(60);e.exports=function(e,t){";"!==(e=n.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,o=!1,i=0,a=0,s="";function l(){if(!o){var r=n.trim(e.slice(i,a)),l=r.indexOf(":");if(-1!==l){var c=n.trim(r.slice(0,l)),u=n.trim(r.slice(l+1));if(c){var p=t(i,s.length,c,u,r);p&&(s+=p+"; ")}}}i=a+1}for(;a<r;a++){var c=e[a];if("/"===c&&"*"===e[a+1]){var u=e.indexOf("*/",a+2);if(-1===u)break;i=(a=u+1)+1,o=!1}else"("===c?o=!0:")"===c?o=!1:";"===c?o||l():"\n"===c&&l()}return n.trim(s)}},function(e,t,r){var n=r(38).FilterCSS,o=r(58),i=r(61),a=i.parseTag,s=i.parseAttr,l=r(39);function c(e){return null==e}function u(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=o.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map((function(e){return e.toLowerCase()})):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=o.whiteList,e.onTag=e.onTag||o.onTag,e.onTagAttr=e.onTagAttr||o.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||o.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||o.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||o.safeAttrValue,e.escapeHtml=e.escapeHtml||o.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new n(e.css))}u.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onTag,i=t.onIgnoreTag,u=t.onTagAttr,p=t.onIgnoreTagAttr,d=t.safeAttrValue,h=t.escapeHtml,f=this.cssFilter;t.stripBlankChar&&(e=o.stripBlankChar(e)),t.allowCommentTag||(e=o.stripCommentTag(e));var _=!1;t.stripIgnoreTagBody&&(_=o.StripTagBody(t.stripIgnoreTagBody,i),i=_.onIgnoreTag);var m=a(e,(function(e,t,o,a,_){var m={sourcePosition:e,position:t,isClosing:_,isWhite:Object.prototype.hasOwnProperty.call(r,o)},g=n(o,a,m);if(!c(g))return g;if(m.isWhite){if(m.isClosing)return"</"+o+">";var b=function(e){var t=l.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=l.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=l.trim(e.slice(0,-1))),{html:e,closing:r}}(a),v=r[o],k=s(b.html,(function(e,t){var r=-1!==l.indexOf(v,e),n=u(o,e,t,r);return c(n)?r?(t=d(o,e,t,f))?e+'="'+t+'"':e:c(n=p(o,e,t,r))?void 0:n:n}));return a="<"+o,k&&(a+=" "+k),b.closing&&(a+=" /"),a+=">"}return c(g=i(o,a,m))?h(a):g}),h);return _&&(m=_.remove(m)),m},e.exports=u},function(e,t,r){"use strict";e.exports=r(139)},function(e,t,r){"use strict";var n=r(1),o=r(147),i=r(151),a=r(152),s=r(160),l=r(174),c=r(187),u=r(63),p=r(189),d={default:r(192),zero:r(193),commonmark:r(194)},h=/^(vbscript|javascript|file|data):/,f=/^data:image\/(gif|png|jpeg|webp);/;function _(e){var t=e.trim().toLowerCase();return!h.test(t)||!!f.test(t)}var m=["http:","https:","mailto:"];function g(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toASCII(t.hostname)}catch(e){}return u.encode(u.format(t))}function b(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toUnicode(t.hostname)}catch(e){}return u.decode(u.format(t))}function v(e,t){if(!(this instanceof v))return new v(e,t);t||n.isString(e)||(t=e||{},e="default"),this.inline=new l,this.block=new s,this.core=new a,this.renderer=new i,this.linkify=new c,this.validateLink=_,this.normalizeLink=g,this.normalizeLinkText=b,this.utils=n,this.helpers=n.assign({},o),this.options={},this.configure(e),t&&this.set(t)}v.prototype.set=function(e){return n.assign(this.options,e),this},v.prototype.configure=function(e){var t,r=this;if(n.isString(e)&&!(e=d[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&r.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&r[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&r[t].ruler2.enableOnly(e.components[t].rules2)})),this},v.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.enable(e,!0))}),this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},v.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.disable(e,!0))}),this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},v.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},v.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens},v.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},v.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens},v.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=v},function(e){e.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"","InvisibleTimes":"","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"","NegativeThickSpace":"","NegativeThinSpace":"","NegativeVeryThinSpace":"","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":" ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"","zwnj":""}')},function(e,t,r){"use strict";var n={};function o(e,t,r){var i,a,s,l,c,u="";for("string"!=typeof t&&(r=t,t=o.defaultChars),void 0===r&&(r=!0),c=function(e){var t,r,o=n[e];if(o)return o;for(o=n[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?o.push(r):o.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)o[e.charCodeAt(t)]=e[t];return o}(t),i=0,a=e.length;i<a;i++)if(s=e.charCodeAt(i),r&&37===s&&i+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))u+=e.slice(i,i+3),i+=2;else if(s<128)u+=c[s];else if(s>=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1<a&&(l=e.charCodeAt(i+1))>=56320&&l<=57343){u+=encodeURIComponent(e[i]+e[i+1]),i++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[i]);return u}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",e.exports=o},function(e,t,r){"use strict";var n={};function o(e,t){var r;return"string"!=typeof t&&(t=o.defaultChars),r=function(e){var t,r,o=n[e];if(o)return o;for(o=n[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),o.push(r);for(t=0;t<e.length;t++)o[r=e.charCodeAt(t)]="%"+("0"+r.toString(16).toUpperCase()).slice(-2);return o}(t),e.replace(/(%[a-f0-9]{2})+/gi,(function(e){var t,n,o,i,a,s,l,c="";for(t=0,n=e.length;t<n;t+=3)(o=parseInt(e.slice(t+1,t+3),16))<128?c+=r[o]:192==(224&o)&&t+3<n&&128==(192&(i=parseInt(e.slice(t+4,t+6),16)))?(c+=(l=o<<6&1984|63&i)<128?"��":String.fromCharCode(l),t+=3):224==(240&o)&&t+6<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),128==(192&i)&&128==(192&a))?(c+=(l=o<<12&61440|i<<6&4032|63&a)<2048||l>=55296&&l<=57343?"���":String.fromCharCode(l),t+=6):240==(248&o)&&t+9<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),s=parseInt(e.slice(t+10,t+12),16),128==(192&i)&&128==(192&a)&&128==(192&s))?((l=o<<18&1835008|i<<12&258048|a<<6&4032|63&s)<65536||l>1114111?c+="����":(l-=65536,c+=String.fromCharCode(55296+(l>>10),56320+(1023&l))),t+=9):c+="�";return c}))}o.defaultChars=";/?:@&=+$,#",o.componentChars="",e.exports=o},function(e,t,r){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},function(e,t,r){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(s),c=["%","/","?",";","#"].concat(l),u=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},f={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,t){var r,n,i,s,l,_=e;if(_=_.trim(),!t&&1===e.split("#").length){var m=a.exec(_);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var g=o.exec(_);if(g&&(i=(g=g[0]).toLowerCase(),this.protocol=g,_=_.substr(g.length)),(t||g||_.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(l="//"===_.substr(0,2))||g&&h[g]||(_=_.substr(2),this.slashes=!0)),!h[g]&&(l||g&&!f[g])){var b,v,k=-1;for(r=0;r<u.length;r++)-1!==(s=_.indexOf(u[r]))&&(-1===k||s<k)&&(k=s);for(-1!==(v=-1===k?_.lastIndexOf("@"):_.lastIndexOf("@",k))&&(b=_.slice(0,v),_=_.slice(v+1),this.auth=b),k=-1,r=0;r<c.length;r++)-1!==(s=_.indexOf(c[r]))&&(-1===k||s<k)&&(k=s);-1===k&&(k=_.length),":"===_[k-1]&&k--;var w=_.slice(0,k);_=_.slice(k),this.parseHost(w),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y){var x=this.hostname.split(/\./);for(r=0,n=x.length;r<n;r++){var C=x[r];if(C&&!C.match(p)){for(var j="",O=0,S=C.length;O<S;O++)C.charCodeAt(O)>127?j+="x":j+=C[O];if(!j.match(p)){var E=x.slice(0,r),T=x.slice(r+1),A=C.match(d);A&&(E.push(A[1]),T.unshift(A[2])),T.length&&(_=T.join(".")+_),this.hostname=E.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var D=_.indexOf("#");-1!==D&&(this.hash=_.substr(D),_=_.slice(0,D));var L=_.indexOf("?");return-1!==L&&(this.search=_.substr(L),_=_.slice(0,L)),_&&(this.pathname=_),f[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var t=i.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,t){if(e&&e instanceof n)return e;var r=new n;return r.parse(e,t),r}},function(e,t,r){"use strict";t.Any=r(64),t.Cc=r(65),t.Cf=r(146),t.P=r(40),t.Z=r(66)},function(e,t){e.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},function(e,t,r){"use strict";t.parseLinkLabel=r(148),t.parseLinkDestination=r(149),t.parseLinkTitle=r(150)},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i,a,s=-1,l=e.posMax,c=e.pos;for(e.pos=t+1,n=1;e.pos<l;){if(93===(i=e.src.charCodeAt(e.pos))&&0===--n){o=!0;break}if(a=e.pos,e.md.inline.skipToken(e),91===i)if(a===e.pos-1)n++;else if(r)return e.pos=c,-1}return o&&(s=e.pos),e.pos=c,s}},function(e,t,r){"use strict";var n=r(1).unescapeAll;e.exports=function(e,t,r){var o,i,a=t,s={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(t)){for(t++;t<r;){if(10===(o=e.charCodeAt(t)))return s;if(62===o)return s.pos=t+1,s.str=n(e.slice(a+1,t)),s.ok=!0,s;92===o&&t+1<r?t+=2:t++}return s}for(i=0;t<r&&32!==(o=e.charCodeAt(t))&&!(o<32||127===o);)if(92===o&&t+1<r)t+=2;else{if(40===o&&i++,41===o){if(0===i)break;i--}t++}return a===t||0!==i||(s.str=n(e.slice(a,t)),s.lines=0,s.pos=t,s.ok=!0),s}},function(e,t,r){"use strict";var n=r(1).unescapeAll;e.exports=function(e,t,r){var o,i,a=0,s=t,l={ok:!1,pos:0,lines:0,str:""};if(t>=r)return l;if(34!==(i=e.charCodeAt(t))&&39!==i&&40!==i)return l;for(t++,40===i&&(i=41);t<r;){if((o=e.charCodeAt(t))===i)return l.pos=t+1,l.lines=a,l.str=n(e.slice(s+1,t)),l.ok=!0,l;10===o?a++:92===o&&t+1<r&&(t++,10===e.charCodeAt(t)&&a++),t++}return l}},function(e,t,r){"use strict";var n=r(1).assign,o=r(1).unescapeAll,i=r(1).escapeHtml,a={};function s(){this.rules=n({},a)}a.code_inline=function(e,t,r,n,o){var a=e[t];return"<code"+o.renderAttrs(a)+">"+i(e[t].content)+"</code>"},a.code_block=function(e,t,r,n,o){var a=e[t];return"<pre"+o.renderAttrs(a)+"><code>"+i(e[t].content)+"</code></pre>\n"},a.fence=function(e,t,r,n,a){var s,l,c,u,p=e[t],d=p.info?o(p.info).trim():"",h="";return d&&(h=d.split(/\s+/g)[0]),0===(s=r.highlight&&r.highlight(p.content,h)||i(p.content)).indexOf("<pre")?s+"\n":d?(l=p.attrIndex("class"),c=p.attrs?p.attrs.slice():[],l<0?c.push(["class",r.langPrefix+h]):c[l][1]+=" "+r.langPrefix+h,u={attrs:c},"<pre><code"+a.renderAttrs(u)+">"+s+"</code></pre>\n"):"<pre><code"+a.renderAttrs(p)+">"+s+"</code></pre>\n"},a.image=function(e,t,r,n,o){var i=e[t];return i.attrs[i.attrIndex("alt")][1]=o.renderInlineAsText(i.children,r,n),o.renderToken(e,t,r)},a.hardbreak=function(e,t,r){return r.xhtmlOut?"<br />\n":"<br>\n"},a.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"<br />\n":"<br>\n":"\n"},a.text=function(e,t){return i(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},s.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return"";for(n="",t=0,r=e.attrs.length;t<r;t++)n+=" "+i(e.attrs[t][0])+'="'+i(e.attrs[t][1])+'"';return n},s.prototype.renderToken=function(e,t,r){var n,o="",i=!1,a=e[t];return a.hidden?"":(a.block&&-1!==a.nesting&&t&&e[t-1].hidden&&(o+="\n"),o+=(-1===a.nesting?"</":"<")+a.tag,o+=this.renderAttrs(a),0===a.nesting&&r.xhtmlOut&&(o+=" /"),a.block&&(i=!0,1===a.nesting&&t+1<e.length&&("inline"===(n=e[t+1]).type||n.hidden||-1===n.nesting&&n.tag===a.tag)&&(i=!1)),o+=i?">\n":">")},s.prototype.renderInline=function(e,t,r){for(var n,o="",i=this.rules,a=0,s=e.length;a<s;a++)void 0!==i[n=e[a].type]?o+=i[n](e,a,t,r,this):o+=this.renderToken(e,a,t);return o},s.prototype.renderInlineAsText=function(e,t,r){for(var n="",o=0,i=e.length;o<i;o++)"text"===e[o].type?n+=e[o].content:"image"===e[o].type&&(n+=this.renderInlineAsText(e[o].children,t,r));return n},s.prototype.render=function(e,t,r){var n,o,i,a="",s=this.rules;for(n=0,o=e.length;n<o;n++)"inline"===(i=e[n].type)?a+=this.renderInline(e[n].children,t,r):void 0!==s[i]?a+=s[e[n].type](e,n,t,r,this):a+=this.renderToken(e,n,t,r);return a},e.exports=s},function(e,t,r){"use strict";var n=r(41),o=[["normalize",r(153)],["block",r(154)],["inline",r(155)],["linkify",r(156)],["replacements",r(157)],["smartquotes",r(158)]];function i(){this.ruler=new n;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1])}i.prototype.process=function(e){var t,r,n;for(t=0,r=(n=this.ruler.getRules("")).length;t<r;t++)n[t](e)},i.prototype.State=r(159),e.exports=i},function(e,t,r){"use strict";var n=/\r\n?|\n/g,o=/\0/g;e.exports=function(e){var t;t=(t=e.src.replace(n,"\n")).replace(o,"�"),e.src=t}},function(e,t,r){"use strict";e.exports=function(e){var t;e.inlineMode?((t=new e.Token("inline","",0)).content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}},function(e,t,r){"use strict";e.exports=function(e){var t,r,n,o=e.tokens;for(r=0,n=o.length;r<n;r++)"inline"===(t=o[r]).type&&e.md.inline.parse(t.content,e.md,e.env,t.children)}},function(e,t,r){"use strict";var n=r(1).arrayReplaceAt;function o(e){return/^<\/a\s*>/i.test(e)}e.exports=function(e){var t,r,i,a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w=e.tokens;if(e.md.options.linkify)for(r=0,i=w.length;r<i;r++)if("inline"===w[r].type&&e.md.linkify.pretest(w[r].content))for(_=0,t=(a=w[r].children).length-1;t>=0;t--)if("link_close"!==(l=a[t]).type){if("html_inline"===l.type&&(k=l.content,/^<a[>\s]/i.test(k)&&_>0&&_--,o(l.content)&&_++),!(_>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(p=l.content,v=e.md.linkify.match(p),c=[],f=l.level,h=0,u=0;u<v.length;u++)m=v[u].url,g=e.md.normalizeLink(m),e.md.validateLink(g)&&(b=v[u].text,b=v[u].schema?"mailto:"!==v[u].schema||/^mailto:/i.test(b)?e.md.normalizeLinkText(b):e.md.normalizeLinkText("mailto:"+b).replace(/^mailto:/,""):e.md.normalizeLinkText("http://"+b).replace(/^http:\/\//,""),(d=v[u].index)>h&&((s=new e.Token("text","",0)).content=p.slice(h,d),s.level=f,c.push(s)),(s=new e.Token("link_open","a",1)).attrs=[["href",g]],s.level=f++,s.markup="linkify",s.info="auto",c.push(s),(s=new e.Token("text","",0)).content=b,s.level=f,c.push(s),(s=new e.Token("link_close","a",-1)).level=--f,s.markup="linkify",s.info="auto",c.push(s),h=v[u].lastIndex);h<p.length&&((s=new e.Token("text","",0)).content=p.slice(h),s.level=f,c.push(s)),w[r].children=a=n(a,t,c)}}else for(t--;a[t].level!==l.level&&"link_open"!==a[t].type;)t--}},function(e,t,r){"use strict";var n=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,o=/\((c|tm|r|p)\)/i,i=/\((c|tm|r|p)\)/gi,a={c:"©",r:"®",p:"§",tm:"™"};function s(e,t){return a[t.toLowerCase()]}function l(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)"text"!==(r=e[t]).type||n||(r.content=r.content.replace(i,s)),"link_open"===r.type&&"auto"===r.info&&n--,"link_close"===r.type&&"auto"===r.info&&n++}function c(e){var t,r,o=0;for(t=e.length-1;t>=0;t--)"text"!==(r=e[t]).type||o||n.test(r.content)&&(r.content=r.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1—$2").replace(/(^|\s)--(\s|$)/gm,"$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1–$2")),"link_open"===r.type&&"auto"===r.info&&o--,"link_close"===r.type&&"auto"===r.info&&o++}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&(o.test(e.tokens[t].content)&&l(e.tokens[t].children),n.test(e.tokens[t].content)&&c(e.tokens[t].children))}},function(e,t,r){"use strict";var n=r(1).isWhiteSpace,o=r(1).isPunctChar,i=r(1).isMdAsciiPunct,a=/['"]/,s=/['"]/g;function l(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}function c(e,t){var r,a,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j,O,S;for(j=[],r=0;r<e.length;r++){for(a=e[r],h=e[r].level,x=j.length-1;x>=0&&!(j[x].level<=h);x--);if(j.length=x+1,"text"===a.type){p=0,d=(c=a.content).length;e:for(;p<d&&(s.lastIndex=p,u=s.exec(c));){if(w=y=!0,p=u.index+1,C="'"===u[0],_=32,u.index-1>=0)_=c.charCodeAt(u.index-1);else for(x=r-1;x>=0&&("softbreak"!==e[x].type&&"hardbreak"!==e[x].type);x--)if("text"===e[x].type){_=e[x].content.charCodeAt(e[x].content.length-1);break}if(m=32,p<d)m=c.charCodeAt(p);else for(x=r+1;x<e.length&&("softbreak"!==e[x].type&&"hardbreak"!==e[x].type);x++)if("text"===e[x].type){m=e[x].content.charCodeAt(0);break}if(g=i(_)||o(String.fromCharCode(_)),b=i(m)||o(String.fromCharCode(m)),v=n(_),(k=n(m))?w=!1:b&&(v||g||(w=!1)),v?y=!1:g&&(k||b||(y=!1)),34===m&&'"'===u[0]&&_>=48&&_<=57&&(y=w=!1),w&&y&&(w=!1,y=b),w||y){if(y)for(x=j.length-1;x>=0&&(f=j[x],!(j[x].level<h));x--)if(f.single===C&&j[x].level===h){f=j[x],C?(O=t.md.options.quotes[2],S=t.md.options.quotes[3]):(O=t.md.options.quotes[0],S=t.md.options.quotes[1]),a.content=l(a.content,u.index,S),e[f.token].content=l(e[f.token].content,f.pos,O),p+=S.length-1,f.token===r&&(p+=O.length-1),d=(c=a.content).length,j.length=x;continue e}w?j.push({token:r,pos:u.index,single:C,level:h}):y&&C&&(a.content=l(a.content,u.index,"’"))}else C&&(a.content=l(a.content,u.index,"’"))}}}}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&a.test(e.tokens[t].content)&&c(e.tokens[t].children,e)}},function(e,t,r){"use strict";var n=r(42);function o(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}o.prototype.Token=n,e.exports=o},function(e,t,r){"use strict";var n=r(41),o=[["table",r(161),["paragraph","reference"]],["code",r(162)],["fence",r(163),["paragraph","reference","blockquote","list"]],["blockquote",r(164),["paragraph","reference","blockquote","list"]],["hr",r(165),["paragraph","reference","blockquote","list"]],["list",r(166),["paragraph","reference","blockquote"]],["reference",r(167)],["heading",r(168),["paragraph","reference","blockquote"]],["lheading",r(169)],["html_block",r(170),["paragraph","reference","blockquote"]],["paragraph",r(172)]];function i(){this.ruler=new n;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1],{alt:(o[e][2]||[]).slice()})}i.prototype.tokenize=function(e,t,r){for(var n,o=this.ruler.getRules(""),i=o.length,a=t,s=!1,l=e.md.options.maxNesting;a<r&&(e.line=a=e.skipEmptyLines(a),!(a>=r))&&!(e.sCount[a]<e.blkIndent);){if(e.level>=l){e.line=r;break}for(n=0;n<i&&!o[n](e,a,r,!1);n++);e.tight=!s,e.isEmpty(e.line-1)&&(s=!0),(a=e.line)<r&&e.isEmpty(a)&&(s=!0,a++,e.line=a)}},i.prototype.parse=function(e,t,r,n){var o;e&&(o=new this.State(e,t,r,n),this.tokenize(o,o.line,o.lineMax))},i.prototype.State=r(173),e.exports=i},function(e,t,r){"use strict";var n=r(1).isSpace;function o(e,t){var r=e.bMarks[t]+e.blkIndent,n=e.eMarks[t];return e.src.substr(r,n-r)}function i(e){var t,r=[],n=0,o=e.length,i=0,a=0,s=!1,l=0;for(t=e.charCodeAt(n);n<o;)96===t?s?(s=!1,l=n):i%2==0&&(s=!0,l=n):124!==t||i%2!=0||s||(r.push(e.substring(a,n)),a=n+1),92===t?i++:i=0,++n===o&&s&&(s=!1,n=l+1),t=e.charCodeAt(n);return r.push(e.substring(a)),r}e.exports=function(e,t,r,a){var s,l,c,u,p,d,h,f,_,m,g,b;if(t+2>r)return!1;if(p=t+1,e.sCount[p]<e.blkIndent)return!1;if(e.sCount[p]-e.blkIndent>=4)return!1;if((c=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(s=e.src.charCodeAt(c++))&&45!==s&&58!==s)return!1;for(;c<e.eMarks[p];){if(124!==(s=e.src.charCodeAt(c))&&45!==s&&58!==s&&!n(s))return!1;c++}for(d=(l=o(e,t+1)).split("|"),_=[],u=0;u<d.length;u++){if(!(m=d[u].trim())){if(0===u||u===d.length-1)continue;return!1}if(!/^:?-+:?$/.test(m))return!1;58===m.charCodeAt(m.length-1)?_.push(58===m.charCodeAt(0)?"center":"right"):58===m.charCodeAt(0)?_.push("left"):_.push("")}if(-1===(l=o(e,t).trim()).indexOf("|"))return!1;if(e.sCount[t]-e.blkIndent>=4)return!1;if((h=(d=i(l.replace(/^\||\|$/g,""))).length)>_.length)return!1;if(a)return!0;for((f=e.push("table_open","table",1)).map=g=[t,0],(f=e.push("thead_open","thead",1)).map=[t,t+1],(f=e.push("tr_open","tr",1)).map=[t,t+1],u=0;u<d.length;u++)(f=e.push("th_open","th",1)).map=[t,t+1],_[u]&&(f.attrs=[["style","text-align:"+_[u]]]),(f=e.push("inline","",0)).content=d[u].trim(),f.map=[t,t+1],f.children=[],f=e.push("th_close","th",-1);for(f=e.push("tr_close","tr",-1),f=e.push("thead_close","thead",-1),(f=e.push("tbody_open","tbody",1)).map=b=[t+2,0],p=t+2;p<r&&!(e.sCount[p]<e.blkIndent)&&-1!==(l=o(e,p).trim()).indexOf("|")&&!(e.sCount[p]-e.blkIndent>=4);p++){for(d=i(l.replace(/^\||\|$/g,"")),f=e.push("tr_open","tr",1),u=0;u<h;u++)f=e.push("td_open","td",1),_[u]&&(f.attrs=[["style","text-align:"+_[u]]]),(f=e.push("inline","",0)).content=d[u]?d[u].trim():"",f.children=[],f=e.push("td_close","td",-1);f=e.push("tr_close","tr",-1)}return f=e.push("tbody_close","tbody",-1),f=e.push("table_close","table",-1),g[1]=b[1]=p,e.line=p,!0}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i;if(e.sCount[t]-e.blkIndent<4)return!1;for(o=n=t+1;n<r;)if(e.isEmpty(n))n++;else{if(!(e.sCount[n]-e.blkIndent>=4))break;o=++n}return e.line=o,(i=e.push("code_block","code",0)).content=e.getLines(t,o,4+e.blkIndent,!0),i.map=[t,e.line],!0}},function(e,t,r){"use strict";e.exports=function(e,t,r,n){var o,i,a,s,l,c,u,p=!1,d=e.bMarks[t]+e.tShift[t],h=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(d+3>h)return!1;if(126!==(o=e.src.charCodeAt(d))&&96!==o)return!1;if(l=d,(i=(d=e.skipChars(d,o))-l)<3)return!1;if(u=e.src.slice(l,d),a=e.src.slice(d,h),96===o&&a.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;for(s=t;!(++s>=r)&&!((d=l=e.bMarks[s]+e.tShift[s])<(h=e.eMarks[s])&&e.sCount[s]<e.blkIndent);)if(e.src.charCodeAt(d)===o&&!(e.sCount[s]-e.blkIndent>=4||(d=e.skipChars(d,o))-l<i||(d=e.skipSpaces(d))<h)){p=!0;break}return i=e.sCount[t],e.line=s+(p?1:0),(c=e.push("fence","code",0)).info=a,c.content=e.getLines(t+1,s,i,!0),c.markup=u,c.map=[t,e.line],!0}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j=e.lineMax,O=e.bMarks[t]+e.tShift[t],S=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(O++))return!1;if(o)return!0;for(l=h=e.sCount[t]+O-(e.bMarks[t]+e.tShift[t]),32===e.src.charCodeAt(O)?(O++,l++,h++,i=!1,k=!0):9===e.src.charCodeAt(O)?(k=!0,(e.bsCount[t]+h)%4==3?(O++,l++,h++,i=!1):i=!0):k=!1,f=[e.bMarks[t]],e.bMarks[t]=O;O<S&&(a=e.src.charCodeAt(O),n(a));)9===a?h+=4-(h+e.bsCount[t]+(i?1:0))%4:h++,O++;for(_=[e.bsCount[t]],e.bsCount[t]=e.sCount[t]+1+(k?1:0),u=O>=S,b=[e.sCount[t]],e.sCount[t]=h-l,v=[e.tShift[t]],e.tShift[t]=O-e.bMarks[t],y=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",C=!1,d=t+1;d<r&&(e.sCount[d]<e.blkIndent&&(C=!0),!((O=e.bMarks[d]+e.tShift[d])>=(S=e.eMarks[d])));d++)if(62!==e.src.charCodeAt(O++)||C){if(u)break;for(w=!1,s=0,c=y.length;s<c;s++)if(y[s](e,d,r,!0)){w=!0;break}if(w){e.lineMax=d,0!==e.blkIndent&&(f.push(e.bMarks[d]),_.push(e.bsCount[d]),v.push(e.tShift[d]),b.push(e.sCount[d]),e.sCount[d]-=e.blkIndent);break}f.push(e.bMarks[d]),_.push(e.bsCount[d]),v.push(e.tShift[d]),b.push(e.sCount[d]),e.sCount[d]=-1}else{for(l=h=e.sCount[d]+O-(e.bMarks[d]+e.tShift[d]),32===e.src.charCodeAt(O)?(O++,l++,h++,i=!1,k=!0):9===e.src.charCodeAt(O)?(k=!0,(e.bsCount[d]+h)%4==3?(O++,l++,h++,i=!1):i=!0):k=!1,f.push(e.bMarks[d]),e.bMarks[d]=O;O<S&&(a=e.src.charCodeAt(O),n(a));)9===a?h+=4-(h+e.bsCount[d]+(i?1:0))%4:h++,O++;u=O>=S,_.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(k?1:0),b.push(e.sCount[d]),e.sCount[d]=h-l,v.push(e.tShift[d]),e.tShift[d]=O-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(x=e.push("blockquote_open","blockquote",1)).markup=">",x.map=p=[t,0],e.md.block.tokenize(e,t,d),(x=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=j,e.parentType=g,p[1]=e.line,s=0;s<v.length;s++)e.bMarks[s+t]=f[s],e.tShift[s+t]=v[s],e.sCount[s+t]=b[s],e.bsCount[s+t]=_[s];return e.blkIndent=m,!0}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(i=e.src.charCodeAt(c++))&&45!==i&&95!==i)return!1;for(a=1;c<u;){if((s=e.src.charCodeAt(c++))!==i&&!n(s))return!1;s===i&&a++}return!(a<3)&&(o||(e.line=t+1,(l=e.push("hr","hr",0)).map=[t,e.line],l.markup=Array(a+1).join(String.fromCharCode(i))),!0)}},function(e,t,r){"use strict";var n=r(1).isSpace;function o(e,t){var r,o,i,a;return o=e.bMarks[t]+e.tShift[t],i=e.eMarks[t],42!==(r=e.src.charCodeAt(o++))&&45!==r&&43!==r||o<i&&(a=e.src.charCodeAt(o),!n(a))?-1:o}function i(e,t){var r,o=e.bMarks[t]+e.tShift[t],i=o,a=e.eMarks[t];if(i+1>=a)return-1;if((r=e.src.charCodeAt(i++))<48||r>57)return-1;for(;;){if(i>=a)return-1;if(!((r=e.src.charCodeAt(i++))>=48&&r<=57)){if(41===r||46===r)break;return-1}if(i-o>=10)return-1}return i<a&&(r=e.src.charCodeAt(i),!n(r))?-1:i}e.exports=function(e,t,r,n){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j,O,S,E,T,A,D,L,q,z=!1,$=!0;if(e.sCount[t]-e.blkIndent>=4)return!1;if(e.listIndent>=0&&e.sCount[t]-e.listIndent>=4&&e.sCount[t]<e.blkIndent)return!1;if(n&&"paragraph"===e.parentType&&e.tShift[t]>=e.blkIndent&&(z=!0),(E=i(e,t))>=0){if(d=!0,A=e.bMarks[t]+e.tShift[t],b=Number(e.src.substr(A,E-A-1)),z&&1!==b)return!1}else{if(!((E=o(e,t))>=0))return!1;d=!1}if(z&&e.skipSpaces(E)>=e.eMarks[t])return!1;if(g=e.src.charCodeAt(E-1),n)return!0;for(m=e.tokens.length,d?(q=e.push("ordered_list_open","ol",1),1!==b&&(q.attrs=[["start",b]])):q=e.push("bullet_list_open","ul",1),q.map=_=[t,0],q.markup=String.fromCharCode(g),k=t,T=!1,L=e.md.block.ruler.getRules("list"),x=e.parentType,e.parentType="list";k<r;){for(S=E,v=e.eMarks[k],p=w=e.sCount[k]+E-(e.bMarks[t]+e.tShift[t]);S<v;){if(9===(a=e.src.charCodeAt(S)))w+=4-(w+e.bsCount[k])%4;else{if(32!==a)break;w++}S++}if((u=(s=S)>=v?1:w-p)>4&&(u=1),c=p+u,(q=e.push("list_item_open","li",1)).markup=String.fromCharCode(g),q.map=h=[t,0],O=e.tight,j=e.tShift[t],C=e.sCount[t],y=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=c,e.tight=!0,e.tShift[t]=s-e.bMarks[t],e.sCount[t]=w,s>=v&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,r):e.md.block.tokenize(e,t,r,!0),e.tight&&!T||($=!1),T=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=y,e.tShift[t]=j,e.sCount[t]=C,e.tight=O,(q=e.push("list_item_close","li",-1)).markup=String.fromCharCode(g),k=t=e.line,h[1]=k,s=e.bMarks[t],k>=r)break;if(e.sCount[k]<e.blkIndent)break;if(e.sCount[t]-e.blkIndent>=4)break;for(D=!1,l=0,f=L.length;l<f;l++)if(L[l](e,k,r,!0)){D=!0;break}if(D)break;if(d){if((E=i(e,k))<0)break}else if((E=o(e,k))<0)break;if(g!==e.src.charCodeAt(E-1))break}return(q=d?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1)).markup=String.fromCharCode(g),_[1]=k,e.line=k,e.parentType=x,$&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&"paragraph_open"===e.tokens[r].type&&(e.tokens[r+2].hidden=!0,e.tokens[r].hidden=!0,r+=2)}(e,m),!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t,r,i){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y=0,x=e.bMarks[t]+e.tShift[t],C=e.eMarks[t],j=t+1;if(e.sCount[t]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(x))return!1;for(;++x<C;)if(93===e.src.charCodeAt(x)&&92!==e.src.charCodeAt(x-1)){if(x+1===C)return!1;if(58!==e.src.charCodeAt(x+1))return!1;break}for(c=e.lineMax,k=e.md.block.ruler.getRules("reference"),_=e.parentType,e.parentType="reference";j<c&&!e.isEmpty(j);j++)if(!(e.sCount[j]-e.blkIndent>3||e.sCount[j]<0)){for(v=!1,p=0,d=k.length;p<d;p++)if(k[p](e,j,c,!0)){v=!0;break}if(v)break}for(C=(b=e.getLines(t,j,e.blkIndent,!1).trim()).length,x=1;x<C;x++){if(91===(a=b.charCodeAt(x)))return!1;if(93===a){f=x;break}(10===a||92===a&&++x<C&&10===b.charCodeAt(x))&&y++}if(f<0||58!==b.charCodeAt(f+1))return!1;for(x=f+2;x<C;x++)if(10===(a=b.charCodeAt(x)))y++;else if(!o(a))break;if(!(m=e.md.helpers.parseLinkDestination(b,x,C)).ok)return!1;if(u=e.md.normalizeLink(m.str),!e.md.validateLink(u))return!1;for(s=x=m.pos,l=y+=m.lines,g=x;x<C;x++)if(10===(a=b.charCodeAt(x)))y++;else if(!o(a))break;for(m=e.md.helpers.parseLinkTitle(b,x,C),x<C&&g!==x&&m.ok?(w=m.str,x=m.pos,y+=m.lines):(w="",x=s,y=l);x<C&&(a=b.charCodeAt(x),o(a));)x++;if(x<C&&10!==b.charCodeAt(x)&&w)for(w="",x=s,y=l;x<C&&(a=b.charCodeAt(x),o(a));)x++;return!(x<C&&10!==b.charCodeAt(x))&&(!!(h=n(b.slice(1,f)))&&(i||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[h]&&(e.env.references[h]={title:w,href:u}),e.parentType=_,e.line=t+y+1),!0))}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(35!==(i=e.src.charCodeAt(c))||c>=u)return!1;for(a=1,i=e.src.charCodeAt(++c);35===i&&c<u&&a<=6;)a++,i=e.src.charCodeAt(++c);return!(a>6||c<u&&!n(i))&&(o||(u=e.skipSpacesBack(u,c),(s=e.skipCharsBack(u,35,c))>c&&n(e.src.charCodeAt(s-1))&&(u=s),e.line=t+1,(l=e.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),l.map=[t,e.line],(l=e.push("inline","",0)).content=e.src.slice(c,u).trim(),l.map=[t,e.line],l.children=[],(l=e.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a)),!0)}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i,a,s,l,c,u,p,d,h=t+1,f=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;for(d=e.parentType,e.parentType="paragraph";h<r&&!e.isEmpty(h);h++)if(!(e.sCount[h]-e.blkIndent>3)){if(e.sCount[h]>=e.blkIndent&&(l=e.bMarks[h]+e.tShift[h])<(c=e.eMarks[h])&&(45===(p=e.src.charCodeAt(l))||61===p)&&(l=e.skipChars(l,p),(l=e.skipSpaces(l))>=c)){u=61===p?1:2;break}if(!(e.sCount[h]<0)){for(o=!1,i=0,a=f.length;i<a;i++)if(f[i](e,h,r,!0)){o=!0;break}if(o)break}}return!!u&&(n=e.getLines(t,h,e.blkIndent,!1).trim(),e.line=h+1,(s=e.push("heading_open","h"+String(u),1)).markup=String.fromCharCode(p),s.map=[t,e.line],(s=e.push("inline","",0)).content=n,s.map=[t,e.line-1],s.children=[],(s=e.push("heading_close","h"+String(u),-1)).markup=String.fromCharCode(p),e.parentType=d,!0)}},function(e,t,r){"use strict";var n=r(171),o=r(67).HTML_OPEN_CLOSE_TAG_RE,i=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+n.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(o.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,r,n){var o,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(c))return!1;for(l=e.src.slice(c,u),o=0;o<i.length&&!i[o][0].test(l);o++);if(o===i.length)return!1;if(n)return i[o][2];if(a=t+1,!i[o][1].test(l))for(;a<r&&!(e.sCount[a]<e.blkIndent);a++)if(c=e.bMarks[a]+e.tShift[a],u=e.eMarks[a],l=e.src.slice(c,u),i[o][1].test(l)){0!==l.length&&a++;break}return e.line=a,(s=e.push("html_block","",0)).map=[t,a],s.content=e.getLines(t,a,e.blkIndent,!0),!0}},function(e,t,r){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},function(e,t,r){"use strict";e.exports=function(e,t){var r,n,o,i,a,s,l=t+1,c=e.md.block.ruler.getRules("paragraph"),u=e.lineMax;for(s=e.parentType,e.parentType="paragraph";l<u&&!e.isEmpty(l);l++)if(!(e.sCount[l]-e.blkIndent>3||e.sCount[l]<0)){for(n=!1,o=0,i=c.length;o<i;o++)if(c[o](e,l,u,!0)){n=!0;break}if(n)break}return r=e.getLines(t,l,e.blkIndent,!1).trim(),e.line=l,(a=e.push("paragraph_open","p",1)).map=[t,e.line],(a=e.push("inline","",0)).content=r,a.map=[t,e.line],a.children=[],a=e.push("paragraph_close","p",-1),e.parentType=s,!0}},function(e,t,r){"use strict";var n=r(42),o=r(1).isSpace;function i(e,t,r,n){var i,a,s,l,c,u,p,d;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",d=!1,s=l=u=p=0,c=(a=this.src).length;l<c;l++){if(i=a.charCodeAt(l),!d){if(o(i)){u++,9===i?p+=4-p%4:p++;continue}d=!0}10!==i&&l!==c-1||(10!==i&&l++,this.bMarks.push(s),this.eMarks.push(l),this.tShift.push(u),this.sCount.push(p),this.bsCount.push(0),d=!1,u=0,p=0,s=l+1)}this.bMarks.push(a.length),this.eMarks.push(a.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}i.prototype.push=function(e,t,r){var o=new n(e,t,r);return o.block=!0,r<0&&this.level--,o.level=this.level,r>0&&this.level++,this.tokens.push(o),o},i.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},i.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},i.prototype.skipSpaces=function(e){for(var t,r=this.src.length;e<r&&(t=this.src.charCodeAt(e),o(t));e++);return e},i.prototype.skipSpacesBack=function(e,t){if(e<=t)return e;for(;e>t;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},i.prototype.skipChars=function(e,t){for(var r=this.src.length;e<r&&this.src.charCodeAt(e)===t;e++);return e},i.prototype.skipCharsBack=function(e,t,r){if(e<=r)return e;for(;e>r;)if(t!==this.src.charCodeAt(--e))return e+1;return e},i.prototype.getLines=function(e,t,r,n){var i,a,s,l,c,u,p,d=e;if(e>=t)return"";for(u=new Array(t-e),i=0;d<t;d++,i++){for(a=0,p=l=this.bMarks[d],c=d+1<t||n?this.eMarks[d]+1:this.eMarks[d];l<c&&a<r;){if(s=this.src.charCodeAt(l),o(s))9===s?a+=4-(a+this.bsCount[d])%4:a++;else{if(!(l-p<this.tShift[d]))break;a++}l++}u[i]=a>r?new Array(a-r+1).join(" ")+this.src.slice(l,c):this.src.slice(l,c)}return u.join("")},i.prototype.Token=n,e.exports=i},function(e,t,r){"use strict";var n=r(41),o=[["text",r(175)],["newline",r(176)],["escape",r(177)],["backticks",r(178)],["strikethrough",r(68).tokenize],["emphasis",r(69).tokenize],["link",r(179)],["image",r(180)],["autolink",r(181)],["html_inline",r(182)],["entity",r(183)]],i=[["balance_pairs",r(184)],["strikethrough",r(68).postProcess],["emphasis",r(69).postProcess],["text_collapse",r(185)]];function a(){var e;for(this.ruler=new n,e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1]);for(this.ruler2=new n,e=0;e<i.length;e++)this.ruler2.push(i[e][0],i[e][1])}a.prototype.skipToken=function(e){var t,r,n=e.pos,o=this.ruler.getRules(""),i=o.length,a=e.md.options.maxNesting,s=e.cache;if(void 0===s[n]){if(e.level<a)for(r=0;r<i&&(e.level++,t=o[r](e,!0),e.level--,!t);r++);else e.pos=e.posMax;t||e.pos++,s[n]=e.pos}else e.pos=s[n]},a.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(""),o=n.length,i=e.posMax,a=e.md.options.maxNesting;e.pos<i;){if(e.level<a)for(r=0;r<o&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,r,n){var o,i,a,s=new this.State(e,t,r,n);for(this.tokenize(s),a=(i=this.ruler2.getRules("")).length,o=0;o<a;o++)i[o](s)},a.prototype.State=r(186),e.exports=a},function(e,t,r){"use strict";function n(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}e.exports=function(e,t){for(var r=e.pos;r<e.posMax&&!n(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t){var r,o,i=e.pos;if(10!==e.src.charCodeAt(i))return!1;for(r=e.pending.length-1,o=e.posMax,t||(r>=0&&32===e.pending.charCodeAt(r)?r>=1&&32===e.pending.charCodeAt(r-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),i++;i<o&&n(e.src.charCodeAt(i));)i++;return e.pos=i,!0}},function(e,t,r){"use strict";for(var n=r(1).isSpace,o=[],i=0;i<256;i++)o.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){o[e.charCodeAt(0)]=1})),e.exports=function(e,t){var r,i=e.pos,a=e.posMax;if(92!==e.src.charCodeAt(i))return!1;if(++i<a){if((r=e.src.charCodeAt(i))<256&&0!==o[r])return t||(e.pending+=e.src[i]),e.pos+=2,!0;if(10===r){for(t||e.push("hardbreak","br",0),i++;i<a&&(r=e.src.charCodeAt(i),n(r));)i++;return e.pos=i,!0}}return t||(e.pending+="\\"),e.pos++,!0}},function(e,t,r){"use strict";e.exports=function(e,t){var r,n,o,i,a,s,l=e.pos;if(96!==e.src.charCodeAt(l))return!1;for(r=l,l++,n=e.posMax;l<n&&96===e.src.charCodeAt(l);)l++;for(o=e.src.slice(r,l),i=a=l;-1!==(i=e.src.indexOf("`",a));){for(a=i+1;a<n&&96===e.src.charCodeAt(a);)a++;if(a-i===o.length)return t||((s=e.push("code_inline","code",0)).markup=o,s.content=e.src.slice(l,i).replace(/\n/g," ").replace(/^ (.+) $/,"$1")),e.pos=a,!0}return t||(e.pending+=o),e.pos+=o.length,!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t){var r,i,a,s,l,c,u,p,d,h="",f=e.pos,_=e.posMax,m=e.pos,g=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(l=e.pos+1,(s=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((c=s+1)<_&&40===e.src.charCodeAt(c)){for(g=!1,c++;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(c>=_)return!1;for(m=c,(u=e.md.helpers.parseLinkDestination(e.src,c,e.posMax)).ok&&(h=e.md.normalizeLink(u.str),e.md.validateLink(h)?c=u.pos:h=""),m=c;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(u=e.md.helpers.parseLinkTitle(e.src,c,e.posMax),c<_&&m!==c&&u.ok)for(d=u.str,c=u.pos;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);else d="";(c>=_||41!==e.src.charCodeAt(c))&&(g=!0),c++}if(g){if(void 0===e.env.references)return!1;if(c<_&&91===e.src.charCodeAt(c)?(m=c+1,(c=e.md.helpers.parseLinkLabel(e,c))>=0?a=e.src.slice(m,c++):c=s+1):c=s+1,a||(a=e.src.slice(l,s)),!(p=e.env.references[n(a)]))return e.pos=f,!1;h=p.href,d=p.title}return t||(e.pos=l,e.posMax=s,e.push("link_open","a",1).attrs=r=[["href",h]],d&&r.push(["title",d]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=c,e.posMax=_,!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t){var r,i,a,s,l,c,u,p,d,h,f,_,m,g="",b=e.pos,v=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(c=e.pos+2,(l=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=l+1)<v&&40===e.src.charCodeAt(u)){for(u++;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(u>=v)return!1;for(m=u,(d=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok&&(g=e.md.normalizeLink(d.str),e.md.validateLink(g)?u=d.pos:g=""),m=u;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(d=e.md.helpers.parseLinkTitle(e.src,u,e.posMax),u<v&&m!==u&&d.ok)for(h=d.str,u=d.pos;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);else h="";if(u>=v||41!==e.src.charCodeAt(u))return e.pos=b,!1;u++}else{if(void 0===e.env.references)return!1;if(u<v&&91===e.src.charCodeAt(u)?(m=u+1,(u=e.md.helpers.parseLinkLabel(e,u))>=0?s=e.src.slice(m,u++):u=l+1):u=l+1,s||(s=e.src.slice(c,l)),!(p=e.env.references[n(s)]))return e.pos=b,!1;g=p.href,h=p.title}return t||(a=e.src.slice(c,l),e.md.inline.parse(a,e.md,e.env,_=[]),(f=e.push("image","img",0)).attrs=r=[["src",g],["alt",""]],f.children=_,f.content=a,h&&r.push(["title",h])),e.pos=u,e.posMax=v,!0}},function(e,t,r){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,o=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;e.exports=function(e,t){var r,i,a,s,l,c,u=e.pos;return 60===e.src.charCodeAt(u)&&(!((r=e.src.slice(u)).indexOf(">")<0)&&(o.test(r)?(s=(i=r.match(o))[0].slice(1,-1),l=e.md.normalizeLink(s),!!e.md.validateLink(l)&&(t||((c=e.push("link_open","a",1)).attrs=[["href",l]],c.markup="autolink",c.info="auto",(c=e.push("text","",0)).content=e.md.normalizeLinkText(s),(c=e.push("link_close","a",-1)).markup="autolink",c.info="auto"),e.pos+=i[0].length,!0)):!!n.test(r)&&(s=(a=r.match(n))[0].slice(1,-1),l=e.md.normalizeLink("mailto:"+s),!!e.md.validateLink(l)&&(t||((c=e.push("link_open","a",1)).attrs=[["href",l]],c.markup="autolink",c.info="auto",(c=e.push("text","",0)).content=e.md.normalizeLinkText(s),(c=e.push("link_close","a",-1)).markup="autolink",c.info="auto"),e.pos+=a[0].length,!0))))}},function(e,t,r){"use strict";var n=r(67).HTML_TAG_RE;e.exports=function(e,t){var r,o,i,a=e.pos;return!!e.md.options.html&&(i=e.posMax,!(60!==e.src.charCodeAt(a)||a+2>=i)&&(!(33!==(r=e.src.charCodeAt(a+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t<=122}(r))&&(!!(o=e.src.slice(a).match(n))&&(t||(e.push("html_inline","",0).content=e.src.slice(a,a+o[0].length)),e.pos+=o[0].length,!0))))}},function(e,t,r){"use strict";var n=r(62),o=r(1).has,i=r(1).isValidEntityCode,a=r(1).fromCodePoint,s=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,l=/^&([a-z][a-z0-9]{1,31});/i;e.exports=function(e,t){var r,c,u=e.pos,p=e.posMax;if(38!==e.src.charCodeAt(u))return!1;if(u+1<p)if(35===e.src.charCodeAt(u+1)){if(c=e.src.slice(u).match(s))return t||(r="x"===c[1][0].toLowerCase()?parseInt(c[1].slice(1),16):parseInt(c[1],10),e.pending+=i(r)?a(r):a(65533)),e.pos+=c[0].length,!0}else if((c=e.src.slice(u).match(l))&&o(n,c[1]))return t||(e.pending+=n[c[1]]),e.pos+=c[0].length,!0;return t||(e.pending+="&"),e.pos++,!0}},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s,l,c,u={},p=t.length;for(r=0;r<p;r++)if((o=t[r]).length=o.length||0,o.close){for(u.hasOwnProperty(o.marker)||(u[o.marker]=[-1,-1,-1]),a=u[o.marker][o.length%3],s=-1,n=r-o.jump-1;n>a;n-=i.jump+1)if((i=t[n]).marker===o.marker&&(-1===s&&(s=n),i.open&&i.end<0&&i.level===o.level&&(l=!1,(i.close||o.open)&&(i.length+o.length)%3==0&&(i.length%3==0&&o.length%3==0||(l=!0)),!l))){c=n>0&&!t[n-1].open?t[n-1].jump+1:0,o.jump=r-n+c,o.open=!1,i.end=r,i.jump=c,i.close=!1,s=-1;break}-1!==s&&(u[o.marker][(o.length||0)%3]=s)}}e.exports=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(0,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(0,r[t].delimiters)}},function(e,t,r){"use strict";e.exports=function(e){var t,r,n=0,o=e.tokens,i=e.tokens.length;for(t=r=0;t<i;t++)o[t].nesting<0&&n--,o[t].level=n,o[t].nesting>0&&n++,"text"===o[t].type&&t+1<i&&"text"===o[t+1].type?o[t+1].content=o[t].content+o[t+1].content:(t!==r&&(o[r]=o[t]),r++);t!==r&&(o.length=r)}},function(e,t,r){"use strict";var n=r(42),o=r(1).isWhiteSpace,i=r(1).isPunctChar,a=r(1).isMdAsciiPunct;function s(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[]}s.prototype.pushPending=function(){var e=new n("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},s.prototype.push=function(e,t,r){this.pending&&this.pushPending();var o=new n(e,t,r),i=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),o.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(o),this.tokens_meta.push(i),o},s.prototype.scanDelims=function(e,t){var r,n,s,l,c,u,p,d,h,f=e,_=!0,m=!0,g=this.posMax,b=this.src.charCodeAt(e);for(r=e>0?this.src.charCodeAt(e-1):32;f<g&&this.src.charCodeAt(f)===b;)f++;return s=f-e,n=f<g?this.src.charCodeAt(f):32,p=a(r)||i(String.fromCharCode(r)),h=a(n)||i(String.fromCharCode(n)),u=o(r),(d=o(n))?_=!1:h&&(u||p||(_=!1)),u?m=!1:p&&(d||h||(m=!1)),t?(l=_,c=m):(l=_&&(!m||p),c=m&&(!_||h)),{can_open:l,can_close:c,length:s}},s.prototype.Token=n,e.exports=s},function(e,t,r){"use strict";function n(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){t&&Object.keys(t).forEach((function(r){e[r]=t[r]}))})),e}function o(e){return Object.prototype.toString.call(e)}function i(e){return"[object Function]"===o(e)}function a(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var s={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var l={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},c="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function u(e){var t=e.re=r(188)(e.__opts__),n=e.__tlds__.slice();function s(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(s(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(s(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(s(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(s(t.tpl_host_fuzzy_test),"i");var l=[];function c(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var r=e.__schemas__[t];if(null!==r){var n={validate:null,link:null};if(e.__compiled__[t]=n,"[object Object]"===o(r))return!function(e){return"[object RegExp]"===o(e)}(r.validate)?i(r.validate)?n.validate=r.validate:c(t,r):n.validate=function(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}(r.validate),void(i(r.normalize)?n.normalize=r.normalize:r.normalize?c(t,r):n.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===o(e)}(r)?c(t,r):l.push(t)}})),l.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var u=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+u+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+u+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function p(e,t){var r=e.__index__,n=e.__last_index__,o=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=o,this.text=o,this.url=o}function d(e,t){var r=new p(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function h(e,t){if(!(this instanceof h))return new h(e,t);var r;t||(r=e,Object.keys(r||{}).reduce((function(e,t){return e||s.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=n({},s,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},l,e),this.__compiled__={},this.__tlds__=c,this.__tlds_replaced__=!1,this.re={},u(this)}h.prototype.add=function(e,t){return this.__schemas__[e]=t,u(this),this},h.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,o,i,a,s,l;if(this.re.schema_test.test(e))for((s=this.re.schema_search).lastIndex=0;null!==(t=s.exec(e));)if(o=this.testSchemaAt(e,t[2],s.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+o;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||l<this.__index__)&&null!==(r=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=r.index+r[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__="",this.__index__=i,this.__last_index__=r.index+r[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&e.indexOf("@")>=0&&null!==(n=e.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,a=n.index+n[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},h.prototype.match=function(e){var t=0,r=[];this.__index__>=0&&this.__text_cache__===e&&(r.push(d(this,t)),t=this.__last_index__);for(var n=t?e.slice(t):e;this.test(n);)r.push(d(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,r){return e!==r[t-1]})).reverse(),u(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,u(this),this)},h.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},h.prototype.onCompile=function(){},e.exports=h},function(e,t,r){"use strict";e.exports=function(e){var t={};t.src_Any=r(64).source,t.src_Cc=r(65).source,t.src_Z=r(66).source,t.src_P=r(40).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},function(e,t,r){(function(e,n){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var a="object"==typeof n&&n;a.global!==a&&a.window!==a&&a.self;var s,l=2147483647,c=/^xn--/,u=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,d={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function _(e){throw new RangeError(d[e])}function m(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function g(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),n+m((e=e.replace(p,".")).split("."),t).join(".")}function b(e){for(var t,r,n=[],o=0,i=e.length;o<i;)(t=e.charCodeAt(o++))>=55296&&t<=56319&&o<i?56320==(64512&(r=e.charCodeAt(o++)))?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),o--):n.push(t);return n}function v(e){return m(e,(function(e){var t="";return e>65535&&(t+=f((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=f(e)})).join("")}function k(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,r){var n=0;for(e=r?h(e/700):e>>1,e+=h(e/t);e>455;n+=36)e=h(e/35);return h(n+36*e/(e+38))}function y(e){var t,r,n,o,i,a,s,c,u,p,d,f=[],m=e.length,g=0,b=128,k=72;for((r=e.lastIndexOf("-"))<0&&(r=0),n=0;n<r;++n)e.charCodeAt(n)>=128&&_("not-basic"),f.push(e.charCodeAt(n));for(o=r>0?r+1:0;o<m;){for(i=g,a=1,s=36;o>=m&&_("invalid-input"),((c=(d=e.charCodeAt(o++))-48<10?d-22:d-65<26?d-65:d-97<26?d-97:36)>=36||c>h((l-g)/a))&&_("overflow"),g+=c*a,!(c<(u=s<=k?1:s>=k+26?26:s-k));s+=36)a>h(l/(p=36-u))&&_("overflow"),a*=p;k=w(g-i,t=f.length+1,0==i),h(g/t)>l-b&&_("overflow"),b+=h(g/t),g%=t,f.splice(g++,0,b)}return v(f)}function x(e){var t,r,n,o,i,a,s,c,u,p,d,m,g,v,y,x=[];for(m=(e=b(e)).length,t=128,r=0,i=72,a=0;a<m;++a)(d=e[a])<128&&x.push(f(d));for(n=o=x.length,o&&x.push("-");n<m;){for(s=l,a=0;a<m;++a)(d=e[a])>=t&&d<s&&(s=d);for(s-t>h((l-r)/(g=n+1))&&_("overflow"),r+=(s-t)*g,t=s,a=0;a<m;++a)if((d=e[a])<t&&++r>l&&_("overflow"),d==t){for(c=r,u=36;!(c<(p=u<=i?1:u>=i+26?26:u-i));u+=36)y=c-p,v=36-p,x.push(f(k(p+y%v,0))),c=h(y/v);x.push(f(k(c,0))),i=w(r,g,n==o),r=0,++n}++r,++t}return x.join("")}s={version:"1.4.1",ucs2:{decode:b,encode:v},decode:y,encode:x,toASCII:function(e){return g(e,(function(e){return u.test(e)?"xn--"+x(e):e}))},toUnicode:function(e){return g(e,(function(e){return c.test(e)?y(e.slice(4).toLowerCase()):e}))}},void 0===(o=function(){return s}.call(t,r,t,e))||(e.exports=o)}()}).call(this,r(190)(e),r(191))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},function(e,t,r){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},function(e,t,r){"use strict";e.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},function(e,t,r){"use strict";var n=r(196),o=r(197),i=r(198),a=r(199),s=r(200);e.exports=function(e,t){var r={defs:n,shortcuts:o,enabled:[]},l=s(e.utils.assign({},r,t||{}));e.renderer.rules.emoji=i,e.core.ruler.push("emoji",a(e,l.defs,l.shortcuts,l.scanRE,l.replaceRE))}},function(e){e.exports=JSON.parse('{"100":"💯","1234":"🔢","grinning":"😀","smiley":"😃","smile":"😄","grin":"😁","laughing":"😆","satisfied":"😆","sweat_smile":"😅","joy":"😂","rofl":"🤣","relaxed":"☺️","blush":"😊","innocent":"😇","slightly_smiling_face":"🙂","upside_down_face":"🙃","wink":"😉","relieved":"😌","heart_eyes":"😍","kissing_heart":"😘","kissing":"😗","kissing_smiling_eyes":"😙","kissing_closed_eyes":"😚","yum":"😋","stuck_out_tongue_winking_eye":"😜","stuck_out_tongue_closed_eyes":"😝","stuck_out_tongue":"😛","money_mouth_face":"🤑","hugs":"🤗","nerd_face":"🤓","sunglasses":"😎","clown_face":"🤡","cowboy_hat_face":"🤠","smirk":"😏","unamused":"😒","disappointed":"😞","pensive":"😔","worried":"😟","confused":"😕","slightly_frowning_face":"🙁","frowning_face":"☹️","persevere":"😣","confounded":"😖","tired_face":"😫","weary":"😩","triumph":"😤","angry":"😠","rage":"😡","pout":"😡","no_mouth":"😶","neutral_face":"😐","expressionless":"😑","hushed":"😯","frowning":"😦","anguished":"😧","open_mouth":"😮","astonished":"😲","dizzy_face":"😵","flushed":"😳","scream":"😱","fearful":"😨","cold_sweat":"😰","cry":"😢","disappointed_relieved":"😥","drooling_face":"🤤","sob":"😭","sweat":"😓","sleepy":"😪","sleeping":"😴","roll_eyes":"🙄","thinking":"🤔","lying_face":"🤥","grimacing":"😬","zipper_mouth_face":"🤐","nauseated_face":"🤢","sneezing_face":"🤧","mask":"😷","face_with_thermometer":"🤒","face_with_head_bandage":"🤕","smiling_imp":"😈","imp":"👿","japanese_ogre":"👹","japanese_goblin":"👺","hankey":"💩","poop":"💩","shit":"💩","ghost":"👻","skull":"💀","skull_and_crossbones":"☠️","alien":"👽","space_invader":"👾","robot":"🤖","jack_o_lantern":"🎃","smiley_cat":"😺","smile_cat":"😸","joy_cat":"😹","heart_eyes_cat":"😻","smirk_cat":"😼","kissing_cat":"😽","scream_cat":"🙀","crying_cat_face":"😿","pouting_cat":"😾","open_hands":"👐","raised_hands":"🙌","clap":"👏","pray":"🙏","handshake":"🤝","+1":"👍","thumbsup":"👍","-1":"👎","thumbsdown":"👎","fist_oncoming":"👊","facepunch":"👊","punch":"👊","fist_raised":"✊","fist":"✊","fist_left":"🤛","fist_right":"🤜","crossed_fingers":"🤞","v":"✌️","metal":"🤘","ok_hand":"👌","point_left":"👈","point_right":"👉","point_up_2":"👆","point_down":"👇","point_up":"☝️","hand":"✋","raised_hand":"✋","raised_back_of_hand":"🤚","raised_hand_with_fingers_splayed":"🖐","vulcan_salute":"🖖","wave":"👋","call_me_hand":"🤙","muscle":"💪","middle_finger":"🖕","fu":"🖕","writing_hand":"✍️","selfie":"🤳","nail_care":"💅","ring":"💍","lipstick":"💄","kiss":"💋","lips":"👄","tongue":"👅","ear":"👂","nose":"👃","footprints":"👣","eye":"👁","eyes":"👀","speaking_head":"🗣","bust_in_silhouette":"👤","busts_in_silhouette":"👥","baby":"👶","boy":"👦","girl":"👧","man":"👨","woman":"👩","blonde_woman":"👱♀","blonde_man":"👱","person_with_blond_hair":"👱","older_man":"👴","older_woman":"👵","man_with_gua_pi_mao":"👲","woman_with_turban":"👳♀","man_with_turban":"👳","policewoman":"👮♀","policeman":"👮","cop":"👮","construction_worker_woman":"👷♀","construction_worker_man":"👷","construction_worker":"👷","guardswoman":"💂♀","guardsman":"💂","female_detective":"🕵️♀️","male_detective":"🕵","detective":"🕵","woman_health_worker":"👩⚕","man_health_worker":"👨⚕","woman_farmer":"👩🌾","man_farmer":"👨🌾","woman_cook":"👩🍳","man_cook":"👨🍳","woman_student":"👩🎓","man_student":"👨🎓","woman_singer":"👩🎤","man_singer":"👨🎤","woman_teacher":"👩🏫","man_teacher":"👨🏫","woman_factory_worker":"👩🏭","man_factory_worker":"👨🏭","woman_technologist":"👩💻","man_technologist":"👨💻","woman_office_worker":"👩💼","man_office_worker":"👨💼","woman_mechanic":"👩🔧","man_mechanic":"👨🔧","woman_scientist":"👩🔬","man_scientist":"👨🔬","woman_artist":"👩🎨","man_artist":"👨🎨","woman_firefighter":"👩🚒","man_firefighter":"👨🚒","woman_pilot":"👩✈","man_pilot":"👨✈","woman_astronaut":"👩🚀","man_astronaut":"👨🚀","woman_judge":"👩⚖","man_judge":"👨⚖","mrs_claus":"🤶","santa":"🎅","princess":"👸","prince":"🤴","bride_with_veil":"👰","man_in_tuxedo":"🤵","angel":"👼","pregnant_woman":"🤰","bowing_woman":"🙇♀","bowing_man":"🙇","bow":"🙇","tipping_hand_woman":"💁","information_desk_person":"💁","sassy_woman":"💁","tipping_hand_man":"💁♂","sassy_man":"💁♂","no_good_woman":"🙅","no_good":"🙅","ng_woman":"🙅","no_good_man":"🙅♂","ng_man":"🙅♂","ok_woman":"🙆","ok_man":"🙆♂","raising_hand_woman":"🙋","raising_hand":"🙋","raising_hand_man":"🙋♂","woman_facepalming":"🤦♀","man_facepalming":"🤦♂","woman_shrugging":"🤷♀","man_shrugging":"🤷♂","pouting_woman":"🙎","person_with_pouting_face":"🙎","pouting_man":"🙎♂","frowning_woman":"🙍","person_frowning":"🙍","frowning_man":"🙍♂","haircut_woman":"💇","haircut":"💇","haircut_man":"💇♂","massage_woman":"💆","massage":"💆","massage_man":"💆♂","business_suit_levitating":"🕴","dancer":"💃","man_dancing":"🕺","dancing_women":"👯","dancers":"👯","dancing_men":"👯♂","walking_woman":"🚶♀","walking_man":"🚶","walking":"🚶","running_woman":"🏃♀","running_man":"🏃","runner":"🏃","running":"🏃","couple":"👫","two_women_holding_hands":"👭","two_men_holding_hands":"👬","couple_with_heart_woman_man":"💑","couple_with_heart":"💑","couple_with_heart_woman_woman":"👩❤️👩","couple_with_heart_man_man":"👨❤️👨","couplekiss_man_woman":"💏","couplekiss_woman_woman":"👩❤️💋👩","couplekiss_man_man":"👨❤️💋👨","family_man_woman_boy":"👪","family":"👪","family_man_woman_girl":"👨👩👧","family_man_woman_girl_boy":"👨👩👧👦","family_man_woman_boy_boy":"👨👩👦👦","family_man_woman_girl_girl":"👨👩👧👧","family_woman_woman_boy":"👩👩👦","family_woman_woman_girl":"👩👩👧","family_woman_woman_girl_boy":"👩👩👧👦","family_woman_woman_boy_boy":"👩👩👦👦","family_woman_woman_girl_girl":"👩👩👧👧","family_man_man_boy":"👨👨👦","family_man_man_girl":"👨👨👧","family_man_man_girl_boy":"👨👨👧👦","family_man_man_boy_boy":"👨👨👦👦","family_man_man_girl_girl":"👨👨👧👧","family_woman_boy":"👩👦","family_woman_girl":"👩👧","family_woman_girl_boy":"👩👧👦","family_woman_boy_boy":"👩👦👦","family_woman_girl_girl":"👩👧👧","family_man_boy":"👨👦","family_man_girl":"👨👧","family_man_girl_boy":"👨👧👦","family_man_boy_boy":"👨👦👦","family_man_girl_girl":"👨👧👧","womans_clothes":"👚","shirt":"👕","tshirt":"👕","jeans":"👖","necktie":"👔","dress":"👗","bikini":"👙","kimono":"👘","high_heel":"👠","sandal":"👡","boot":"👢","mans_shoe":"👞","shoe":"👞","athletic_shoe":"👟","womans_hat":"👒","tophat":"🎩","mortar_board":"🎓","crown":"👑","rescue_worker_helmet":"⛑","school_satchel":"🎒","pouch":"👝","purse":"👛","handbag":"👜","briefcase":"💼","eyeglasses":"👓","dark_sunglasses":"🕶","closed_umbrella":"🌂","open_umbrella":"☂️","dog":"🐶","cat":"🐱","mouse":"🐭","hamster":"🐹","rabbit":"🐰","fox_face":"🦊","bear":"🐻","panda_face":"🐼","koala":"🐨","tiger":"🐯","lion":"🦁","cow":"🐮","pig":"🐷","pig_nose":"🐽","frog":"🐸","monkey_face":"🐵","see_no_evil":"🙈","hear_no_evil":"🙉","speak_no_evil":"🙊","monkey":"🐒","chicken":"🐔","penguin":"🐧","bird":"🐦","baby_chick":"🐤","hatching_chick":"🐣","hatched_chick":"🐥","duck":"🦆","eagle":"🦅","owl":"🦉","bat":"🦇","wolf":"🐺","boar":"🐗","horse":"🐴","unicorn":"🦄","bee":"🐝","honeybee":"🐝","bug":"🐛","butterfly":"🦋","snail":"🐌","shell":"🐚","beetle":"🐞","ant":"🐜","spider":"🕷","spider_web":"🕸","turtle":"🐢","snake":"🐍","lizard":"🦎","scorpion":"🦂","crab":"🦀","squid":"🦑","octopus":"🐙","shrimp":"🦐","tropical_fish":"🐠","fish":"🐟","blowfish":"🐡","dolphin":"🐬","flipper":"🐬","shark":"🦈","whale":"🐳","whale2":"🐋","crocodile":"🐊","leopard":"🐆","tiger2":"🐅","water_buffalo":"🐃","ox":"🐂","cow2":"🐄","deer":"🦌","dromedary_camel":"🐪","camel":"🐫","elephant":"🐘","rhinoceros":"🦏","gorilla":"🦍","racehorse":"🐎","pig2":"🐖","goat":"🐐","ram":"🐏","sheep":"🐑","dog2":"🐕","poodle":"🐩","cat2":"🐈","rooster":"🐓","turkey":"🦃","dove":"🕊","rabbit2":"🐇","mouse2":"🐁","rat":"🐀","chipmunk":"🐿","feet":"🐾","paw_prints":"🐾","dragon":"🐉","dragon_face":"🐲","cactus":"🌵","christmas_tree":"🎄","evergreen_tree":"🌲","deciduous_tree":"🌳","palm_tree":"🌴","seedling":"🌱","herb":"🌿","shamrock":"☘️","four_leaf_clover":"🍀","bamboo":"🎍","tanabata_tree":"🎋","leaves":"🍃","fallen_leaf":"🍂","maple_leaf":"🍁","mushroom":"🍄","ear_of_rice":"🌾","bouquet":"💐","tulip":"🌷","rose":"🌹","wilted_flower":"🥀","sunflower":"🌻","blossom":"🌼","cherry_blossom":"🌸","hibiscus":"🌺","earth_americas":"🌎","earth_africa":"🌍","earth_asia":"🌏","full_moon":"🌕","waning_gibbous_moon":"🌖","last_quarter_moon":"🌗","waning_crescent_moon":"🌘","new_moon":"🌑","waxing_crescent_moon":"🌒","first_quarter_moon":"🌓","moon":"🌔","waxing_gibbous_moon":"🌔","new_moon_with_face":"🌚","full_moon_with_face":"🌝","sun_with_face":"🌞","first_quarter_moon_with_face":"🌛","last_quarter_moon_with_face":"🌜","crescent_moon":"🌙","dizzy":"💫","star":"⭐️","star2":"🌟","sparkles":"✨","zap":"⚡️","fire":"🔥","boom":"💥","collision":"💥","comet":"☄","sunny":"☀️","sun_behind_small_cloud":"🌤","partly_sunny":"⛅️","sun_behind_large_cloud":"🌥","sun_behind_rain_cloud":"🌦","rainbow":"🌈","cloud":"☁️","cloud_with_rain":"🌧","cloud_with_lightning_and_rain":"⛈","cloud_with_lightning":"🌩","cloud_with_snow":"🌨","snowman_with_snow":"☃️","snowman":"⛄️","snowflake":"❄️","wind_face":"🌬","dash":"💨","tornado":"🌪","fog":"🌫","ocean":"🌊","droplet":"💧","sweat_drops":"💦","umbrella":"☔️","green_apple":"🍏","apple":"🍎","pear":"🍐","tangerine":"🍊","orange":"🍊","mandarin":"🍊","lemon":"🍋","banana":"🍌","watermelon":"🍉","grapes":"🍇","strawberry":"🍓","melon":"🍈","cherries":"🍒","peach":"🍑","pineapple":"🍍","kiwi_fruit":"🥝","avocado":"🥑","tomato":"🍅","eggplant":"🍆","cucumber":"🥒","carrot":"🥕","corn":"🌽","hot_pepper":"🌶","potato":"🥔","sweet_potato":"🍠","chestnut":"🌰","peanuts":"🥜","honey_pot":"🍯","croissant":"🥐","bread":"🍞","baguette_bread":"🥖","cheese":"🧀","egg":"🥚","fried_egg":"🍳","bacon":"🥓","pancakes":"🥞","fried_shrimp":"🍤","poultry_leg":"🍗","meat_on_bone":"🍖","pizza":"🍕","hotdog":"🌭","hamburger":"🍔","fries":"🍟","stuffed_flatbread":"🥙","taco":"🌮","burrito":"🌯","green_salad":"🥗","shallow_pan_of_food":"🥘","spaghetti":"🍝","ramen":"🍜","stew":"🍲","fish_cake":"🍥","sushi":"🍣","bento":"🍱","curry":"🍛","rice":"🍚","rice_ball":"🍙","rice_cracker":"🍘","oden":"🍢","dango":"🍡","shaved_ice":"🍧","ice_cream":"🍨","icecream":"🍦","cake":"🍰","birthday":"🎂","custard":"🍮","lollipop":"🍭","candy":"🍬","chocolate_bar":"🍫","popcorn":"🍿","doughnut":"🍩","cookie":"🍪","milk_glass":"🥛","baby_bottle":"🍼","coffee":"☕️","tea":"🍵","sake":"🍶","beer":"🍺","beers":"🍻","clinking_glasses":"🥂","wine_glass":"🍷","tumbler_glass":"🥃","cocktail":"🍸","tropical_drink":"🍹","champagne":"🍾","spoon":"🥄","fork_and_knife":"🍴","plate_with_cutlery":"🍽","soccer":"⚽️","basketball":"🏀","football":"🏈","baseball":"⚾️","tennis":"🎾","volleyball":"🏐","rugby_football":"🏉","8ball":"🎱","ping_pong":"🏓","badminton":"🏸","goal_net":"🥅","ice_hockey":"🏒","field_hockey":"🏑","cricket":"🏏","golf":"⛳️","bow_and_arrow":"🏹","fishing_pole_and_fish":"🎣","boxing_glove":"🥊","martial_arts_uniform":"🥋","ice_skate":"⛸","ski":"🎿","skier":"⛷","snowboarder":"🏂","weight_lifting_woman":"🏋️♀️","weight_lifting_man":"🏋","person_fencing":"🤺","women_wrestling":"🤼♀","men_wrestling":"🤼♂","woman_cartwheeling":"🤸♀","man_cartwheeling":"🤸♂","basketball_woman":"⛹️♀️","basketball_man":"⛹","woman_playing_handball":"🤾♀","man_playing_handball":"🤾♂","golfing_woman":"🏌️♀️","golfing_man":"🏌","surfing_woman":"🏄♀","surfing_man":"🏄","surfer":"🏄","swimming_woman":"🏊♀","swimming_man":"🏊","swimmer":"🏊","woman_playing_water_polo":"🤽♀","man_playing_water_polo":"🤽♂","rowing_woman":"🚣♀","rowing_man":"🚣","rowboat":"🚣","horse_racing":"🏇","biking_woman":"🚴♀","biking_man":"🚴","bicyclist":"🚴","mountain_biking_woman":"🚵♀","mountain_biking_man":"🚵","mountain_bicyclist":"🚵","running_shirt_with_sash":"🎽","medal_sports":"🏅","medal_military":"🎖","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉","trophy":"🏆","rosette":"🏵","reminder_ribbon":"🎗","ticket":"🎫","tickets":"🎟","circus_tent":"🎪","woman_juggling":"🤹♀","man_juggling":"🤹♂","performing_arts":"🎭","art":"🎨","clapper":"🎬","microphone":"🎤","headphones":"🎧","musical_score":"🎼","musical_keyboard":"🎹","drum":"🥁","saxophone":"🎷","trumpet":"🎺","guitar":"🎸","violin":"🎻","game_die":"🎲","dart":"🎯","bowling":"🎳","video_game":"🎮","slot_machine":"🎰","car":"🚗","red_car":"🚗","taxi":"🚕","blue_car":"🚙","bus":"🚌","trolleybus":"🚎","racing_car":"🏎","police_car":"🚓","ambulance":"🚑","fire_engine":"🚒","minibus":"🚐","truck":"🚚","articulated_lorry":"🚛","tractor":"🚜","kick_scooter":"🛴","bike":"🚲","motor_scooter":"🛵","motorcycle":"🏍","rotating_light":"🚨","oncoming_police_car":"🚔","oncoming_bus":"🚍","oncoming_automobile":"🚘","oncoming_taxi":"🚖","aerial_tramway":"🚡","mountain_cableway":"🚠","suspension_railway":"🚟","railway_car":"🚃","train":"🚋","mountain_railway":"🚞","monorail":"🚝","bullettrain_side":"🚄","bullettrain_front":"🚅","light_rail":"🚈","steam_locomotive":"🚂","train2":"🚆","metro":"🚇","tram":"🚊","station":"🚉","helicopter":"🚁","small_airplane":"🛩","airplane":"✈️","flight_departure":"🛫","flight_arrival":"🛬","rocket":"🚀","artificial_satellite":"🛰","seat":"💺","canoe":"🛶","boat":"⛵️","sailboat":"⛵️","motor_boat":"🛥","speedboat":"🚤","passenger_ship":"🛳","ferry":"⛴","ship":"🚢","anchor":"⚓️","construction":"🚧","fuelpump":"⛽️","busstop":"🚏","vertical_traffic_light":"🚦","traffic_light":"🚥","world_map":"🗺","moyai":"🗿","statue_of_liberty":"🗽","fountain":"⛲️","tokyo_tower":"🗼","european_castle":"🏰","japanese_castle":"🏯","stadium":"🏟","ferris_wheel":"🎡","roller_coaster":"🎢","carousel_horse":"🎠","parasol_on_ground":"⛱","beach_umbrella":"🏖","desert_island":"🏝","mountain":"⛰","mountain_snow":"🏔","mount_fuji":"🗻","volcano":"🌋","desert":"🏜","camping":"🏕","tent":"⛺️","railway_track":"🛤","motorway":"🛣","building_construction":"🏗","factory":"🏭","house":"🏠","house_with_garden":"🏡","houses":"🏘","derelict_house":"🏚","office":"🏢","department_store":"🏬","post_office":"🏣","european_post_office":"🏤","hospital":"🏥","bank":"🏦","hotel":"🏨","convenience_store":"🏪","school":"🏫","love_hotel":"🏩","wedding":"💒","classical_building":"🏛","church":"⛪️","mosque":"🕌","synagogue":"🕍","kaaba":"🕋","shinto_shrine":"⛩","japan":"🗾","rice_scene":"🎑","national_park":"🏞","sunrise":"🌅","sunrise_over_mountains":"🌄","stars":"🌠","sparkler":"🎇","fireworks":"🎆","city_sunrise":"🌇","city_sunset":"🌆","cityscape":"🏙","night_with_stars":"🌃","milky_way":"🌌","bridge_at_night":"🌉","foggy":"🌁","watch":"⌚️","iphone":"📱","calling":"📲","computer":"💻","keyboard":"⌨️","desktop_computer":"🖥","printer":"🖨","computer_mouse":"🖱","trackball":"🖲","joystick":"🕹","clamp":"🗜","minidisc":"💽","floppy_disk":"💾","cd":"💿","dvd":"📀","vhs":"📼","camera":"📷","camera_flash":"📸","video_camera":"📹","movie_camera":"🎥","film_projector":"📽","film_strip":"🎞","telephone_receiver":"📞","phone":"☎️","telephone":"☎️","pager":"📟","fax":"📠","tv":"📺","radio":"📻","studio_microphone":"🎙","level_slider":"🎚","control_knobs":"🎛","stopwatch":"⏱","timer_clock":"⏲","alarm_clock":"⏰","mantelpiece_clock":"🕰","hourglass":"⌛️","hourglass_flowing_sand":"⏳","satellite":"📡","battery":"🔋","electric_plug":"🔌","bulb":"💡","flashlight":"🔦","candle":"🕯","wastebasket":"🗑","oil_drum":"🛢","money_with_wings":"💸","dollar":"💵","yen":"💴","euro":"💶","pound":"💷","moneybag":"💰","credit_card":"💳","gem":"💎","balance_scale":"⚖️","wrench":"🔧","hammer":"🔨","hammer_and_pick":"⚒","hammer_and_wrench":"🛠","pick":"⛏","nut_and_bolt":"🔩","gear":"⚙️","chains":"⛓","gun":"🔫","bomb":"💣","hocho":"🔪","knife":"🔪","dagger":"🗡","crossed_swords":"⚔️","shield":"🛡","smoking":"🚬","coffin":"⚰️","funeral_urn":"⚱️","amphora":"🏺","crystal_ball":"🔮","prayer_beads":"📿","barber":"💈","alembic":"⚗️","telescope":"🔭","microscope":"🔬","hole":"🕳","pill":"💊","syringe":"💉","thermometer":"🌡","toilet":"🚽","potable_water":"🚰","shower":"🚿","bathtub":"🛁","bath":"🛀","bellhop_bell":"🛎","key":"🔑","old_key":"🗝","door":"🚪","couch_and_lamp":"🛋","bed":"🛏","sleeping_bed":"🛌","framed_picture":"🖼","shopping":"🛍","shopping_cart":"🛒","gift":"🎁","balloon":"🎈","flags":"🎏","ribbon":"🎀","confetti_ball":"🎊","tada":"🎉","dolls":"🎎","izakaya_lantern":"🏮","lantern":"🏮","wind_chime":"🎐","email":"✉️","envelope":"✉️","envelope_with_arrow":"📩","incoming_envelope":"📨","e-mail":"📧","love_letter":"💌","inbox_tray":"📥","outbox_tray":"📤","package":"📦","label":"🏷","mailbox_closed":"📪","mailbox":"📫","mailbox_with_mail":"📬","mailbox_with_no_mail":"📭","postbox":"📮","postal_horn":"📯","scroll":"📜","page_with_curl":"📃","page_facing_up":"📄","bookmark_tabs":"📑","bar_chart":"📊","chart_with_upwards_trend":"📈","chart_with_downwards_trend":"📉","spiral_notepad":"🗒","spiral_calendar":"🗓","calendar":"📆","date":"📅","card_index":"📇","card_file_box":"🗃","ballot_box":"🗳","file_cabinet":"🗄","clipboard":"📋","file_folder":"📁","open_file_folder":"📂","card_index_dividers":"🗂","newspaper_roll":"🗞","newspaper":"📰","notebook":"📓","notebook_with_decorative_cover":"📔","ledger":"📒","closed_book":"📕","green_book":"📗","blue_book":"📘","orange_book":"📙","books":"📚","book":"📖","open_book":"📖","bookmark":"🔖","link":"🔗","paperclip":"📎","paperclips":"🖇","triangular_ruler":"📐","straight_ruler":"📏","pushpin":"📌","round_pushpin":"📍","scissors":"✂️","pen":"🖊","fountain_pen":"🖋","black_nib":"✒️","paintbrush":"🖌","crayon":"🖍","memo":"📝","pencil":"📝","pencil2":"✏️","mag":"🔍","mag_right":"🔎","lock_with_ink_pen":"🔏","closed_lock_with_key":"🔐","lock":"🔒","unlock":"🔓","heart":"❤️","yellow_heart":"💛","green_heart":"💚","blue_heart":"💙","purple_heart":"💜","black_heart":"🖤","broken_heart":"💔","heavy_heart_exclamation":"❣️","two_hearts":"💕","revolving_hearts":"💞","heartbeat":"💓","heartpulse":"💗","sparkling_heart":"💖","cupid":"💘","gift_heart":"💝","heart_decoration":"💟","peace_symbol":"☮️","latin_cross":"✝️","star_and_crescent":"☪️","om":"🕉","wheel_of_dharma":"☸️","star_of_david":"✡️","six_pointed_star":"🔯","menorah":"🕎","yin_yang":"☯️","orthodox_cross":"☦️","place_of_worship":"🛐","ophiuchus":"⛎","aries":"♈️","taurus":"♉️","gemini":"♊️","cancer":"♋️","leo":"♌️","virgo":"♍️","libra":"♎️","scorpius":"♏️","sagittarius":"♐️","capricorn":"♑️","aquarius":"♒️","pisces":"♓️","id":"🆔","atom_symbol":"⚛️","accept":"🉑","radioactive":"☢️","biohazard":"☣️","mobile_phone_off":"📴","vibration_mode":"📳","eight_pointed_black_star":"✴️","vs":"🆚","white_flower":"💮","ideograph_advantage":"🉐","secret":"㊙️","congratulations":"㊗️","u6e80":"🈵","a":"🅰️","b":"🅱️","ab":"🆎","cl":"🆑","o2":"🅾️","sos":"🆘","x":"❌","o":"⭕️","stop_sign":"🛑","no_entry":"⛔️","name_badge":"📛","no_entry_sign":"🚫","anger":"💢","hotsprings":"♨️","no_pedestrians":"🚷","do_not_litter":"🚯","no_bicycles":"🚳","non-potable_water":"🚱","underage":"🔞","no_mobile_phones":"📵","no_smoking":"🚭","exclamation":"❗️","heavy_exclamation_mark":"❗️","grey_exclamation":"❕","question":"❓","grey_question":"❔","bangbang":"‼️","interrobang":"⁉️","low_brightness":"🔅","high_brightness":"🔆","part_alternation_mark":"〽️","warning":"⚠️","children_crossing":"🚸","trident":"🔱","fleur_de_lis":"⚜️","beginner":"🔰","recycle":"♻️","white_check_mark":"✅","chart":"💹","sparkle":"❇️","eight_spoked_asterisk":"✳️","negative_squared_cross_mark":"❎","globe_with_meridians":"🌐","diamond_shape_with_a_dot_inside":"💠","m":"Ⓜ️","cyclone":"🌀","zzz":"💤","atm":"🏧","wc":"🚾","wheelchair":"♿️","parking":"🅿️","sa":"🈂️","passport_control":"🛂","customs":"🛃","baggage_claim":"🛄","left_luggage":"🛅","mens":"🚹","womens":"🚺","baby_symbol":"🚼","restroom":"🚻","put_litter_in_its_place":"🚮","cinema":"🎦","signal_strength":"📶","koko":"🈁","symbols":"🔣","information_source":"ℹ️","abc":"🔤","abcd":"🔡","capital_abcd":"🔠","ng":"🆖","ok":"🆗","up":"🆙","cool":"🆒","new":"🆕","free":"🆓","zero":"0️⃣","one":"1️⃣","two":"2️⃣","three":"3️⃣","four":"4️⃣","five":"5️⃣","six":"6️⃣","seven":"7️⃣","eight":"8️⃣","nine":"9️⃣","keycap_ten":"🔟","hash":"#️⃣","asterisk":"*️⃣","arrow_forward":"▶️","pause_button":"⏸","play_or_pause_button":"⏯","stop_button":"⏹","record_button":"⏺","next_track_button":"⏭","previous_track_button":"⏮","fast_forward":"⏩","rewind":"⏪","arrow_double_up":"⏫","arrow_double_down":"⏬","arrow_backward":"◀️","arrow_up_small":"🔼","arrow_down_small":"🔽","arrow_right":"➡️","arrow_left":"⬅️","arrow_up":"⬆️","arrow_down":"⬇️","arrow_upper_right":"↗️","arrow_lower_right":"↘️","arrow_lower_left":"↙️","arrow_upper_left":"↖️","arrow_up_down":"↕️","left_right_arrow":"↔️","arrow_right_hook":"↪️","leftwards_arrow_with_hook":"↩️","arrow_heading_up":"⤴️","arrow_heading_down":"⤵️","twisted_rightwards_arrows":"🔀","repeat":"🔁","repeat_one":"🔂","arrows_counterclockwise":"🔄","arrows_clockwise":"🔃","musical_note":"🎵","notes":"🎶","heavy_plus_sign":"➕","heavy_minus_sign":"➖","heavy_division_sign":"➗","heavy_multiplication_x":"✖️","heavy_dollar_sign":"💲","currency_exchange":"💱","tm":"™️","copyright":"©️","registered":"®️","wavy_dash":"〰️","curly_loop":"➰","loop":"➿","end":"🔚","back":"🔙","on":"🔛","top":"🔝","soon":"🔜","heavy_check_mark":"✔️","ballot_box_with_check":"☑️","radio_button":"🔘","white_circle":"⚪️","black_circle":"⚫️","red_circle":"🔴","large_blue_circle":"🔵","small_red_triangle":"🔺","small_red_triangle_down":"🔻","small_orange_diamond":"🔸","small_blue_diamond":"🔹","large_orange_diamond":"🔶","large_blue_diamond":"🔷","white_square_button":"🔳","black_square_button":"🔲","black_small_square":"▪️","white_small_square":"▫️","black_medium_small_square":"◾️","white_medium_small_square":"◽️","black_medium_square":"◼️","white_medium_square":"◻️","black_large_square":"⬛️","white_large_square":"⬜️","speaker":"🔈","mute":"🔇","sound":"🔉","loud_sound":"🔊","bell":"🔔","no_bell":"🔕","mega":"📣","loudspeaker":"📢","eye_speech_bubble":"👁🗨","speech_balloon":"💬","thought_balloon":"💭","right_anger_bubble":"🗯","spades":"♠️","clubs":"♣️","hearts":"♥️","diamonds":"♦️","black_joker":"🃏","flower_playing_cards":"🎴","mahjong":"🀄️","clock1":"🕐","clock2":"🕑","clock3":"🕒","clock4":"🕓","clock5":"🕔","clock6":"🕕","clock7":"🕖","clock8":"🕗","clock9":"🕘","clock10":"🕙","clock11":"🕚","clock12":"🕛","clock130":"🕜","clock230":"🕝","clock330":"🕞","clock430":"🕟","clock530":"🕠","clock630":"🕡","clock730":"🕢","clock830":"🕣","clock930":"🕤","clock1030":"🕥","clock1130":"🕦","clock1230":"🕧","white_flag":"🏳️","black_flag":"🏴","checkered_flag":"🏁","triangular_flag_on_post":"🚩","rainbow_flag":"🏳️🌈","afghanistan":"🇦🇫","aland_islands":"🇦🇽","albania":"🇦🇱","algeria":"🇩🇿","american_samoa":"🇦🇸","andorra":"🇦🇩","angola":"🇦🇴","anguilla":"🇦🇮","antarctica":"🇦🇶","antigua_barbuda":"🇦🇬","argentina":"🇦🇷","armenia":"🇦🇲","aruba":"🇦🇼","australia":"🇦🇺","austria":"🇦🇹","azerbaijan":"🇦🇿","bahamas":"🇧🇸","bahrain":"🇧🇭","bangladesh":"🇧🇩","barbados":"🇧🇧","belarus":"🇧🇾","belgium":"🇧🇪","belize":"🇧🇿","benin":"🇧🇯","bermuda":"🇧🇲","bhutan":"🇧🇹","bolivia":"🇧🇴","caribbean_netherlands":"🇧🇶","bosnia_herzegovina":"🇧🇦","botswana":"🇧🇼","brazil":"🇧🇷","british_indian_ocean_territory":"🇮🇴","british_virgin_islands":"🇻🇬","brunei":"🇧🇳","bulgaria":"🇧🇬","burkina_faso":"🇧🇫","burundi":"🇧🇮","cape_verde":"🇨🇻","cambodia":"🇰🇭","cameroon":"🇨🇲","canada":"🇨🇦","canary_islands":"🇮🇨","cayman_islands":"🇰🇾","central_african_republic":"🇨🇫","chad":"🇹🇩","chile":"🇨🇱","cn":"🇨🇳","christmas_island":"🇨🇽","cocos_islands":"🇨🇨","colombia":"🇨🇴","comoros":"🇰🇲","congo_brazzaville":"🇨🇬","congo_kinshasa":"🇨🇩","cook_islands":"🇨🇰","costa_rica":"🇨🇷","cote_divoire":"🇨🇮","croatia":"🇭🇷","cuba":"🇨🇺","curacao":"🇨🇼","cyprus":"🇨🇾","czech_republic":"🇨🇿","denmark":"🇩🇰","djibouti":"🇩🇯","dominica":"🇩🇲","dominican_republic":"🇩🇴","ecuador":"🇪🇨","egypt":"🇪🇬","el_salvador":"🇸🇻","equatorial_guinea":"🇬🇶","eritrea":"🇪🇷","estonia":"🇪🇪","ethiopia":"🇪🇹","eu":"🇪🇺","european_union":"🇪🇺","falkland_islands":"🇫🇰","faroe_islands":"🇫🇴","fiji":"🇫🇯","finland":"🇫🇮","fr":"🇫🇷","french_guiana":"🇬🇫","french_polynesia":"🇵🇫","french_southern_territories":"🇹🇫","gabon":"🇬🇦","gambia":"🇬🇲","georgia":"🇬🇪","de":"🇩🇪","ghana":"🇬🇭","gibraltar":"🇬🇮","greece":"🇬🇷","greenland":"🇬🇱","grenada":"🇬🇩","guadeloupe":"🇬🇵","guam":"🇬🇺","guatemala":"🇬🇹","guernsey":"🇬🇬","guinea":"🇬🇳","guinea_bissau":"🇬🇼","guyana":"🇬🇾","haiti":"🇭🇹","honduras":"🇭🇳","hong_kong":"🇭🇰","hungary":"🇭🇺","iceland":"🇮🇸","india":"🇮🇳","indonesia":"🇮🇩","iran":"🇮🇷","iraq":"🇮🇶","ireland":"🇮🇪","isle_of_man":"🇮🇲","israel":"🇮🇱","it":"🇮🇹","jamaica":"🇯🇲","jp":"🇯🇵","crossed_flags":"🎌","jersey":"🇯🇪","jordan":"🇯🇴","kazakhstan":"🇰🇿","kenya":"🇰🇪","kiribati":"🇰🇮","kosovo":"🇽🇰","kuwait":"🇰🇼","kyrgyzstan":"🇰🇬","laos":"🇱🇦","latvia":"🇱🇻","lebanon":"🇱🇧","lesotho":"🇱🇸","liberia":"🇱🇷","libya":"🇱🇾","liechtenstein":"🇱🇮","lithuania":"🇱🇹","luxembourg":"🇱🇺","macau":"🇲🇴","macedonia":"🇲🇰","madagascar":"🇲🇬","malawi":"🇲🇼","malaysia":"🇲🇾","maldives":"🇲🇻","mali":"🇲🇱","malta":"🇲🇹","marshall_islands":"🇲🇭","martinique":"🇲🇶","mauritania":"🇲🇷","mauritius":"🇲🇺","mayotte":"🇾🇹","mexico":"🇲🇽","micronesia":"🇫🇲","moldova":"🇲🇩","monaco":"🇲🇨","mongolia":"🇲🇳","montenegro":"🇲🇪","montserrat":"🇲🇸","morocco":"🇲🇦","mozambique":"🇲🇿","myanmar":"🇲🇲","namibia":"🇳🇦","nauru":"🇳🇷","nepal":"🇳🇵","netherlands":"🇳🇱","new_caledonia":"🇳🇨","new_zealand":"🇳🇿","nicaragua":"🇳🇮","niger":"🇳🇪","nigeria":"🇳🇬","niue":"🇳🇺","norfolk_island":"🇳🇫","northern_mariana_islands":"🇲🇵","north_korea":"🇰🇵","norway":"🇳🇴","oman":"🇴🇲","pakistan":"🇵🇰","palau":"🇵🇼","palestinian_territories":"🇵🇸","panama":"🇵🇦","papua_new_guinea":"🇵🇬","paraguay":"🇵🇾","peru":"🇵🇪","philippines":"🇵🇭","pitcairn_islands":"🇵🇳","poland":"🇵🇱","portugal":"🇵🇹","puerto_rico":"🇵🇷","qatar":"🇶🇦","reunion":"🇷🇪","romania":"🇷🇴","ru":"🇷🇺","rwanda":"🇷🇼","st_barthelemy":"🇧🇱","st_helena":"🇸🇭","st_kitts_nevis":"🇰🇳","st_lucia":"🇱🇨","st_pierre_miquelon":"🇵🇲","st_vincent_grenadines":"🇻🇨","samoa":"🇼🇸","san_marino":"🇸🇲","sao_tome_principe":"🇸🇹","saudi_arabia":"🇸🇦","senegal":"🇸🇳","serbia":"🇷🇸","seychelles":"🇸🇨","sierra_leone":"🇸🇱","singapore":"🇸🇬","sint_maarten":"🇸🇽","slovakia":"🇸🇰","slovenia":"🇸🇮","solomon_islands":"🇸🇧","somalia":"🇸🇴","south_africa":"🇿🇦","south_georgia_south_sandwich_islands":"🇬🇸","kr":"🇰🇷","south_sudan":"🇸🇸","es":"🇪🇸","sri_lanka":"🇱🇰","sudan":"🇸🇩","suriname":"🇸🇷","swaziland":"🇸🇿","sweden":"🇸🇪","switzerland":"🇨🇭","syria":"🇸🇾","taiwan":"🇹🇼","tajikistan":"🇹🇯","tanzania":"🇹🇿","thailand":"🇹🇭","timor_leste":"🇹🇱","togo":"🇹🇬","tokelau":"🇹🇰","tonga":"🇹🇴","trinidad_tobago":"🇹🇹","tunisia":"🇹🇳","tr":"🇹🇷","turkmenistan":"🇹🇲","turks_caicos_islands":"🇹🇨","tuvalu":"🇹🇻","uganda":"🇺🇬","ukraine":"🇺🇦","united_arab_emirates":"🇦🇪","gb":"🇬🇧","uk":"🇬🇧","us":"🇺🇸","us_virgin_islands":"🇻🇮","uruguay":"🇺🇾","uzbekistan":"🇺🇿","vanuatu":"🇻🇺","vatican_city":"🇻🇦","venezuela":"🇻🇪","vietnam":"🇻🇳","wallis_futuna":"🇼🇫","western_sahara":"🇪🇭","yemen":"🇾🇪","zambia":"🇿🇲","zimbabwe":"🇿🇼"}')},function(e,t,r){"use strict";e.exports={angry:[">:(",">:-("],blush:[':")',':-")'],broken_heart:["</3","<\\3"],confused:[":/",":-/"],cry:[":'(",":'-(",":,(",":,-("],frowning:[":(",":-("],heart:["<3"],imp:["]:(","]:-("],innocent:["o:)","O:)","o:-)","O:-)","0:)","0:-)"],joy:[":')",":'-)",":,)",":,-)",":'D",":'-D",":,D",":,-D"],kissing:[":*",":-*"],laughing:["x-)","X-)"],neutral_face:[":|",":-|"],open_mouth:[":o",":-o",":O",":-O"],rage:[":@",":-@"],smile:[":D",":-D"],smiley:[":)",":-)"],smiling_imp:["]:)","]:-)"],sob:[":,'(",":,'-(",";(",";-("],stuck_out_tongue:[":P",":-P"],sunglasses:["8-)","B-)"],sweat:[",:(",",:-("],sweat_smile:[",:)",",:-)"],unamused:[":s",":-S",":z",":-Z",":$",":-$"],wink:[";)",";-)"]}},function(e,t,r){"use strict";e.exports=function(e,t){return e[t].content}},function(e,t,r){"use strict";e.exports=function(e,t,r,n,o){var i=e.utils.arrayReplaceAt,a=e.utils.lib.ucmicro,s=new RegExp([a.Z.source,a.P.source,a.Cc.source].join("|"));function l(e,n,i){var a,l=0,c=[];return e.replace(o,(function(n,o,u){var p;if(r.hasOwnProperty(n)){if(p=r[n],o>0&&!s.test(u[o-1]))return;if(o+n.length<u.length&&!s.test(u[o+n.length]))return}else p=n.slice(1,-1);o>l&&((a=new i("text","",0)).content=e.slice(l,o),c.push(a)),(a=new i("emoji","",0)).markup=p,a.content=t[p],c.push(a),l=o+n.length})),l<e.length&&((a=new i("text","",0)).content=e.slice(l),c.push(a)),c}return function(e){var t,r,o,a,s,c=e.tokens,u=0;for(r=0,o=c.length;r<o;r++)if("inline"===c[r].type)for(t=(a=c[r].children).length-1;t>=0;t--)"link_open"!==(s=a[t]).type&&"link_close"!==s.type||"auto"===s.info&&(u-=s.nesting),"text"===s.type&&0===u&&n.test(s.content)&&(c[r].children=a=i(a,t,l(s.content,s.level,e.Token)))}}},function(e,t,r){"use strict";e.exports=function(e){var t,r=e.defs;e.enabled.length&&(r=Object.keys(r).reduce((function(t,n){return e.enabled.indexOf(n)>=0&&(t[n]=r[n]),t}),{})),t=Object.keys(e.shortcuts).reduce((function(t,n){return r[n]?Array.isArray(e.shortcuts[n])?(e.shortcuts[n].forEach((function(e){t[e]=n})),t):(t[e.shortcuts[n]]=n,t):t}),{});var n=Object.keys(r).map((function(e){return":"+e+":"})).concat(Object.keys(t)).sort().reverse().map((function(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")})).join("|"),o=RegExp(n),i=RegExp(n,"g");return{defs:r,shortcuts:t,scanRE:o,replaceRE:i}}},function(e,t,r){"use strict";var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function o(e,t){var r,o,i=e.posMax,a=e.pos;if(126!==e.src.charCodeAt(a))return!1;if(t)return!1;if(a+2>=i)return!1;for(e.pos=a+1;e.pos<i;){if(126===e.src.charCodeAt(e.pos)){r=!0;break}e.md.inline.skipToken(e)}return r&&a+1!==e.pos?(o=e.src.slice(a+1,e.pos)).match(/(^|[^\\])(\\\\)*\s/)?(e.pos=a,!1):(e.posMax=e.pos,e.pos=a+1,e.push("sub_open","sub",1).markup="~",e.push("text","",0).content=o.replace(n,"$1"),e.push("sub_close","sub",-1).markup="~",e.pos=e.posMax+1,e.posMax=i,!0):(e.pos=a,!1)}e.exports=function(e){e.inline.ruler.after("emphasis","sub",o)}},function(e,t,r){"use strict";var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function o(e,t){var r,o,i=e.posMax,a=e.pos;if(94!==e.src.charCodeAt(a))return!1;if(t)return!1;if(a+2>=i)return!1;for(e.pos=a+1;e.pos<i;){if(94===e.src.charCodeAt(e.pos)){r=!0;break}e.md.inline.skipToken(e)}return r&&a+1!==e.pos?(o=e.src.slice(a+1,e.pos)).match(/(^|[^\\])(\\\\)*\s/)?(e.pos=a,!1):(e.posMax=e.pos,e.pos=a+1,e.push("sup_open","sup",1).markup="^",e.push("text","",0).content=o.replace(n,"$1"),e.push("sup_close","sup",-1).markup="^",e.pos=e.posMax+1,e.posMax=i,!0):(e.pos=a,!1)}e.exports=function(e){e.inline.ruler.after("emphasis","sup",o)}},function(e,t,r){"use strict";e.exports=function(e){var t=e.utils.isSpace;function r(e,t){var r,n,o=e.bMarks[t]+e.tShift[t],i=e.eMarks[t];return o>=i||126!==(n=e.src.charCodeAt(o++))&&58!==n||o===(r=e.skipSpaces(o))||r>=i?-1:o}e.block.ruler.before("paragraph","deflist",(function(e,n,o,i){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j;if(i)return!(e.ddIndent<0)&&r(e,n)>=0;if((f=n+1)>=o)return!1;if(e.isEmpty(f)&&++f>=o)return!1;if(e.sCount[f]<e.blkIndent)return!1;if((s=r(e,f))<0)return!1;d=e.tokens.length,C=!0,(j=e.push("dl_open","dl",1)).map=p=[n,0],c=n,l=f;e:for(;;){for(x=!1,(j=e.push("dt_open","dt",1)).map=[c,c],(j=e.push("inline","",0)).map=[c,c],j.content=e.getLines(c,c+1,e.blkIndent,!1).trim(),j.children=[],j=e.push("dt_close","dt",-1);;){for((j=e.push("dd_open","dd",1)).map=u=[f,0],y=s,h=e.eMarks[l],_=e.sCount[l]+s-(e.bMarks[l]+e.tShift[l]);y<h&&(a=e.src.charCodeAt(y),t(a));)9===a?_+=4-_%4:_++,y++;if(s=y,w=e.tight,m=e.ddIndent,g=e.blkIndent,k=e.tShift[l],v=e.sCount[l],b=e.parentType,e.blkIndent=e.ddIndent=e.sCount[l]+2,e.tShift[l]=s-e.bMarks[l],e.sCount[l]=_,e.tight=!0,e.parentType="deflist",e.md.block.tokenize(e,l,o,!0),e.tight&&!x||(C=!1),x=e.line-l>1&&e.isEmpty(e.line-1),e.tShift[l]=k,e.sCount[l]=v,e.tight=w,e.parentType=b,e.blkIndent=g,e.ddIndent=m,j=e.push("dd_close","dd",-1),u[1]=f=e.line,f>=o)break e;if(e.sCount[f]<e.blkIndent)break e;if((s=r(e,f))<0)break;l=f}if(f>=o)break;if(c=f,e.isEmpty(c))break;if(e.sCount[c]<e.blkIndent)break;if((l=c+1)>=o)break;if(e.isEmpty(l)&&l++,l>=o)break;if(e.sCount[l]<e.blkIndent)break;if((s=r(e,l))<0)break}return j=e.push("dl_close","dl",-1),p[1]=f,e.line=f,C&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&"paragraph_open"===e.tokens[r].type&&(e.tokens[r+2].hidden=!0,e.tokens[r].hidden=!0,r+=2)}(e,d),!0}),{alt:["paragraph","reference","blockquote"]})}},function(e,t,r){"use strict";e.exports=function(e){var t=e.utils.escapeRE,r=e.utils.arrayReplaceAt,n=e.utils.lib.ucmicro.P.source,o=e.utils.lib.ucmicro.Z.source;e.block.ruler.before("reference","abbr_def",(function(e,t,r,n){var o,i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(c+2>=u)return!1;if(42!==e.src.charCodeAt(c++))return!1;if(91!==e.src.charCodeAt(c++))return!1;for(s=c;c<u;c++){if(91===(a=e.src.charCodeAt(c)))return!1;if(93===a){l=c;break}92===a&&c++}return!(l<0||58!==e.src.charCodeAt(l+1))&&(!!n||(o=e.src.slice(s,l).replace(/\\(.)/g,"$1"),i=e.src.slice(l+2,u).trim(),0!==o.length&&(0!==i.length&&(e.env.abbreviations||(e.env.abbreviations={}),void 0===e.env.abbreviations[":"+o]&&(e.env.abbreviations[":"+o]=i),e.line=t+1,!0))))}),{alt:["paragraph","reference"]}),e.core.ruler.after("linkify","abbr_replace",(function(e){var i,a,s,l,c,u,p,d,h,f,_,m,g,b=e.tokens;if(e.env.abbreviations)for(m=new RegExp("(?:"+Object.keys(e.env.abbreviations).map((function(e){return e.substr(1)})).sort((function(e,t){return t.length-e.length})).map(t).join("|")+")"),_="(^|"+n+"|"+o+"|["+" \r\n$+<=>^`|~".split("").map(t).join("")+"])("+Object.keys(e.env.abbreviations).map((function(e){return e.substr(1)})).sort((function(e,t){return t.length-e.length})).map(t).join("|")+")($|"+n+"|"+o+"|["+" \r\n$+<=>^`|~".split("").map(t).join("")+"])",h=new RegExp(_,"g"),a=0,s=b.length;a<s;a++)if("inline"===b[a].type)for(i=(l=b[a].children).length-1;i>=0;i--)if("text"===(g=l[i]).type&&(d=0,u=g.content,h.lastIndex=0,p=[],m.test(u))){for(;f=h.exec(u);)(f.index>0||f[1].length>0)&&((c=new e.Token("text","",0)).content=u.slice(d,f.index+f[1].length),p.push(c)),(c=new e.Token("abbr_open","abbr",1)).attrs=[["title",e.env.abbreviations[":"+f[2]]]],p.push(c),(c=new e.Token("text","",0)).content=f[2],p.push(c),c=new e.Token("abbr_close","abbr",-1),p.push(c),h.lastIndex-=f[3].length,d=h.lastIndex;p.length&&(d<u.length&&((c=new e.Token("text","",0)).content=u.slice(d),p.push(c)),b[a].children=l=r(l,i,p))}}))}},function(e,t,r){"use strict";function n(e,t,r,n){var o=Number(e[t].meta.id+1).toString(),i="";return"string"==typeof n.docId&&(i="-"+n.docId+"-"),i+o}function o(e,t){var r=Number(e[t].meta.id+1).toString();return e[t].meta.subId>0&&(r+=":"+e[t].meta.subId),"["+r+"]"}function i(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o),a=o.rules.footnote_caption(e,t,r,n,o),s=i;return e[t].meta.subId>0&&(s+=":"+e[t].meta.subId),'<sup class="footnote-ref"><a href="#fn'+i+'" id="fnref'+s+'">'+a+"</a></sup>"}function a(e,t,r){return(r.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'}function s(){return"</ol>\n</section>\n"}function l(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o);return e[t].meta.subId>0&&(i+=":"+e[t].meta.subId),'<li id="fn'+i+'" class="footnote-item">'}function c(){return"</li>\n"}function u(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o);return e[t].meta.subId>0&&(i+=":"+e[t].meta.subId),' <a href="#fnref'+i+'" class="footnote-backref">↩︎</a>'}e.exports=function(e){var t=e.helpers.parseLinkLabel,r=e.utils.isSpace;e.renderer.rules.footnote_ref=i,e.renderer.rules.footnote_block_open=a,e.renderer.rules.footnote_block_close=s,e.renderer.rules.footnote_open=l,e.renderer.rules.footnote_close=c,e.renderer.rules.footnote_anchor=u,e.renderer.rules.footnote_caption=o,e.renderer.rules.footnote_anchor_name=n,e.block.ruler.before("reference","footnote_def",(function(e,t,n,o){var i,a,s,l,c,u,p,d,h,f,_,m=e.bMarks[t]+e.tShift[t],g=e.eMarks[t];if(m+4>g)return!1;if(91!==e.src.charCodeAt(m))return!1;if(94!==e.src.charCodeAt(m+1))return!1;for(c=m+2;c<g;c++){if(32===e.src.charCodeAt(c))return!1;if(93===e.src.charCodeAt(c))break}if(c===m+2)return!1;if(c+1>=g||58!==e.src.charCodeAt(++c))return!1;if(o)return!0;for(c++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),u=e.src.slice(m+2,c-2),e.env.footnotes.refs[":"+u]=-1,(p=new e.Token("footnote_reference_open","",1)).meta={label:u},p.level=e.level++,e.tokens.push(p),i=e.bMarks[t],a=e.tShift[t],s=e.sCount[t],l=e.parentType,_=c,d=h=e.sCount[t]+c-(e.bMarks[t]+e.tShift[t]);c<g&&(f=e.src.charCodeAt(c),r(f));)9===f?h+=4-h%4:h++,c++;return e.tShift[t]=c-_,e.sCount[t]=h-d,e.bMarks[t]=_,e.blkIndent+=4,e.parentType="footnote",e.sCount[t]<e.blkIndent&&(e.sCount[t]+=e.blkIndent),e.md.block.tokenize(e,t,n,!0),e.parentType=l,e.blkIndent-=4,e.tShift[t]=a,e.sCount[t]=s,e.bMarks[t]=i,(p=new e.Token("footnote_reference_close","",-1)).level=--e.level,e.tokens.push(p),!0}),{alt:["paragraph","reference"]}),e.inline.ruler.after("image","footnote_inline",(function(e,r){var n,o,i,a,s=e.posMax,l=e.pos;return!(l+2>=s)&&(94===e.src.charCodeAt(l)&&(91===e.src.charCodeAt(l+1)&&(n=l+2,!((o=t(e,l+1))<0)&&(r||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),i=e.env.footnotes.list.length,e.md.inline.parse(e.src.slice(n,o),e.md,e.env,a=[]),e.push("footnote_ref","",0).meta={id:i},e.env.footnotes.list[i]={content:e.src.slice(n,o),tokens:a}),e.pos=o+1,e.posMax=s,!0))))})),e.inline.ruler.after("footnote_inline","footnote_ref",(function(e,t){var r,n,o,i,a=e.posMax,s=e.pos;if(s+3>a)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(s))return!1;if(94!==e.src.charCodeAt(s+1))return!1;for(n=s+2;n<a;n++){if(32===e.src.charCodeAt(n))return!1;if(10===e.src.charCodeAt(n))return!1;if(93===e.src.charCodeAt(n))break}return n!==s+2&&(!(n>=a)&&(n++,r=e.src.slice(s+2,n-1),void 0!==e.env.footnotes.refs[":"+r]&&(t||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[":"+r]<0?(o=e.env.footnotes.list.length,e.env.footnotes.list[o]={label:r,count:0},e.env.footnotes.refs[":"+r]=o):o=e.env.footnotes.refs[":"+r],i=e.env.footnotes.list[o].count,e.env.footnotes.list[o].count++,e.push("footnote_ref","",0).meta={id:o,subId:i,label:r}),e.pos=n,e.posMax=a,!0)))})),e.core.ruler.after("inline","footnote_tail",(function(e){var t,r,n,o,i,a,s,l,c,u,p=!1,d={};if(e.env.footnotes&&(e.tokens=e.tokens.filter((function(e){return"footnote_reference_open"===e.type?(p=!0,c=[],u=e.meta.label,!1):"footnote_reference_close"===e.type?(p=!1,d[":"+u]=c,!1):(p&&c.push(e),!p)})),e.env.footnotes.list)){for(a=e.env.footnotes.list,s=new e.Token("footnote_block_open","",1),e.tokens.push(s),t=0,r=a.length;t<r;t++){for((s=new e.Token("footnote_open","",1)).meta={id:t,label:a[t].label},e.tokens.push(s),a[t].tokens?(l=[],(s=new e.Token("paragraph_open","p",1)).block=!0,l.push(s),(s=new e.Token("inline","",0)).children=a[t].tokens,s.content=a[t].content,l.push(s),(s=new e.Token("paragraph_close","p",-1)).block=!0,l.push(s)):a[t].label&&(l=d[":"+a[t].label]),l&&(e.tokens=e.tokens.concat(l)),i="paragraph_close"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,o=a[t].count>0?a[t].count:1,n=0;n<o;n++)(s=new e.Token("footnote_anchor","",0)).meta={id:t,subId:n,label:a[t].label},e.tokens.push(s);i&&e.tokens.push(i),s=new e.Token("footnote_close","",-1),e.tokens.push(s)}s=new e.Token("footnote_block_close","",-1),e.tokens.push(s)}}))}},function(e,t,r){"use strict";e.exports=function(e){e.inline.ruler.before("emphasis","ins",(function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(43!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,jump:r,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0})),e.inline.ruler2.before("emphasis","ins",(function(e){var t,r,n,o,i,a=[],s=e.delimiters,l=e.delimiters.length;for(t=0;t<l;t++)43===(n=s[t]).marker&&-1!==n.end&&(o=s[n.end],(i=e.tokens[n.token]).type="ins_open",i.tag="ins",i.nesting=1,i.markup="++",i.content="",(i=e.tokens[o.token]).type="ins_close",i.tag="ins",i.nesting=-1,i.markup="++",i.content="","text"===e.tokens[o.token-1].type&&"+"===e.tokens[o.token-1].content&&a.push(o.token-1));for(;a.length;){for(r=(t=a.pop())+1;r<e.tokens.length&&"ins_close"===e.tokens[r].type;)r++;t!==--r&&(i=e.tokens[r],e.tokens[r]=e.tokens[t],e.tokens[t]=i)}}))}},function(e,t,r){"use strict";e.exports=function(e){e.inline.ruler.before("emphasis","mark",(function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(61!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,jump:r,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0})),e.inline.ruler2.before("emphasis","mark",(function(e){var t,r,n,o,i,a=[],s=e.delimiters,l=e.delimiters.length;for(t=0;t<l;t++)61===(n=s[t]).marker&&-1!==n.end&&(o=s[n.end],(i=e.tokens[n.token]).type="mark_open",i.tag="mark",i.nesting=1,i.markup="==",i.content="",(i=e.tokens[o.token]).type="mark_close",i.tag="mark",i.nesting=-1,i.markup="==",i.content="","text"===e.tokens[o.token-1].type&&"="===e.tokens[o.token-1].content&&a.push(o.token-1));for(;a.length;){for(r=(t=a.pop())+1;r<e.tokens.length&&"mark_close"===e.tokens[r].type;)r++;t!==--r&&(i=e.tokens[r],e.tokens[r]=e.tokens[t],e.tokens[t]=i)}}))}},function(e,t){var r=!0,n=!1,o=!1;function i(e,t,r){var n=e.attrIndex(t),o=[t,r];n<0?e.attrPush(o):e.attrs[n]=o}function a(e,t){for(var r=e[t].level-1,n=t-1;n>=0;n--)if(e[n].level===r)return n;return-1}function s(e,t){return"inline"===e[t].type&&function(e){return"paragraph_open"===e.type}(e[t-1])&&function(e){return"list_item_open"===e.type}(e[t-2])&&function(e){return 0===e.content.indexOf("[ ] ")||0===e.content.indexOf("[x] ")||0===e.content.indexOf("[X] ")}(e[t])}function l(e,t){if(e.children.unshift(function(e,t){var n=new t("html_inline","",0),o=r?' disabled="" ':"";0===e.content.indexOf("[ ] ")?n.content='<input class="task-list-item-checkbox"'+o+'type="checkbox">':0!==e.content.indexOf("[x] ")&&0!==e.content.indexOf("[X] ")||(n.content='<input class="task-list-item-checkbox" checked=""'+o+'type="checkbox">');return n}(e,t)),e.children[1].content=e.children[1].content.slice(3),e.content=e.content.slice(3),n)if(o){e.children.pop();var i="task-item-"+Math.ceil(1e7*Math.random()-1e3);e.children[0].content=e.children[0].content.slice(0,-1)+' id="'+i+'">',e.children.push(function(e,t,r){var n=new r("html_inline","",0);return n.content='<label class="task-list-item-label" for="'+t+'">'+e+"</label>",n.attrs=[{for:t}],n}(e.content,i,t))}else e.children.unshift(function(e){var t=new e("html_inline","",0);return t.content="<label>",t}(t)),e.children.push(function(e){var t=new e("html_inline","",0);return t.content="</label>",t}(t))}e.exports=function(e,t){t&&(r=!t.enabled,n=!!t.label,o=!!t.labelAfter),e.core.ruler.after("inline","github-task-lists",(function(e){for(var t=e.tokens,n=2;n<t.length;n++)s(t,n)&&(l(t[n],e.Token),i(t[n-2],"class","task-list-item"+(r?"":" enabled")),i(t[a(t,n-2)],"class","contains-task-list"))}))}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n=(r=r||{}).marker||":",o=n.charCodeAt(0),i=n.length,a=r.validate||function(e){return e.trim().split(" ",2)[0]===t},s=r.render||function(e,r,n,o,i){return 1===e[r].nesting&&e[r].attrPush(["class",t]),i.renderToken(e,r,n,o,i)};e.block.ruler.before("fence","container_"+t,(function(e,r,s,l){var c,u,p,d,h,f,_,m,g=!1,b=e.bMarks[r]+e.tShift[r],v=e.eMarks[r];if(o!==e.src.charCodeAt(b))return!1;for(c=b+1;c<=v&&n[(c-b)%i]===e.src[c];c++);if((p=Math.floor((c-b)/i))<3)return!1;if(c-=(c-b)%i,d=e.src.slice(b,c),h=e.src.slice(c,v),!a(h))return!1;if(l)return!0;for(u=r;!(++u>=s)&&!((b=e.bMarks[u]+e.tShift[u])<(v=e.eMarks[u])&&e.sCount[u]<e.blkIndent);)if(o===e.src.charCodeAt(b)&&!(e.sCount[u]-e.blkIndent>=4)){for(c=b+1;c<=v&&n[(c-b)%i]===e.src[c];c++);if(!(Math.floor((c-b)/i)<p||(c-=(c-b)%i,(c=e.skipSpaces(c))<v))){g=!0;break}}return _=e.parentType,m=e.lineMax,e.parentType="container",e.lineMax=u,(f=e.push("container_"+t+"_open","div",1)).markup=d,f.block=!0,f.info=h,f.map=[r,u],e.md.block.tokenize(e,r+1,u),(f=e.push("container_"+t+"_close","div",-1)).markup=e.src.slice(b,c),f.block=!0,e.parentType=_,e.lineMax=m,e.line=u+(g?1:0),!0}),{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules["container_"+t+"_open"]=s,e.renderer.rules["container_"+t+"_close"]=s}},function(e,t,r){"use strict";e.exports=function(e){var t,r=/^@\[toc\](?:\((?:\s+)?([^\)]+)(?:\s+)?\)?)?(?:\s+?)?$/im;var n=function(e){return e.replace(/[^\w\s]/gi,"").split(" ").join("_")};e.renderer.rules.heading_open=function(e,t){var r=e[t].tag,o=e[t+1];return"inline"===o.type?"<"+r+'><a id="'+(n(o.content)+"_"+o.map[0])+'"></a>':"</h1>"},e.renderer.rules.toc_open=function(e,t){return""},e.renderer.rules.toc_close=function(e,t){return""},e.renderer.rules.toc_body=function(e,r){for(var o=[],i=t.tokens,a=i.length,s=0;s<a;s++)if("heading_close"===i[s].type){var l=i[s],c=i[s-1];"inline"===c.type&&o.push({level:+l.tag.substr(1,1),anchor:n(c.content)+"_"+c.map[0],content:c.content})}var u=0,p=o.map((function(e){var t=[];if(e.level>u)for(var r=e.level-u,n=0;n<r;n++)t.push("<ul>"),u++;else if(e.level<u)for(r=u-e.level,n=0;n<r;n++)t.push("</ul>"),u--;return(t=t.concat(['<li><a href="#',e.anchor,'">',e.content,"</a></li>"])).join("")}));return"<h3>"+e[r].content+"</h3>"+p.join("")+new Array(u+1).join("</ul>")},e.core.ruler.push("grab_state",(function(e){t=e})),e.inline.ruler.after("emphasis","toc",(function(e,t){for(;e.src.indexOf("\n")>=0&&e.src.indexOf("\n")<e.src.indexOf("@[toc]");)"softbreak"===e.tokens.slice(-1)[0].type&&(e.src=e.src.split("\n").slice(1).join("\n"),e.pos=0);var n;if(64!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;var o=r.exec(e.src);if(!o)return!1;if((o=o.filter((function(e){return e}))).length<1)return!1;if(t)return!1;(n=e.push("toc_open","toc",1)).markup="@[toc]",n=e.push("toc_body","",0);var i="Table of Contents";o.length>1&&(i=o.pop()),n.content=i,n=e.push("toc_close","toc",-1);var a=0,s=e.src.indexOf("\n");return a=-1!==s?e.pos+s:e.pos+e.posMax+1,e.pos=a,!0}))}},function(e,t){e.exports=function(e,t){void 0===(t=t||{}).highlighted&&(t.highlighted=!0),void 0===t.hljs&&(t.hljs="auto"),"function"!=typeof t.langCheck&&(t.langCheck=function(){}),e.options.highlight=function(r,n){var o=t.hljs;if("auto"===t.hljs&&(o=window.hljs),t.highlighted&&n&&o){if(o.getLanguage(n))return'<pre><div class="hljs"><code class="'+e.options.langPrefix+n+'">'+o.highlight(n,r,!0).value+"</code></div></pre>";"function"==typeof t.langCheck&&t.langCheck(n)}return'<pre><code class="'+e.options.langPrefix+n+'">'+e.utils.escapeHtml(r)+"</code></pre>"}}},function(e,t,r){"use strict"; +/** + * @Author: chenhuachao <chc> + * @Date: 2017-11-26T15:57:48+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: index.js + * @Last modified by: chc + * @Last modified time: 2017-11-26T16:00:49+08:00 + * @License: MIT + * @Copyright: 2017 + */var n=null;function o(e,t){var r,n,o=e.posMax,i=!0,a=!0;return r=t>0?e.src.charCodeAt(t-1):-1,n=t+1<=o?e.src.charCodeAt(t+1):-1,(32===r||9===r||n>=48&&n<=57)&&(a=!1),32!==n&&9!==n||(i=!1),{can_open:i,can_close:a}}function i(e,t){if(!n&&window.katex&&(n=window.katex),!n)return!1;var r,i,a,s;if("$"!==e.src[e.pos])return!1;if(!o(e,e.pos).can_open)return t||(e.pending+="$"),e.pos+=1,!0;for(i=r=e.pos+1;-1!==(i=e.src.indexOf("$",i));){for(s=i-1;"\\"===e.src[s];)s-=1;if((i-s)%2==1)break;i+=1}return-1===i?(t||(e.pending+="$"),e.pos=r,!0):i-r==0?(t||(e.pending+="$$"),e.pos=r+1,!0):o(e,i).can_close?(t||((a=e.push("math_inline","math",0)).markup="$",a.content=e.src.slice(r,i)),e.pos=i+1,!0):(t||(e.pending+="$"),e.pos=r,!0)}function a(e,t,r,o){if(!n&&window.katex&&(n=window.katex),!n)return!1;var i,a,s,l,c,u=!1,p=e.bMarks[t]+e.tShift[t],d=e.eMarks[t];if(p+2>d)return!1;if("$$"!==e.src.slice(p,p+2))return!1;if(p+=2,i=e.src.slice(p,d),o)return!0;for("$$"===i.trim().slice(-2)&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&!(++s>=r)&&!((p=e.bMarks[s]+e.tShift[s])<(d=e.eMarks[s])&&e.tShift[s]<e.blkIndent);)"$$"===e.src.slice(p,d).trim().slice(-2)&&(l=e.src.slice(0,d).lastIndexOf("$$"),a=e.src.slice(p,l),u=!0);return e.line=s+1,(c=e.push("math_block","math",0)).block=!0,c.content=(i&&i.trim()?i+"\n":"")+e.getLines(t+1,s,e.tShift[t],!0)+(a&&a.trim()?a:""),c.map=[t,e.line],c.markup="$$",!0}e.exports=function(e,t){t=t||{};e.inline.ruler.after("escape","math_inline",i),e.block.ruler.after("blockquote","math_block",a,{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules.math_inline=function(e,r){return function(e){!n&&window.katex&&(n=window.katex),t.displayMode=!1;try{return n.renderToString(e,t)}catch(r){return t.throwOnError&&console.log(r),e}}(e[r].content)},e.renderer.rules.math_block=function(e,r){return function(e){!n&&window.katex&&(n=window.katex),t.displayMode=!0;try{return"<p>"+n.renderToString(e,t)+"</p>"}catch(r){return t.throwOnError&&console.log(r),e}}(e[r].content)+"\n"}}},function(e,t){ +/** + * @Author: HuaChao Chen <chc> + * @Date: 2017-06-12T21:06:58+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: index.js + * @Last modified by: chc + * @Last modified time: 2017-06-12T21:18:15+08:00 + * @License: MIT + * @Copyright: 2017 + */ +e.exports=function(e,t){e.image_add=function(t,r){e.__image instanceof Object||(e.__image={}),e.__image[t]=r},e.image_del=function(t){e.__image instanceof Object||(e.__image={}),delete e.__image[t]};var r=e.renderer.rules.image;e.renderer.rules.image=function(t,n,o,i,a){var s=t[n].attrs;if(e.__image instanceof Object)for(var l=0;l<s.length;l++)if("src"==s[l][0]&&e.__image.hasOwnProperty(t[n].attrs[l][1])){s.push(["rel",s[l][1]]),s[l][1]=e.__image[t[n].attrs[l][1]];break}return r(t,n,o,i,a)}}},function(e,t,r){"use strict";r(71)},function(e,t,r){(t=r(43)(!1)).push([e.i,".op-icon.dropdown-wrapper.dropdown[data-v-218640b4]{position:relative}.op-icon.dropdown-wrapper.dropdown[type=button][data-v-218640b4]{-webkit-appearance:unset}.op-icon.dropdown-wrapper.dropdown .popup-dropdown[data-v-218640b4]{position:absolute;display:block;background:#fff;top:32px;left:-45px;min-width:130px;z-index:1600;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1)}.op-icon.dropdown-wrapper.dropdown .popup-dropdown .dropdown-item[data-v-218640b4]:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown .dropdown-item[data-v-218640b4]:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.op-header[data-v-218640b4]{left:-30px;min-width:90px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-enter-active[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-leave-active[data-v-218640b4]{opacity:1}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-enter[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-leave-active[data-v-218640b4]{opacity:0}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.transition[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.transition .dropdown-item[data-v-218640b4]{transition:all .2s linear 0s}.op-icon.dropdown-wrapper.dropdown .dropdown-item[data-v-218640b4]{height:40px;line-height:40px;font-size:14px;color:#606266;position:relative}.op-icon.dropdown-wrapper.dropdown .dropdown-item[data-v-218640b4]:hover{color:#303133;background-color:#e9e9eb}.op-icon.dropdown-wrapper.dropdown .dropdown-item input[data-v-218640b4]{position:absolute;font-size:100px;right:0;top:0;opacity:0;cursor:pointer}.op-icon.dropdown-wrapper.dropdown .dropdown-images[data-v-218640b4]{box-sizing:border-box}.op-icon.dropdown-wrapper.dropdown .dropdown-images button[data-v-218640b4]{position:absolute;top:-1px;right:5px;font-size:14px}.op-icon.dropdown-wrapper.dropdown .dropdown-images button[data-v-218640b4]:hover{color:#f56c6c;background-color:transparent}.op-icon.dropdown-wrapper.dropdown .dropdown-images span[data-v-218640b4]{display:inline-block;width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op-icon.dropdown-wrapper.dropdown .dropdown-images:hover .image-show[data-v-218640b4]{display:block !important}.op-icon.dropdown-wrapper.dropdown .dropdown-images .image-show[data-v-218640b4]{display:none;position:absolute;left:-128px;top:0;width:120px;height:90px;object-fit:contain;border:1px solid #f2f6fc}.op-icon.dropdown-wrapper.dropdown .dropdown-images .image-show.transition[data-v-218640b4]{transition:all .2s linear 0s}.op-icon.dropdown-wrapper.dropdown .dropdown-images.transition[data-v-218640b4]{transition:all .2s linear 0s}.add-image-link-wrapper[data-v-218640b4]{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.add-image-link-wrapper.fade-enter-active[data-v-218640b4],.add-image-link-wrapper.fade-leave-active[data-v-218640b4]{opacity:1}.add-image-link-wrapper.fade-enter[data-v-218640b4],.add-image-link-wrapper.fade-leave-active[data-v-218640b4]{opacity:0}.add-image-link-wrapper .add-image-link[data-v-218640b4]{position:fixed;box-sizing:border-box;text-align:center;width:24%;left:38%;height:auto;padding:40px;top:25%;transition:all .1s linear 0s;z-index:3;background:#fff;border-radius:2px}@media only screen and (max-width:1500px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:34%;left:33%}}@media only screen and (max-width:1000px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:50%;left:25%}}@media only screen and (max-width:600px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:80%;left:10%}}.add-image-link-wrapper .add-image-link i[data-v-218640b4]{font-size:24px;position:absolute;right:8px;top:6px;color:rgba(0,0,0,0.7);cursor:pointer}.add-image-link-wrapper .add-image-link .title[data-v-218640b4]{font-size:20px;margin-bottom:30px;margin-top:10px;font-weight:500 !important}.add-image-link-wrapper .add-image-link .input-wrapper[data-v-218640b4]{margin-top:10px;width:80%;border:1px solid #eeece8;text-align:left;margin-left:10%;height:35px}.add-image-link-wrapper .add-image-link .input-wrapper input[data-v-218640b4]{height:32px;line-height:32px;font-size:15px;width:90%;margin-left:8px;border:none;outline:none}.add-image-link-wrapper .add-image-link .op-btn[data-v-218640b4]{width:100px;height:35px;display:inline-block;margin-top:30px;cursor:pointer;text-align:center;line-height:35px;opacity:.9;border-radius:2px;letter-spacing:1px;font-size:15px}.add-image-link-wrapper .add-image-link .op-btn.sure[data-v-218640b4]{background:#2185d0;color:#fff;margin-left:5%}.add-image-link-wrapper .add-image-link .op-btn.sure[data-v-218640b4]:hover{opacity:1}.add-image-link-wrapper .add-image-link .op-btn.cancel[data-v-218640b4]{border:1px solid #bcbcbc;color:#bcbcbc}.add-image-link-wrapper .add-image-link .op-btn.cancel[data-v-218640b4]:hover{color:#000}",""]),e.exports=t},function(e,t,r){"use strict";r.r(t);var n=r(78),o=r(24);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(217);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a]]);t.default=s},function(e,t,r){"use strict";r(73)},function(e,t,r){(t=r(43)(!1)).push([e.i,'.auto-textarea-wrapper{position:relative;width:100%;margin:0;padding:0;line-height:normal}.auto-textarea-wrapper .auto-textarea-block{display:block;white-space:pre-wrap;word-wrap:break-word !important;visibility:hidden;overflow:hidden;margin:0;padding:0;box-sizing:border-box;font-size:100%}.auto-textarea-wrapper .auto-textarea-input{font-family:Menlo,"Ubuntu Mono",Consolas,"Courier New","Microsoft Yahei","Hiragino Sans GB","WenQuanYi Micro Hei",sans-serif;position:absolute;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow-y:hidden;color:#2c3e50}.auto-textarea-wrapper .auto-textarea-input.no-border{outline:0 none;border:none !important}.auto-textarea-wrapper .auto-textarea-input.no-resize{resize:none}',""]),e.exports=t},function(e,t,r){"use strict";r(74)},function(e,t,r){(t=r(43)(!1)).push([e.i,"textarea:disabled{background-color:#fff}.v-note-wrapper{position:relative;min-width:300px;min-height:300px;display:flex;flex-direction:column;background-color:#fff;z-index:1500;text-align:left;border:1px solid #f2f6fc;border-radius:4px}.v-note-wrapper.fullscreen{position:fixed;left:0;right:0;bottom:0;top:0;margin:0;height:auto;z-index:1501}.v-note-wrapper .v-note-op{padding:1px;width:100%;display:flex;white-space:pre-line;flex:none;min-height:40px;user-select:none;border-bottom:1px solid #f2f6fc;border-radius:4px 4px 0 0;background-color:#fff;z-index:1}.v-note-wrapper .v-note-op .v-left-item,.v-note-wrapper .v-note-op .v-right-item{flex:1;min-height:40px;box-sizing:border-box}.v-note-wrapper .v-note-op .v-left-item .op-icon-divider,.v-note-wrapper .v-note-op .v-right-item .op-icon-divider{height:40px;border-left:1px solid #e5e5e5;margin:0 6px 0 4px}.v-note-wrapper .v-note-op .v-left-item .op-icon,.v-note-wrapper .v-note-op .v-right-item .op-icon{box-sizing:border-box;display:inline-block;cursor:pointer;height:28px;width:28px;margin:6px 0 5px 0;font-size:14px;padding:4.5px 6px 5px 3.5px;color:#757575;border-radius:5px;text-align:center;background:none;border:none;outline:none;line-height:1}.v-note-wrapper .v-note-op .v-left-item .op-icon.dropdown-wrapper,.v-note-wrapper .v-note-op .v-right-item .op-icon.dropdown-wrapper{line-height:18px}.v-note-wrapper .v-note-op .v-left-item .op-icon.selected,.v-note-wrapper .v-note-op .v-right-item .op-icon.selected{color:rgba(0,0,0,0.8);background:#eaeaea}.v-note-wrapper .v-note-op .v-left-item .op-icon:hover,.v-note-wrapper .v-note-op .v-right-item .op-icon:hover{color:rgba(0,0,0,0.8);background:#e9e9eb}.v-note-wrapper .v-note-op .v-left-item.transition .op-icon,.v-note-wrapper .v-note-op .v-right-item.transition .op-icon{transition:all .2s linear 0s}.v-note-wrapper .v-note-op .v-right-item{text-align:right;padding-right:6px;max-width:30%}.v-note-wrapper .v-note-op .v-left-item{text-align:left;padding-left:6px}.v-note-wrapper .v-note-panel{position:relative;border-top:none;display:flex;flex:1;width:100%;box-sizing:border-box;overflow:hidden}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper{flex:0 0 50%;width:50%;padding:0;overflow-y:scroll;overflow-x:hidden;box-sizing:border-box;cursor:text;border-bottom-left-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.transition{transition:all .2s linear 0s}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.single-edit{width:100%;flex:0 0 100%;overflow-y:auto}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.single-show{width:0;flex:0 0 0;display:none}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper .content-div{width:100%;padding:20px 25px;box-sizing:border-box;outline:0 none;border:none !important;color:#2c3e50;font-size:16px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper .content-input-wrapper{width:100%;padding:8px 25px 15px 25px}.v-note-wrapper .v-note-panel .v-note-show{flex:0 0 50%;width:50%;overflow-y:auto;padding:0 0;transition:all .2s linear 0s}.v-note-wrapper .v-note-panel .v-note-show.single-show{flex:0 0 100%;width:100%}.v-note-wrapper .v-note-panel .v-note-show .v-show-content,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html{width:100%;height:100%;padding:8px 25px 15px 25px;overflow-y:auto;box-sizing:border-box;overflow-x:hidden}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb:hover,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb:active,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-track,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style-border-radius::-webkit-scrollbar,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper{display:flex;position:absolute;width:250px;right:0;top:0;bottom:0;height:100%;flex-direction:column;background-color:rgba(255,255,255,0.98);border-left:1px solid #f2f6fc;border-right:1px solid #f2f6fc}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.transition{transition:all .1s linear 0s}@media only screen and (max-width:768px){.v-note-wrapper .v-note-panel .v-note-navigation-wrapper{width:50%}}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-enter-active,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-leave-active{height:100%}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-enter,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-leave-active{height:0}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title{height:50px;width:100%;border-bottom:1px solid #f2f6fc;flex:none;line-height:50px;font-size:16px;box-sizing:border-box;padding:0 12px 0 18px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title .v-note-navigation-close{float:right;color:#606266;font-size:18px;cursor:pointer}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title .v-note-navigation-close:hover{color:#303133}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content{overflow-y:auto;flex:1;padding:8px 0}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h1,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6{margin:2px 0;font-weight:500;font-size:17px;color:#2185d0;cursor:pointer;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 12px;border-bottom:none}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h1:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6:hover{color:#483d8b;text-decoration-line:underline}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2{padding-left:27px;font-size:17px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3{padding-left:42px;font-size:17px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4{padding-left:58px;font-size:15px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5{padding-left:72px;font-size:15px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6{padding-left:87px;font-size:15px}.v-note-wrapper .v-note-read-model{position:relative;display:none;width:100%;height:100%;background:#fbfbfb;padding:30px 8% 50px 8%;overflow-y:auto;box-sizing:border-box}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-read-model.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-read-model.show{display:block}.v-note-wrapper.shadow{border:none}.v-note-help-wrapper{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.v-note-help-wrapper.fade-enter-active,.v-note-help-wrapper.fade-leave-active{opacity:1}.v-note-help-wrapper.fade-enter,.v-note-help-wrapper.fade-leave-active{opacity:0}.v-note-help-wrapper .v-note-help-content{position:relative;width:60%;max-width:800px;margin:30px auto;height:90%;min-width:320px;transition:all .1s linear 0s;z-index:3;border:1px solid #f2f6fc}.v-note-help-wrapper .v-note-help-content.shadow{border:none;box-shadow:0 0 5px rgba(0,0,0,0.157),0 0 5px rgba(0,0,0,0.227)}.v-note-help-wrapper .v-note-help-content i{font-size:28px;position:absolute;right:15px;top:8px;color:rgba(0,0,0,0.7);cursor:pointer}.v-note-help-wrapper .v-note-help-content i:hover{color:#000}.v-note-help-wrapper .v-note-help-content .v-note-help-show{width:100%;height:100%;font-size:18px;background:#fbfbfb;overflow-y:auto;padding:2% 6%}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-img-wrapper{position:fixed;display:flex;justify-content:center;align-items:center;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.v-note-img-wrapper.fade-enter-active,.v-note-img-wrapper.fade-leave-active{opacity:1}.v-note-img-wrapper.fade-enter,.v-note-img-wrapper.fade-leave-active{opacity:0}.v-note-img-wrapper img{flex:0 0 auto;z-index:3}.v-note-img-wrapper i{font-size:28px;position:absolute;right:15px;top:8px;color:rgba(255,255,255,0.7);cursor:pointer}.v-note-img-wrapper i:hover{color:#fff}",""]),e.exports=t},function(e,t,r){"use strict";r(233)},function(e,t){},,,,,,,,,function(e,t){},,function(e,t){}])})); \ No newline at end of file diff --git a/node_modules/mavon-editor/mavon-editor.d.ts b/node_modules/mavon-editor/mavon-editor.d.ts new file mode 100644 index 0000000..84d03ab --- /dev/null +++ b/node_modules/mavon-editor/mavon-editor.d.ts @@ -0,0 +1,10 @@ +import { Component } from "vue"; +interface VueMavonEditor { + markdownIt: any; + mavonEditor: Component; + LeftToolbar: Component; + RightToolbar: Component; + install: (Vue: any) => any; +} +declare let editor: VueMavonEditor; +export default editor; diff --git a/node_modules/mavon-editor/package.json b/node_modules/mavon-editor/package.json new file mode 100644 index 0000000..bb638d4 --- /dev/null +++ b/node_modules/mavon-editor/package.json @@ -0,0 +1,128 @@ +{ + "name": "mavon-editor", + "version": "3.0.1", + "description": "Vue-next markdown editor", + "main": "dist/mavon-editor.js", + "types": "./mavon-editor.d.ts", + "scripts": { + "dev": "webpack-dev-server --open --progress --config webpack/webpack.dev.js", + "ci-build": "webpack --progress --config webpack/webpack.build.js", + "build": "run-s lint ci-build", + "test": "jest", + "test:coverage": "jest --coverage", + "lint": "eslint --ext .js,.vue src/", + "lint:fix": "eslint --fix --ext .js,.vue src/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hinesboy/mavonEditor.git" + }, + "keywords": [ + "javascript", + "vue", + "markdown", + "editor", + "html" + ], + "files": [ + "dist", + "mavon-editor.d.ts", + "src" + ], + "author": "hinesboy", + "license": "MIT", + "bugs": { + "url": "https://github.com/hinesboy/mavonEditor/issues" + }, + "homepage": "https://github.com/hinesboy/mavonEditor/tree/next", + "dependencies": { + "xss": "^1.0.10" + }, + "devDependencies": { + "@vue/compiler-sfc": "^3.1.1", + "@vue/test-utils": "^1.1.2", + "auto-textarea": "^1.4.0", + "autoprefixer": "^8.3.0", + "babel-core": "^6.0.0", + "babel-eslint": "^8.0.2", + "babel-jest": "^23.6.0", + "babel-loader": "^7.0.0", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.6.0", + "babel-preset-stage-2": "^6.24.1", + "copy-webpack-plugin": "^4.2.3", + "css-loader": "^3.1.0", + "eslint": "^4.11.0", + "eslint-config-standard": "^10.2.1", + "eslint-plugin-html": "^4.0.0", + "eslint-plugin-import": "^2.8.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-promise": "^3.6.0", + "eslint-plugin-standard": "^3.0.1", + "extract-text-webpack-plugin": "^4.0.0-beta.0", + "file-loader": "^1", + "github-markdown-css": "^2.6.0", + "html-loader": "^1.3.2", + "html-webpack-plugin": "^4.5.2", + "identity-obj-proxy": "^3.0.0", + "jest": "^23.6.0", + "jest-raw-loader": "^1.0.1", + "jest-serializer-vue": "^2.0.2", + "katex": "^0.11.1", + "keycode": "^2.1.9", + "less": "^3.5.0", + "less-loader": "^7", + "markdown-it": "^10.0.0", + "markdown-it-abbr": "^1.0.4", + "markdown-it-container": "^2.0.0", + "markdown-it-deflist": "^2.0.0", + "markdown-it-emoji": "^1.1.1", + "markdown-it-footnote": "^3.0.1", + "markdown-it-for-inline": "~0.1.0", + "markdown-it-highlightjs-external": "^1.0.1", + "markdown-it-images-preview": "^1.0.0", + "markdown-it-ins": "^2.0.0", + "markdown-it-katex-external": "^1.0.0", + "markdown-it-mark": "^2.0.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", + "markdown-it-task-lists": "^2.1.1", + "markdown-it-toc": "^1.1.0", + "merges-utils": "^1.0.2", + "npm-run-all": "^4.1.5", + "optimize-css-assets-webpack-plugin": "^1.3.1", + "postcss": "^8.3.6", + "postcss-advanced-variables": "1.2.2", + "postcss-atroot": "^0.1.2", + "postcss-color-function": "^3.0.0", + "postcss-custom-media": "^5.0.0", + "postcss-custom-properties": "^5.0.0", + "postcss-custom-selectors": "^3.0.0", + "postcss-extend": "^1.0.1", + "postcss-loader": "^4", + "postcss-media-minmax": "^2.1.0", + "postcss-mixins": "^5.4.1", + "postcss-nested": "^1.0.0", + "postcss-nested-import": "^0.1.0", + "postcss-nesting": "^2.0.6", + "postcss-partial-import": "^3.1.1", + "postcss-property-lookup": "^1.1.3", + "postcss-selector-matches": "^2.0.0", + "postcss-selector-not": "^2.0.0", + "raw-loader": "^0.5.1", + "style-loader": "2", + "stylus": "^0.54.8", + "stylus-loader": "^4", + "url-loader": "^1", + "vue": "^3.1.1", + "vue-jest": "^3.0.7", + "vue-loader": "16", + "vue-style-loader": "^4.1.3", + "webpack": "^4.36.1", + "webpack-bundle-analyzer": "^3.3.2", + "webpack-cli": "^3.3.6", + "webpack-dev-server": "^3", + "webpack-md5-hash": "^0.0.5" + } +} diff --git a/node_modules/mavon-editor/src/components/auto-textarea.vue b/node_modules/mavon-editor/src/components/auto-textarea.vue new file mode 100644 index 0000000..5e63ab1 --- /dev/null +++ b/node_modules/mavon-editor/src/components/auto-textarea.vue @@ -0,0 +1,119 @@ +<template> + <div :style="{fontSize: fontSize , lineHeight: lineHeight, height: fullHeight ? '100%': 'auto'}" class="auto-textarea-wrapper"> + <pre :style="{fontSize: fontSize , lineHeight: lineHeight, minHeight: fullHeight ? '100%': 'auto'}" class="auto-textarea-block"><br/>{{temp_value}} </pre> + <textarea ref="vTextarea" :autofocus="s_autofocus" @keyup="change" spellcheck="false" :placeholder="placeholder" v-model="temp_value" :style="{fontSize: fontSize , lineHeight: lineHeight}" :class="{'no-border': !border , 'no-resize': !resize}" class="auto-textarea-input"> + </textarea> + </div> +</template> + +<script type="text/ecmascript-6"> + export default { + emits: ["update:modelValue"], + + data() { + return { + temp_value: (() => { + return this.modelValue; + })(), + s_autofocus: (() => { + if (this.autofocus) { + return 'autofocus' + } + })() + }; + }, + + created() { + }, + + props: { + fullHeight: { + type: Boolean, + default: false + }, + autofocus: { + type: Boolean, + default: false + }, + modelValue: { + type: String, + default: '' + }, + placeholder: { + type: String, + default: '' + }, + border: { + type: Boolean, + default: false + }, + resize: { + type: Boolean, + default: false + }, + onchange: { + type: Function, + default: null + }, + fontSize: { + type: String, + default: '14px' + }, + lineHeight: { + type: String, + default: '18px' + } + }, + + methods: { + change($event) { + if (this.onchange) { + this.onchange(this.temp_value , $event) + } + } + }, + + watch: { + modelValue: function (val, oldVal) { + this.temp_value = val + }, + temp_value: function (val, oldVal) { + this.$emit('update:modelValue' , val) + } + } + }; +</script> +<style lang="stylus" rel="stylesheet/stylus"> + .auto-textarea-wrapper + position relative + width 100% + margin 0 + padding 0 + line-height normal + .auto-textarea-block + display block + white-space pre-wrap + word-wrap break-word !important + visibility hidden + overflow hidden + margin 0 + padding 0 + box-sizing border-box + font-size 100% + .auto-textarea-input + font-family Menlo, "Ubuntu Mono", Consolas, "Courier New", "Microsoft Yahei", "Hiragino Sans GB", "WenQuanYi Micro Hei", sans-serif + position absolute + width 100% + height 100% + top 0 + left 0 + margin 0 + padding 0 + overflow-y hidden + color #2C3E50 + &.no-border + outline 0 none + border none !important + &.no-resize + resize none +</style> diff --git a/node_modules/mavon-editor/src/components/md-toolbar-left.vue b/node_modules/mavon-editor/src/components/md-toolbar-left.vue new file mode 100644 index 0000000..56aeba9 --- /dev/null +++ b/node_modules/mavon-editor/src/components/md-toolbar-left.vue @@ -0,0 +1,750 @@ +<template> + <div class="v-left-item"> + <slot name="left-toolbar-before" /> + <button + :disabled="!editable" + type="button" + v-if="toolbars.bold" + @click="$clicks('bold')" + class="op-icon fa fa-mavon-bold" + aria-hidden="true" + :title="`${d_words.tl_bold} (ctrl+b)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.italic" + @click="$clicks('italic')" + class="op-icon fa fa-mavon-italic" + aria-hidden="true" + :title="`${d_words.tl_italic} (ctrl+i)`" + ></button> + <div + :class="{ selected: s_header_dropdown_open }" + :disabled="!editable" + type="button" + v-if="toolbars.header" + @mouseleave="$mouseleave_header_dropdown" + @mouseenter="$mouseenter_header_dropdown" + class="op-icon fa fa-mavon-header dropdown dropdown-wrapper" + aria-hidden="true" + :title="`${d_words.tl_header} (ctrl+h)`" + > + <transition name="fade"> + <div + class="op-header popup-dropdown" + :class="{ transition: transition }" + v-show="s_header_dropdown_open" + @mouseenter="$mouseenter_header_dropdown" + @mouseleave="$mouseleave_header_dropdown" + > + <div + title="#" + class="dropdown-item" + @click.stop="$click_header('header1')" + > + <span>{{ d_words.tl_header_one }}</span> + </div> + <div + title="## " + class="dropdown-item" + @click.stop="$click_header('header2')" + > + <span>{{ d_words.tl_header_two }}</span> + </div> + <div + title="### " + class="dropdown-item" + @click.stop="$click_header('header3')" + > + <span>{{ d_words.tl_header_three }}</span> + </div> + <div + title="#### " + class="dropdown-item" + @click.stop="$click_header('header4')" + > + <span>{{ d_words.tl_header_four }}</span> + </div> + <div + title="##### " + class="dropdown-item" + @click.stop="$click_header('header5')" + > + <span>{{ d_words.tl_header_five }}</span> + </div> + <div + title="###### " + class="dropdown-item" + @click.stop="$click_header('header6')" + > + <span>{{ d_words.tl_header_six }}</span> + </div> + </div> + </transition> + </div> + <span + v-if="toolbars.header || toolbars.italic || toolbars.bold" + class="op-icon-divider" + ></span> + <button + :disabled="!editable" + type="button" + v-if="toolbars.underline" + @click="$clicks('underline')" + class="op-icon fa fa-mavon-underline" + :title="`${d_words.tl_underline} (ctrl+u)`" + aria-hidden="true" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.strikethrough" + @click="$clicks('strikethrough')" + class="op-icon fa fa-mavon-strikethrough" + :title="`${d_words.tl_strikethrough} (ctrl+shift+d)`" + aria-hidden="true" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.mark" + @click="$clicks('mark')" + class="op-icon fa fa-mavon-thumb-tack" + :title="`${d_words.tl_mark} (ctrl+m)`" + aria-hidden="true" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.superscript" + @click="$clicks('superscript')" + class="op-icon fa fa-mavon-superscript" + aria-hidden="true" + :title="`${d_words.tl_superscript} (ctrl+alt+s)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.subscript" + @click="$clicks('subscript')" + class="op-icon fa fa-mavon-subscript" + aria-hidden="true" + :title="`${d_words.tl_subscript} (ctrl+shift+s)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.alignleft" + @click="$clicks('alignleft')" + class="op-icon fa fa-mavon-align-left" + aria-hidden="true" + :title="`${d_words.tl_alignleft} (ctrl+l)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.aligncenter" + @click="$clicks('aligncenter')" + class="op-icon fa fa-mavon-align-center" + aria-hidden="true" + :title="`${d_words.tl_aligncenter} (ctrl+e)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.alignright" + @click="$clicks('alignright')" + class="op-icon fa fa-mavon-align-right" + aria-hidden="true" + :title="`${d_words.tl_alignright} (ctrl+r)`" + ></button> + <span + v-if=" + toolbars.superscript || + toolbars.subscript || + toolbars.underline || + toolbars.strikethrough || + toolbars.mark + " + class="op-icon-divider" + ></span> + <button + :disabled="!editable" + type="button" + v-if="toolbars.quote" + @click="$clicks('quote')" + class="op-icon fa fa-mavon-quote-left" + aria-hidden="true" + :title="`${d_words.tl_quote} (ctrl+q)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.ol" + @click="$clicks('ol')" + class="op-icon fa fa-mavon-list-ol" + aria-hidden="true" + :title="`${d_words.tl_ol} (ctrl+o)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.ul" + @click="$clicks('ul')" + class="op-icon fa fa-mavon-list-ul" + aria-hidden="true" + :title="`${d_words.tl_ul} (ctrl+alt+u)`" + ></button> + <span + v-if="toolbars.ul || toolbars.ol || toolbars.quote" + class="op-icon-divider" + ></span> + <button + :disabled="!editable" + type="button" + v-if="toolbars.link" + @click.stop="$toggle_imgLinkAdd('link')" + class="op-icon fa fa-mavon-link" + aria-hidden="true" + :title="`${d_words.tl_link} (ctrl+l)`" + ></button> + + <div + :disabled="!editable" + :class="{ selected: s_img_dropdown_open }" + type="button" + v-if="toolbars.imagelink" + @mouseleave="$mouseleave_img_dropdown" + @mouseenter="$mouseenter_img_dropdown" + class="op-icon fa fa-mavon-picture-o dropdown dropdown-wrapper" + aria-hidden="true" + > + <transition name="fade"> + <div + class="op-image popup-dropdown" + :class="{ transition: transition }" + v-show="s_img_dropdown_open" + @mouseleave="$mouseleave_img_dropdown" + @mouseenter="$mouseenter_img_dropdown" + > + <div + class="dropdown-item" + @click.stop="$toggle_imgLinkAdd('imagelink')" + > + <span>{{ d_words.tl_image }}</span> + </div> + <div class="dropdown-item" style="overflow: hidden"> + <input + type="file" + accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" + @change="$imgAdd($event)" + multiple="multiple" + />{{ d_words.tl_upload }} + </div> + + <template v-for="(item, index) in img_file" :key="index"> + <div + v-if="item && item[1]" + class="dropdown-item dropdown-images" + :title="item[1].name" + @click.stop="$imgFileListClick(index)" + > + <span>{{ item[1].name }}</span> + <button + type="button" + @click.stop="$imgDel(index)" + class="op-icon fa fa-mavon-times" + aria-hidden="true" + :title="d_words.tl_upload_remove" + ></button> + + <!-- 缩略图展示 --> + <img + class="image-show" + :class="{ transition: transition }" + :src="item[1].miniurl" + alt="none" + /> + </div> + </template> + </div> + </transition> + </div> + <button + :disabled="!editable" + type="button" + v-if="toolbars.code" + @click="$clicks('code')" + class="op-icon fa fa-mavon-code" + aria-hidden="true" + :title="`${d_words.tl_code} (ctrl+alt+c)`" + ></button> + <button + :disabled="!editable" + type="button" + v-if="toolbars.table" + @click="$clicks('table')" + class="op-icon fa fa-mavon-table" + aria-hidden="true" + :title="`${d_words.tl_table} (ctrl+alt+t)`" + ></button> + <span + v-if=" + toolbars.link || toolbars.imagelink || toolbars.code || toolbars.table + " + class="op-icon-divider" + ></span> + <button + type="button" + v-if="toolbars.undo" + @click="$clicks('undo')" + class="op-icon fa fa-mavon-undo" + aria-hidden="true" + :title="`${d_words.tl_undo} (ctrl+z)`" + ></button> + <button + type="button" + v-if="toolbars.redo" + @click="$clicks('redo')" + class="op-icon fa fa-mavon-repeat" + aria-hidden="true" + :title="`${d_words.tl_redo} (ctrl+y)`" + ></button> + <button + type="button" + v-if="toolbars.trash" + @click="$clicks('trash')" + class="op-icon fa fa-mavon-trash-o" + aria-hidden="true" + :title="`${d_words.tl_trash} (ctrl+breakspace)`" + ></button> + <button + type="button" + v-if="toolbars.save" + @click="$clicks('save')" + class="op-icon fa fa-mavon-floppy-o" + aria-hidden="true" + :title="`${d_words.tl_save} (ctrl+s)`" + ></button> + <slot name="left-toolbar-after" /> + + <!-- 添加image链接 --> + <transition name="fade"> + <div class="add-image-link-wrapper" v-if="s_img_link_open"> + <div class="add-image-link"> + <i + @click.stop.prevent="s_img_link_open = false" + class="fa fa-mavon-times" + aria-hidden="true" + ></i> + <h3 class="title"> + {{ + link_type == "link" + ? d_words.tl_popup_link_title + : d_words.tl_popup_img_link_title + }} + </h3> + <div class="link-text input-wrapper"> + <input + ref="linkTextInput" + type="text" + v-model="link_text" + :placeholder=" + link_type == 'link' + ? d_words.tl_popup_link_text + : d_words.tl_popup_img_link_text + " + /> + </div> + <div class="link-addr input-wrapper"> + <input + type="text" + v-model="link_addr" + :placeholder=" + link_type == 'link' + ? d_words.tl_popup_link_addr + : d_words.tl_popup_img_link_addr + " + /> + </div> + <div class="op-btn cancel" @click.stop="s_img_link_open = false"> + {{ d_words.tl_popup_link_cancel }} + </div> + <div class="op-btn sure" @click.stop="$imgLinkAdd()"> + {{ d_words.tl_popup_link_sure }} + </div> + </div> + </div> + </transition> + </div> +</template> +<script type="text/ecmascript-6"> +export default { + emits: [ + "toolbar_left_addlink", + "imgTouch", + "imgAdd", + "imgDel", + "imgAdd", + "imgAdd", + "toolbar_left_click", + "toolbar_left_click" + ], + + name: 's-md-toolbar-left', + + props: { + editable: { // 是否开启编辑 + type: Boolean, + default: true + }, + transition: { // TODO: 是否开启动画过渡 + type: Boolean, + default: true + }, + toolbars: { // 工具栏 + type: Object, + required: true + }, + d_words: { + type: Object, + required: true + }, + image_filter: { + type: Function, + default: null + } + }, + + data() { + return { + // [index, file] + img_file: [[0, null]], + img_timer: null, + header_timer: null, + s_img_dropdown_open: false, + s_header_dropdown_open: false, + s_img_link_open: false, + trigger: null, + num: 0, + link_text: '', + link_addr: '', + link_type: 'link' + } + }, + + methods: { + $imgLinkAdd() { + this.$emit('toolbar_left_addlink', this.link_type, this.link_text, this.link_addr); + this.s_img_link_open = false; + }, + $toggle_imgLinkAdd(type) { + this.link_type = type; + this.link_text = this.link_addr = ''; + this.s_img_link_open = true; + this.$nextTick(() => { + this.$refs.linkTextInput.focus() + }) + this.s_img_dropdown_open = false; + }, + $imgFileListClick(pos) { + this.$emit('imgTouch', this.img_file[pos]); + }, + $changeUrl(index,url) { + this.img_file[index][0] = url; + }, + $imgFileAdd($file) { + // this.img_file[0][0] = this.num; + // this.img_file[0][1] = $file; + // this.img_file.unshift([(this.num + 1), null]); + // this.num = this.num + 1; + this.img_file.push([++this.num, $file]) + this.$emit('imgAdd', this.num, $file); + this.s_img_dropdown_open = false; + }, + $imgFilesAdd($files) { + // valid means if the image_filter exist. + let valid = (typeof this.image_filter === 'function'); + for (let i = 0; i < $files.length; i++) { + if (valid && this.image_filter($files[i]) === true) { + this.$imgFileAdd($files[i]); + } else if (!valid && $files[i].type.match(/^image\//i)) { + this.$imgFileAdd($files[i]); + } + } + }, + $imgAdd($e) { + this.$imgFilesAdd($e.target.files); + $e.target.value = ''; // 初始化 + }, + $imgDel(pos) { + this.$emit('imgDel', this.img_file[pos]); + this.img_file.splice(pos, 1); + this.num--; + + this.s_img_dropdown_open = false; + }, + isEqualName(filename, pos) { + if (this.img_file[pos][1]) { + if (this.img_file[pos][1].name === filename || this.img_file[pos][1]._name === filename) { + return true + } + } + return false + }, + $imgDelByFilename(filename) { + var pos = 0; + while (this.img_file.length > pos) { + if (this.img_file[pos][1] === filename || this.isEqualName(filename, pos)) { + this.$imgDel(pos); + return true; + } + pos += 1; + } + return false; + }, + $imgAddByFilename(filename, $file) { + for (var i = 0; i < this.img_file.length; i++) + { if (this.img_file[i][0] === filename) return false; } + this.img_file[0][0] = filename; + this.img_file[0][1] = $file; + this.img_file[0][2] = filename; + this.img_file.unshift(['./' + (this.num), null]) + this.$emit('imgAdd', this.img_file[1][0], $file, false); + return true; + }, + $imgAddByUrl(filename, $url) { + for (var i = 0; i < this.img_file.length; i++) + { if (this.img_file[i][0] === filename) return false; } + this.img_file[0][0] = filename; + this.img_file[0][1] = $url; + this.img_file.unshift(['./' + (this.num), null]) + return true; + }, + $imgUpdateByFilename(filename, $file) { + for (var i = 0; i < this.img_file.length; i++) { + if (this.img_file[i][0] === filename || this.isEqualName(filename, i)) { + this.img_file[i][1] = $file; + this.$emit('imgAdd', filename, $file, false); + return true; + } + } + return false; + }, + // 工具栏功能图标click----------------- + $mouseenter_img_dropdown() { + if (this.editable) { + clearTimeout(this.img_timer) + this.s_img_dropdown_open = true + } + }, + $mouseleave_img_dropdown() { + let vm = this + this.img_timer = setTimeout(function() { + vm.s_img_dropdown_open = false + },200) + }, + $mouseenter_header_dropdown() { + if (this.editable) { + clearTimeout(this.header_timer) + this.s_header_dropdown_open = true + } + }, + $mouseleave_header_dropdown() { + let vm = this + this.header_timer = setTimeout(function() { + vm.s_header_dropdown_open = false + },200) + }, + $clicks(_type) { + // 让父节点来绑定事件并 + if (this.editable) { + this.$emit('toolbar_left_click', _type); + } + }, + $click_header(_type) { + // 让父节点来绑定事件并 + this.$emit('toolbar_left_click', _type); + this.s_header_dropdown_open = false + }, + handleClose(e) { + this.s_img_dropdown_open = false; + } + }, + + watch:{ + s_img_link_open(newVlaue) { + // fix issue #644 + this.$parent.$el.style.zIndex = newVlaue ? 1501 : 1500; + } + } +}; +</script> +<style lang="stylus" scoped> + .op-icon.dropdown-wrapper.dropdown + position relative + &[type=button] + -webkit-appearance unset + .popup-dropdown + position absolute + display block + background #fff + top 32px + left -45px + min-width 130px + z-index 1600 + border 1px solid #ebeef5 + border-radius 4px + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1) + .dropdown-item:first-child + border-top-left-radius 3px + border-top-right-radius 3px + .dropdown-item:last-child + border-bottom-left-radius 3px + border-bottom-right-radius 3px + &.op-header + left -30px + min-width 90px + &.fade-enter-active, &.fade-leave-active + opacity 1 + &.fade-enter, &.fade-leave-active + opacity 0 + &.transition + &, .dropdown-item + transition all 0.2s linear 0s + .dropdown-item + height 40px + line-height @height + font-size 14px + color #606266 + position relative + &:hover + color #303133 + background-color #e9e9eb + input + position absolute + font-size 100px + right 0 + top 0 + opacity 0 + cursor pointer + .dropdown-images + box-sizing border-box + button + position absolute + top -1px + right 5px + font-size: 14px + &:hover + color #F56C6C + background-color: transparent + span + display inline-block + width 80px + white-space nowrap + overflow hidden + text-overflow ellipsis + &:hover + .image-show + display block !important + .image-show + display none + position absolute + left -128px + top 0 + width 120px + height 90px + object-fit contain + border 1px solid #F2F6FC + &.transition + transition all 0.2s linear 0s + &.transition + transition all 0.2s linear 0s +.add-image-link-wrapper + position fixed + left 0 + right 0 + top 0 + bottom 0 + background rgba(0, 0, 0, 0.7) + z-index 1600 + transition all 0.1s linear 0s + &.fade-enter-active, &.fade-leave-active + opacity 1 + &.fade-enter, &.fade-leave-active + opacity 0 + .add-image-link + position fixed + box-sizing border-box + text-align center + width 24% + left 38% + @media only screen and (max-width 1500px) + width 34% + left 33% + @media only screen and (max-width 1000px) + width 50% + left 25% + @media only screen and (max-width 600px) + width 80% + left 10% + height auto + padding 40px + top 25% + transition all 0.1s linear 0s + z-index 3 + background #fff + border-radius 2px + + i + font-size 24px + position absolute + right 8px + top 6px + color rgba(0, 0, 0, 0.7) + cursor pointer + .title + font-size 20px + margin-bottom 30px + margin-top 10px + font-weight 500 !important + .input-wrapper + margin-top 10px + width 80% + border 1px solid #eeece8 + text-align left + margin-left 10% + height 35px + input + height 32px + line-height 32px + font-size 15px + width 90% + margin-left 8px + border none + outline none + .op-btn + width 100px + height 35px + display inline-block + margin-top 30px + cursor pointer + text-align center + line-height @height + opacity 0.9 + border-radius 2px + letter-spacing 1px + font-size 15px + .op-btn.sure + background #2185d0 + color #fff + margin-left 5% + &:hover + opacity 1 + .op-btn.cancel + border 1px solid #bcbcbc + color #bcbcbc + &:hover + color #000 +</style> diff --git a/node_modules/mavon-editor/src/components/md-toolbar-right.vue b/node_modules/mavon-editor/src/components/md-toolbar-right.vue new file mode 100644 index 0000000..8506fc4 --- /dev/null +++ b/node_modules/mavon-editor/src/components/md-toolbar-right.vue @@ -0,0 +1,71 @@ +<template> + <div class="v-right-item"> + <slot name="right-toolbar-before" /> + <button type="button" v-if="toolbars.navigation" @click="$clicks('navigation')" v-show="!s_navigation" + class="op-icon fa fa-mavon-bars" + aria-hidden="true" :title="`${d_words.tl_navigation_on} (F8)`"></button> + <button type="button" v-if="toolbars.navigation" @click="$clicks('navigation')" v-show="s_navigation" + class="op-icon fa fa-mavon-bars selected" + aria-hidden="true" :title="`${d_words.tl_navigation_off} (F8)`"></button> + <button type="button" v-if="toolbars.preview" @click="$clicks('preview')" v-show="s_preview_switch" + class="op-icon fa fa-mavon-eye-slash selected" + aria-hidden="true" :title="`${d_words.tl_edit} (F9)`"></button> + <button type="button" v-if="toolbars.preview" @click="$clicks('preview')" v-show="!s_preview_switch" + class="op-icon fa fa-mavon-eye" + aria-hidden="true" :title="`${d_words.tl_preview} (F9)`"></button> + <button type="button" v-if="toolbars.fullscreen" @click="$clicks('fullscreen')" v-show="!s_fullScreen" + class="op-icon fa fa-mavon-arrows-alt" + :title="`${d_words.tl_fullscreen_on} (F10)`" aria-hidden="true"></button> + <button type="button" v-if="toolbars.fullscreen" @click="$clicks('fullscreen')" v-show="s_fullScreen" + class="op-icon fa fa-mavon-compress selected" + :title="`${d_words.tl_fullscreen_off} (F10)`" aria-hidden="true"></button> + <button type="button" v-if="toolbars.readmodel" @click="$clicks('read')" class="op-icon fa fa-mavon-window-maximize" aria-hidden="true" + :title="`${d_words.tl_read} (F11)`"></button> + <button type="button" v-if="toolbars.subfield" @click="$clicks('subfield')" class="op-icon fa fa-mavon-columns" aria-hidden="true" + :class = "{'selected': s_subfield}" :title="`${s_subfield ? d_words.tl_single_column : d_words.tl_double_column} (F12)`"></button> + <span + v-if=" toolbars.help && toolbars.htmlcode && toolbars.readmodel && toolbars.fullscreen && toolbars.subfield && toolbars.navigation" + class="op-icon-divider"></span> + <button type="button" v-if="toolbars.htmlcode" @click="$clicks('html')" v-show="!s_html_code" class="op-icon fa fa-mavon-code" + :title="d_words.tl_html_on" + aria-hidden="true"></button> + <button type="button" v-if="toolbars.htmlcode" @click="$clicks('html')" v-show="s_html_code" + class="op-icon fa fa-mavon-code selected" + :title="d_words.tl_html_off" aria-hidden="true"></button> + <button type="button" v-if="toolbars.help" @click="$clicks('help')" class="op-icon fa fa-mavon-question-circle" + style="font-size: 17px;padding: 5px 6px 5px 3px" + :title="d_words.tl_help" aria-hidden="true"></button> + <slot name="right-toolbar-after" /> + </div> +</template> +<script type="text/ecmascript-6"> +export default { + emits: ["toolbar_right_click"], + name: 's-md-toolbar-right', + + props: { + // 工具栏 + s_subfield: { + type: Boolean , + required: true + }, + toolbars: { type: Object, required: true }, + s_preview_switch: { type: Boolean, required: true }, + s_fullScreen: { type: Boolean, required: true }, + s_html_code: { type: Boolean, required: true }, + s_navigation: { type: Boolean, required: true }, + d_words: { + type: Object, + required: true + } + }, + + methods: { + // 工具栏功能图标click----------------- + $clicks(_type) { + // 让父节点来绑定事件并 + this.$emit('toolbar_right_click', _type); + } + } +}; +</script> diff --git a/node_modules/mavon-editor/src/dev/app.vue b/node_modules/mavon-editor/src/dev/app.vue new file mode 100644 index 0000000..7eaffb7 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/app.vue @@ -0,0 +1,354 @@ +<template> + <div id="app"> + <select @change="opchange" class="page-lang"> + <option value="zh-CN">简体中文</option> + <option value="zh-TW">正體中文</option> + <option value="en">English</option> + <option value="fr">Français</option> + <option value="de">Deutsch</option> + <option value="ja">日本語 </option> + <option value="pt-BR">Português</option> + <option value="ru">Русский</option> + </select> + <section class="page-header"> + <h1 class="project-name">mavonEditor</h1> + <h3 class="project-tagline">{{d_words.sub_title}}</h3> + <a href="https://github.com/hinesboy/mavonEditor" class="btn">View on GitHub</a> + <a href="https://github.com/hinesboy/mavonEditor/zipball/master" class="btn">Download .zip</a> + <a href="https://github.com/hinesboy/mavonEditor/master" class="btn">Download .tar.gz</a> + </section> + <div v-if="!screen_phone" class="item"> + <h2 class="item-header"> + {{d_words.default_setting}} + </h2> + <div class="item-button"> + <button @click="clearCache">clear cache</button> + <button @click="uploadimg">upload</button> + <button @click="imgreplace">imgreplace</button> + <input type="text" v-model="imgName" /> + <button @click="imgdelete">delete</button> + <div class="switch-code-style"> + <span>code style:</span> + <select v-model="codeStyle"> + <option v-for="(val, key) in styles" :value="key">{{ key }}</option> + </select> + </div> + </div> + <mavon-editor ref="md" :subfield="subfield" :toolbarsFlag="toolbarsFlag" :editable="editable" + :language="d_language" @change="change" @save="saveone" :ishljs="true" class="item-editor" v-model="help1" + :autofocus="autofocus" + :shortCut="true" + @imgAdd="$imgAdd" @imgDel="$imgDel" @subfieldtoggle="$subfieldtoggle" @previewtoggle="$previewtoggle" + :imageFilter="image_filter" + :boxShadow="true" + :scrollStyle="true" + :transition="true" + :codeStyle="codeStyle" + box-shadow-style="0 2px 12px 0 rgba(0, 0, 0, 0.1)" + toolbars-background="#ffffff" + preview-background="#fbfbfb"> + <!-- <template slot="left-toolbar-before"> + 左工具栏前 + </template> + <template slot="left-toolbar-after"> + 左工具栏后 + </template> + + <template slot="right-toolbar-before"> + 右工具栏前 + </template> + <template slot="right-toolbar-after"> + 右工具栏后 + </template> --> + </mavon-editor> + <button ref="diy" type="button" @click="$click('selftest')" class="op-icon fa fa-mavon-align-left" + aria-hidden="true" title="自定义"></button> + </div> + <!--自定义--> + <div v-if="screen_phone" class="item"> + <h2 class="item-header"> + {{d_words.customize_setting}} + </h2> + <mavon-editor :language="d_language" @save="savetwo" :toolbars="toolbars" class="item-editor" + v-model="help2"></mavon-editor> + </div> + <div class="item"> + <span style="display: block;margin: 30px 0 15px 0;color: #1e6bb8" class=""> + {{d_words.mark}} + </span> + </div> + <div class="item"> + <h2 class="item-header"> + {{d_words.detail}}<a href="https://github.com/hinesboy/mavonEditor">GitHub</a> + </h2> + </div> + </div> +</template> + +<script type="text/ecmascript-6"> + // import {CONFIG} from './assets/config.js' + import {CONFIG} from '../lib/config.js' + import styles from '../lib/core/hljs/lang.hljs.css.js' + export default { + name: 'app', + data () { + return { + d_language: 'zh-CN', + help1: '', + help2: '', + d_words: {}, + screen_phone: false, + toolbars: { + underline: true, // 下划线 + strikethrough: true, // 中划线 + alignCenter: true, // 中划线 + undo: true, + save: true, + fullscreen: true, // 全屏编辑 + navigation: true, + preview: true, + subfield: false + }, + autofocus: true, + subfield: true, + editable: true, + toolbarsFlag: true, + img_file: {}, + toolbar_settings: { + undo: true, // 上一步 + redo: true, // 下一步 + bold: true, // 粗体 + italic: true, // 斜体 + header: true, // 标题 + underline: true, // 下划线 + strikethrough: true, // 中划线 + quote: true, // 引用 + ol: true, // 有序列表 + ul: true, // 无序列表 + link: true, // 链接 + code: true, // code + readmodel: true, // 沉浸式阅读 + htmlcode: true, // 展示html源码 + /* 2.1.8 */ + alignleft: true, // 左对齐 + aligncenter: true, // 居中 + alignright: true, // 右对齐 + /* 2.2.1 */ + subfield: true, // 单双栏模式 + preview: true, // 预览 + /* 1.4.2 */ + navigation: true // 导航目录 + }, + image_filter: function($files) { + console.log('image_filter files:', $files); + // console.log('here for you', $files); + return true; + }, + imageClick: function (file) { + console.log(file); + }, + imgName: '', + codeStyle: "github", + styles + } + }, + created () { + var $vm = this; + this.initLanguage(); + this.sizeToStatus() + window.addEventListener('resize', function() { + // 媒介查询 + $vm.sizeToStatus() + }) + }, + mounted() { + var md = this.$refs.md; + var toolbar_left = md.$refs.toolbar_left; + var diy = this.$refs.diy; + toolbar_left.$el.append(diy) + // toolbar_left.$el.append(diy.$el) + // console.log(toolbar_left) + }, + methods: { + clearCache() { + this.$refs.md.$emptyHistory() + }, + $click(val) { + console.log(val); + }, + imgreplace($e) { + console.log('here'); + this.$refs.md.$imglst2Url([ + [0, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png'], + [1, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png'] + ]); + }, + uploadimg($e) { + console.log(this.img_file); + for (var _img in this.img_file) { + this.$refs.md.$img2Url(_img, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png') + } + /* var formdata = new FormData(); + for (var _img in this.img_file) { + formdata.append(_img, this.img_file[_img]); + // _imglst.push([_img, this.img_file[_img]]); + } + axios({ + url: 'http://127.0.0.1/index.php', + method: 'post', + data: formdata, + headers: {'Content-Type': 'multipart/form-data'}, + }).then((res) => { + console.log(res); + }) */ + }, + $imgAdd(pos, $file) { + console.log('imgAdd', pos, $file); + this.img_file[pos] = $file; + // console.log(this.$refs.md.$refs.toolbar_left.$imgDelByFilename(pos)); + // console.log(this.$refs.md.$refs.toolbar_left.$imgAddByFilename('./test', $file)) + // console.log(this.$refs.md.$refs.toolbar_left.$imgUpdateByFilename('./test', $file)) + // console.log(this.$refs.md.$refs.toolbar_left.$imgAddByFilename('./test', $file)) + // console.log(this.$refs.md); + // this.$refs.md.$imgUpdateByUrl(pos, 'http://pic.58pic.com/58pic/13/46/50/61758PICWZY_1024.jpg'); + }, + $imgDel(pos) { + console.log('imgDel', pos); + delete this.img_file[pos]; + }, + sizeToStatus () { + if (window.matchMedia('(min-width:768px)').matches) { + // > 768 + this.screen_phone = false + } else { + // < 768 + this.screen_phone = true + } + }, + saveone (val, render) { + alert('save one') + }, + savetwo (val, render) { + alert('save two') + }, + change (val, render) { + console.log(val) + }, + opchange (event) { + this.d_language = event.target.value; + }, + initLanguage() { + this.d_words = CONFIG[`words_${this.d_language}`] + this.help1 = CONFIG[`help_${this.d_language}`] + this.help2 = CONFIG[`help_${this.d_language}`] + }, + $subfieldtoggle(flag , value) { + console.log('sufield toggle' + flag) + }, + $previewtoggle(flag , value) { + console.log('preview toggle' + flag) + }, + imgdelete() { + var md = this.$refs.md; + var toolbar_left = md.$refs.toolbar_left; + toolbar_left.$imgDelByFilename(this.imgName); + } + }, + watch: { + d_language: function () { + this.initLanguage(); + } + } + } +</script> + +<style lang="stylus" rel="stylesheet/stylus"> + body + margin 0 + padding 0 + padding-bottom 50px + .switch-code-style + display inline + margin-left 8px + .page-lang + position absolute + top 15px + right 2% + .page-header + box-sizing border-box + padding 90px 15px + width 100% + height 380px + color #fff + text-align center + background-color #159957 + background-image linear-gradient(120deg, #155799, #159957) + @media only screen and (max-width 958px) + height 300px + padding 60px 15px + @media only screen and (max-width 768px) + height 370px + padding 50px 15px + .project-name + margin-top 0 + margin-bottom 0.1rem + font-size 2.25rem + @media only screen and (max-width 768px) + font-size 25px + .project-tagline + margin-bottom 2rem + font-weight normal + opacity 0.7 + @media only screen and (max-width 768px) + font-size 16px + .btn + padding: 0.6rem 0.9rem + font-size: 0.9rem + display: inline-block + margin-bottom: 1rem + color: rgba(255, 255, 255, 0.7) + background-color: rgba(255, 255, 255, 0.08) + border-color: rgba(255, 255, 255, 0.2) + border-style: solid + border-width: 1px + border-radius: 0.3rem + transition: color 0.2s, background-color 0.2s, border-color 0.2s + text-decoration: none + margin-left 20px + box-sizing border-box + &:hover + color: rgba(255, 255, 255, 0.8) + text-decoration: none + background-color: rgba(255, 255, 255, 0.2) + border-color: rgba(255, 255, 255, 0.3) + @media only screen and (max-width 768px) + display: block + width: 90% + padding: 0.75rem + font-size: 0.9rem + margin-left 5% + .item + width 75% + margin-left 12.5% + @media only screen and (max-width 1100px) + width 85% + margin-left 7.5% + @media only screen and (max-width 768px) + width 92% + margin-left 4% + .item-header + margin-top: 3.5rem + margin-bottom: 2rem + font-weight: normal + color: #159957 + @media only screen and (max-width 768px) + margin-top: 2rem + margin-bottom: 1rem + .item-button + margin-bottom: 4rem + .item-editor + width 100% + height 700px + @media only screen and (max-width 1600px) + height 550px +</style> diff --git a/node_modules/mavon-editor/src/dev/assets/config.js b/node_modules/mavon-editor/src/dev/assets/config.js new file mode 100644 index 0000000..a142bde --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/config.js @@ -0,0 +1,35 @@ +/** + * Created by zhy on 2017/5/11. + */ +import help_zh_CN from './lang/zh-CN/help_zh-CN.md' +import help_zh_TW from './lang/zh-TW/help_zh-TW.md' +import help_en from './lang/en/help_en.md' +import help_fr from './lang/fr/help_fr.md' +import help_pt_BR from './lang/pt-BR/help_pt-BR.md' +import help_ru from './lang/ru/help_ru.md' +import help_de from './lang/de/help_de.md' + +import words_zh_CN from './lang/zh-CN/words_zh-CN.json' +import words_zh_TW from './lang/zh-TW/words_zh-TW.json' +import words_en from './lang/en/words_en.json' +import words_fr from './lang/fr/words_fr.json' +import words_pt_BR from './lang/pt-BR/words_pt-BR.json' +import words_ru from './lang/ru/words_ru.json' +import words_de from './lang/de/words_de.json' + +export const CONFIG = { + 'help_zh-CN': help_zh_CN, + 'help_zh-TW': help_zh_TW, + 'help_pt-BR': help_pt_BR, + 'help_en': help_en, + 'help_fr': help_fr, + 'help_ru': help_ru, + 'help_de': help_de, + 'words_zh-CN': words_zh_CN, + 'words_zh-TW': words_zh_TW, + 'words_pt-BR': words_pt_BR, + 'words_en': words_en, + 'words_fr': words_fr, + 'words_ru': words_ru, + 'words_de': words_de +} diff --git a/node_modules/mavon-editor/src/dev/assets/img/1.png b/node_modules/mavon-editor/src/dev/assets/img/1.png new file mode 100644 index 0000000000000000000000000000000000000000..30335319087dfee0d0ac79dbe625177d03072c25 GIT binary patch literal 2708 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 O0000<MNUMnLSTZpOcxvg literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/dev/assets/img/2.png b/node_modules/mavon-editor/src/dev/assets/img/2.png new file mode 100644 index 0000000000000000000000000000000000000000..19ab7f0ab73d684544cc7fd25571ff01dad7ab58 GIT binary patch literal 2502 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 QYXATM07*qoM6N<$g8G=dW&i*H literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md b/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md new file mode 100644 index 0000000..7db0345 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md @@ -0,0 +1,204 @@ +@[toc](Catalog) + +Markdown Handbuch +=== +> Details: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Fett** +``` +**fett** +__fett__ +``` +## *Kursiv* +``` +*kursiv* +_kursiv_ +``` +## Überschriften +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Trennlinien +``` +*** +--- +``` +**** +## ^Hoch^gestellt & ~Tief~gestellt +``` +hochgestellt x^2^ +tiefgestellt H~2~0 +``` +## ++Unterstrichen++ & ~~Durchgestrichen~~ +``` +++unterstrichen++ +~~durchgestrichen~~ +``` +## ==Markiert== +``` +==markiert== +``` +## Zitat + +``` +> zitat 1 +>> zitat 2 +>>> zitat 3 +... +``` + +## Liste +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Todo Liste + +- [x] aufgabe 1 +- [ ] aufgabe 2 + +``` +- [x] aufgabe 1 +- [ ] aufgabe 2 +``` + +## Link +``` +Text Link +[Text](www.baidu.com) + +Link mit Bild + +``` +## Code +\``` Typ + +Codeblock + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Tabelle +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| links | mitte | rechts | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| links | mitte | rechts | +| ---------------------- | ------------- | ----------------- | +## Fußnote +``` +hallo[^hallo] +``` + +Schau zum unteren Rand[^hallo] + +[^hallo]: fussnote + +## Emojis +Details: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematik + +Formeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\sum_{i=1}^n a_i=0$ +Formeln können auf einer eigenen Zeile gerendert werden +$$\sum_{i=1}^n a_i=0$$ +Details: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`links` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`mitte` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`rechts` +`:::` +::: + +## Liste von Definitionen + +Term 1 + +: Definition 1 + +Term 2 mit *inline markup* + +: Definition 2 + + { ein wenig code, teil von Definition 2 } + + Dritter Absatz von Definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 mit *inline markup* + +: Definition 2 + + { ein wenig code, teil von Definition 2 } + + Dritter Absatz von Definition 2. + +``` + +## Abkürzungen +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +Die HTML Spezifikation +wird gepflegt vom W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +Die HTML Spezifikation +wird gepflegt vom W3C. +``` diff --git a/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json b/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json new file mode 100644 index 0000000..9325671 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Bearbeitung beginnen...", + "navigation_title": "Navigation", + "tl_bold": "Fett", + "tl_italic": "Kursiv", + "tl_header": "Überschrift", + "tl_header_one": "Überschrift 1", + "tl_header_two": "Überschrift 2", + "tl_header_three": "Überschrift 3", + "tl_header_four": "Überschrift 4", + "tl_header_five": "Überschrift 5", + "tl_header_six": "Überschrift 6", + "tl_underline": "Unterstrichen", + "tl_strikethrough": "Durchgestrichen", + "tl_mark": "Markiert", + "tl_superscript": "Hochgestellt", + "tl_subscript": "Tiefgestellt", + "tl_quote": "Zitat", + "tl_ol": "Ol", + "tl_ul": "Ul", + "tl_link": "Link", + "tl_image": "Link mit Bild", + "tl_code": "Code", + "tl_table": "Tabelle", + "tl_undo": "Rückgängig", + "tl_redo": "Wiederherstellen", + "tl_trash": "Mülleimer", + "tl_save": "Speichern", + "tl_navigation_on": "Navigation AN", + "tl_navigation_off": "Navigation AUS", + "tl_preview": "Vorschau", + "tl_aligncenter": "Text zentrieren", + "tl_alignleft": "Nach links ausrichten", + "tl_alignright": "Nach rechts ausrichten", + "tl_edit": "Bearbeiten", + "tl_single_column": "Einspaltig", + "tl_double_column": "Zweispaltig", + "tl_fullscreen_on": "Vollbild AN", + "tl_fullscreen_off": "Vollbild AUS", + "tl_read": "Lesemodus", + "tl_html_on": "HTML AN", + "tl_html_off": "HTML AUS", + "tl_help": "Markdown Handbuch", + "tl_upload": "Bilder-Upload", + "tl_upload_remove": "Entfernen", + "tl_popup_link_title": "Link hinzufügen", + "tl_popup_link_text": "Text des Links", + "tl_popup_link_addr": "Linkziel", + "tl_popup_img_link_title": "Bild hinzufügen", + "tl_popup_img_link_text": "Text des Bildes", + "tl_popup_img_link_addr": "Link auf Bild", + "tl_popup_link_sure": "Ja", + "tl_popup_link_cancel": "Abbruch" +} diff --git a/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md b/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md new file mode 100644 index 0000000..e6abfd0 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md @@ -0,0 +1,204 @@ +@[toc](Catalog) + +Markdown Guide +=== +> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Bold** +``` +**bold** +__bold__ +``` +## *Italic* +``` +*italic* +_italic_ +``` +## Header +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Dividing line +``` +*** +--- +``` +**** +## ^Super^script & ~Sub~script +``` +super x^2^ +sub H~2~0 +``` +## ++Underline++ & ~~Strikethrough~~ +``` +++underline++ +~~strikethrough~~ +``` +## ==Mark== +``` +==mark== +``` +## Quote + +``` +> quote 1 +>> quote 2 +>>> quote 3 +... +``` + +## List +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Todo List + +- [x] task 1 +- [ ] task 2 + +``` +- [x] task 1 +- [ ] task 2 +``` + +## Link +``` +Text Link +[Text](www.baidu.com) + +Image Link + +``` +## Code +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Table +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Footnote +``` +hello[^hello] +``` + +Look at the bottom[^hello] + +[^hello]: footnote + +## Emojis +Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +We can also single-line rendering +$$\sum_{i=1}^n a_i=0$$ +Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## deflist + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json b/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json new file mode 100644 index 0000000..e30268d --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Begin editing...", + "navigation_title": "Navigation", + "tl_bold": "Bold", + "tl_italic": "Italic", + "tl_header": "Header", + "tl_header_one": "Header 1", + "tl_header_two": "Header 2", + "tl_header_three": "Header 3", + "tl_header_four": "Header 4", + "tl_header_five": "Header 5", + "tl_header_six": "Header 6", + "tl_underline": "Underline", + "tl_strikethrough": "Strikethrough", + "tl_mark": "Mark", + "tl_superscript": "Superscript", + "tl_subscript": "Subscript", + "tl_quote": "Quote", + "tl_ol": "Ol", + "tl_ul": "Ul", + "tl_link": "Link", + "tl_image": "Image Link", + "tl_code": "Code", + "tl_table": "Table", + "tl_undo": "Undo", + "tl_redo": "Redo", + "tl_trash": "Trash", + "tl_save": "Save", + "tl_navigation_on": "Navigation ON", + "tl_navigation_off": "Navigation OFF", + "tl_preview": "Preview", + "tl_aligncenter": "Center text", + "tl_alignleft": "Clamp text to the left", + "tl_alignright": "Clamp text to the right", + "tl_edit": "Edit", + "tl_single_column": "Single Column", + "tl_double_column": "Double Columns", + "tl_fullscreen_on": "FullScreen ON", + "tl_fullscreen_off": "FullScreen OFF", + "tl_read": "Read Model", + "tl_html_on": "HTML ON", + "tl_html_off": "HTML OFF", + "tl_help": "Markdown Guide", + "tl_upload": "Upload Images", + "tl_upload_remove": "Remove", + "tl_popup_link_title": "Add Link", + "tl_popup_link_text": "Link text", + "tl_popup_link_addr": "Link address", + "tl_popup_img_link_title": "Add Image", + "tl_popup_img_link_text": "Image Text", + "tl_popup_img_link_addr": "Image Link", + "tl_popup_link_sure": "Sure", + "tl_popup_link_cancel": "Cancel" +} diff --git a/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md b/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md new file mode 100644 index 0000000..b3a19fe --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md @@ -0,0 +1,204 @@ +@[toc](Catalogue) + +Guide Markdown +============== +> Détail : [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Bold** +``` +**bold** +__bold__ +``` +## *Italic* +``` +*italic* +_italic_ +``` +## Header +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Dividing line +``` +*** +--- +``` +**** +## ^Super^script & ~Sub~script +``` +super x^2^ +sub H~2~0 +``` +## ++Underline++ & ~~Strikethrough~~ +``` +++underline++ +~~strikethrough~~ +``` +## ==Mark== +``` +==mark== +``` +## Quote + +``` +> quote 1 +>> quote 2 +>>> quote 3 +... +``` + +## List +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` +## Link + +## Todo List + +- [x] Équipe 1 +- [ ] Équipe 2 + +``` +- [x] Équipe 1 +- [ ] Équipe 2 +``` + +``` +Text Link +[Text](www.baidu.com) + +Image Link + +``` +## Code +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Table +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Footnote +``` +hello[^hello] +``` + +Look at the bottom[^hello] + +[^hello]: footnote + +## Emojis +Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +We can also single-line rendering +$$\sum_{i=1}^n a_i=0$$ +Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## deflist + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json b/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json new file mode 100644 index 0000000..0c5c176 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json @@ -0,0 +1,55 @@ +{ + "start_editor": "Début d'édition...", + "navigation_title": "Navigation", + "tl_bold": "Gras", + "tl_italic": "Italique", + "tl_header": "Entête", + "tl_header_one": "Entête 1", + "tl_header_two": "Entête 2", + "tl_header_three": "Entête 3", + "tl_header_four": "Entête 4", + "tl_header_five": "Entête 5", + "tl_header_six": "Entête 6", + "tl_underline": "Souligné", + "tl_strikethrough": "Barré", + "tl_mark": "Mark", + "tl_superscript": "Exposant", + "tl_subscript": "Sous-exposant", + "tl_quote": "Quote", + "tl_ol": "Liste ", + "tl_ul": "Puce", + "tl_link": "Lien", + "tl_image": "Image Lien", + "tl_code": "Code", + "tl_table": "Table", + "tl_undo": "Annuler", + "tl_redo": "Refaire", + "tl_trash": "Supprimer", + "tl_save": "Sauver", + "tl_navigation_on": "Activer la navigation", + "tl_navigation_off": "Désactiver le navigation", + "tl_preview": "Previsualisé", + "tl_aligncenter": "Center le texte", + "tl_alignleft": "Férer le texte à gauche", + "tl_alignright": "Férer le texte à droite", + "tl_preview": "Previsualisé", + "tl_edit": "Editer", + "tl_single_column": "Seule Colonne", + "tl_double_column": "Colonnes Doubles", + "tl_fullscreen_on": "Activer le mode plein écran", + "tl_fullscreen_off": "Désactiver le mode plein écran", + "tl_read": "Lire le modèle", + "tl_html_on": "Activer le mode HTML", + "tl_html_off": "Désactiver le mode HTML", + "tl_help": "Guide Markdown", + "tl_upload": "Télécharger les images", + "tl_upload_remove": "Supprimer", + "tl_popup_link_title": "Ajouter un lien", + "tl_popup_link_text": "Description", + "tl_popup_link_addr": "Link", + "tl_popup_img_link_title": "Ajouter une image", + "tl_popup_img_link_text": "Description", + "tl_popup_img_link_addr": "Link", + "tl_popup_link_sure": "sûr", + "tl_popup_link_cancel": "Annuler" +} diff --git a/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md new file mode 100644 index 0000000..dd5d442 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md @@ -0,0 +1,204 @@ +@[toc](Directory) + +Guia Markdown +=== +> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Negrito** +``` +**negrito** +__negrito__ +``` +## *Itálico* +``` +*itálico* +_itálico_ +``` +## Cabeçalho +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Linha Divisora +``` +*** +--- +``` +**** +## ^Sobre^scrito & ~Sub~scrito +``` +sobre x^2^ +sub H~2~0 +``` +## ++Sublinhar++ & ~~Tachar~~ +``` +++sublinhar++ +~~tachar~~ +``` +## ==Marcador== +``` +==marcador== +``` +## Citação + +``` +> citação 1 +>> citação 2 +>>> citação 3 +... +``` + +## Listas +``` +lista Numerada +1. +2. +3. +... + +lista com marcadores +- +- +... +``` + +## Todo Listas + +- [x] Tarefa 1 +- [ ] Tarefa 2 + +``` +- [x] Tarefa 1 +- [ ] Tarefa 2 +``` + +## Link +``` +Link Texto +[Text](www.baidu.com) + +Link Imagem + +``` +## Código +\``` tipo + +bloco de código + +\``` + +\` código \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Tabela +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| esquerda | centro | direita | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| esquerda | centro | direita | +| ---------------------- | ------------- | ----------------- | +## Rodapé +``` +olá[^olá] +``` + +Olhe para baixo[^olá] + +[^olá]: rodapé + +## Emojis +Detalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +Podemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +Podemos também mostrar em uma única linha: +$$\sum_{i=1}^n a_i=0$$ +Detalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`esquerda` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`centro` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`direita` +`:::` +::: + +## Definições + +Termo 1 + +: Definição 1 + +Termo 2 com *markup inline* + +: Definição 2 + + { um pouco de código, parte da Definição 2 } + + Terceiro parágrafo da definição 2. + +``` +Termo 1 + +: Definição 1 + +Termo 2 com *markup inline* + +: Definição 2 + + { um pouco de código, parte da Definição 2 } + + Terceiro parágrafo da definição 2. + +``` + +## Abreviações +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +A especificação HTML +é mantida pela W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +é mantida pela W3C. +``` diff --git a/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json new file mode 100644 index 0000000..3e4046a --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Começar edição...", + "navigation_title": "Navegação", + "tl_bold": "Negrito", + "tl_italic": "Itálico", + "tl_header": "Cabeçalho", + "tl_header_one": "Cabeçalho 1", + "tl_header_two": "Cabeçalho 2", + "tl_header_three": "Cabeçalho 3", + "tl_header_four": "Cabeçalho 4", + "tl_header_five": "Cabeçalho 5", + "tl_header_six": "Cabeçalho 6", + "tl_underline": "Sublinhar", + "tl_strikethrough": "Tachar", + "tl_mark": "Marcação", + "tl_superscript": "Sobrescrito", + "tl_subscript": "Subscrito", + "tl_quote": "Citação", + "tl_ol": "Lista Numerada", + "tl_ul": "Lista com marcadores", + "tl_link": "Link", + "tl_image": "Link de imagem", + "tl_code": "Código", + "tl_table": "Tabela", + "tl_undo": "Desfazer", + "tl_redo": "Refazer", + "tl_trash": "Lixo", + "tl_save": "Salvar", + "tl_navigation_on": "Mostrar Navegação", + "tl_navigation_off": "Esconder Navegação", + "tl_preview": "Preview", + "tl_aligncenter": "Alinhar no centro", + "tl_alignleft": "Alinhar à esquerda", + "tl_alignright": "Alinhar à direita", + "tl_edit": "Editar", + "tl_single_column": "Coluna Única", + "tl_double_column": "Duas Colunas", + "tl_fullscreen_on": "Ligar Tela Cheia", + "tl_fullscreen_off": "Desligar Tela Cheia", + "tl_read": "Modo de Leitura", + "tl_html_on": "Ligar HTML", + "tl_html_off": "Desligar HTML", + "tl_help": "Guia Markdown", + "tl_upload": "Upload de Imagens", + "tl_upload_remove": "Remover", + "tl_popup_link_title": "Adicionar Link", + "tl_popup_link_text": "Descrição", + "tl_popup_link_addr": "Link", + "tl_popup_img_link_title": "Adicionar fotos", + "tl_popup_img_link_text": "Descrição", + "tl_popup_img_link_addr": "Link", + "tl_popup_link_sure": "Confirmar", + "tl_popup_link_cancel": "Cancelar" +} \ No newline at end of file diff --git a/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md b/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md new file mode 100644 index 0000000..36d6a72 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md @@ -0,0 +1,202 @@ +@[toc](Catalog) + +Markdown помощь +=== +> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Полужирный** +``` +**Полужирный** +__Полужирный__ +``` +## *Курсив* +``` +*Курсив* +_Курсив_ +``` +## Заголовок +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Разделительная линия +``` +*** +--- +``` +**** +## ^Верхний^индекс & ~Нижний~индекс +``` +верхний x^2^ +нижний H~2~0 +``` +## ++Подчеркнутый++ & ~~Зачеркнутый~~ +``` +++Подчеркнутый++ +~~Зачеркнутый~~ +``` +## ==Отметка== +``` +==Отметка== +``` +## Цитата + +``` +> Цитата +>> Цитата 2 +>>> Цитата 3 +... +``` + +## Список +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Список задач + +- [x] Задача 1 +- [ ] Задача 2 + +``` +- [x] Задача 1 +- [ ] Задача 2 +``` + +## Ссылка +``` +Ссылка +[Текст](www.baidu.com) + +Ссылка изображения + +``` +## Код +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!");} +``` +`code` + +## Таблица +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Сноска +``` +Привет[^Привет] +``` + +Тут что-то непонятное[^Привет] + +[^Привет]: А тут объяснение + +## Emojis +Подробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +Можно выводить такие формулы:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +А также в одну строку: +$$\sum_{i=1}^n a_i=0$$ +Подробнее: +- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php) +- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX) +- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Разметка + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## Список определений + +Термин 1 + +: Определение 1 + +Термин 2 с использованием *разметки* + +: Определение 2 + + { Какой-нибудь код, часть определения 2 } + Третий параграф определения 2. +``` +Термин 1 + +: Определение 1 + +Термин 2 с использованием *разметки* + +: Определение 2 + + { Какой-нибудь код, часть определения 2 } + Третий параграф определения 2. +``` + +## Сокращения +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json b/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json new file mode 100644 index 0000000..83a68e6 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Начните редактирование...", + "navigation_title": "Навигация", + "tl_bold": "Полужирный", + "tl_italic": "Курсив", + "tl_header": "Заголовки", + "tl_header_one": "Заголовок 1", + "tl_header_two": "Заголовок 2", + "tl_header_three": "Заголовок 3", + "tl_header_four": "Заголовок 4", + "tl_header_five": "Заголовок 5", + "tl_header_six": "Заголовок 6", + "tl_underline": "Подчеркнутый", + "tl_strikethrough": "Зачеркнутый", + "tl_mark": "Отметка", + "tl_superscript": "Верхний индекс", + "tl_subscript": "Нижний индекс", + "tl_quote": "Цитата", + "tl_ol": "Нумерованный список", + "tl_ul": "Список", + "tl_link": "Ссылка", + "tl_image": "Ссылка изображения", + "tl_code": "Код", + "tl_table": "Таблица", + "tl_undo": "Отменить", + "tl_redo": "Вернуть", + "tl_trash": "Удалить", + "tl_save": "Сохранить", + "tl_navigation_on": "Показать навигацию", + "tl_navigation_off": "Скрыть навигацию", + "tl_preview": "Предпросмотр", + "tl_aligncenter": "Выровнять по центру", + "tl_alignleft": "Выровнять по левому краю", + "tl_alignright": "Выровнять по правому краю", + "tl_edit": "Редактор", + "tl_single_column": "Одно поле", + "tl_double_column": "Два поля", + "tl_fullscreen_on": "Полноэкранный режим", + "tl_fullscreen_off": "Выключить полноэкранный режим", + "tl_read": "Режим чтения", + "tl_html_on": "Показать HTML", + "tl_html_off": "Убрать HTML", + "tl_help": "Markdown помощь", + "tl_upload": "Загрузить изображение", + "tl_upload_remove": "Удалить", + "tl_popup_link_title": "Добавить ссылку", + "tl_popup_link_text": "Текст ссылки", + "tl_popup_link_addr": "Адрес ссылки", + "tl_popup_img_link_title": "Локальное изображение", + "tl_popup_img_link_text": "Текст изображения", + "tl_popup_img_link_addr": "Ссылка изображения", + "tl_popup_link_sure": "Добавить", + "tl_popup_link_cancel": "Отменить" +} diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md new file mode 100644 index 0000000..fb7a8dc --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md @@ -0,0 +1,198 @@ +@[toc](目录) + +Markdown 语法简介 +============= +> [语法详解](http://commonmark.org/help/) + +## **粗体** +``` +**粗体** +__粗体__ +``` +## *斜体* +``` +*斜体* +_斜体_ +``` +## 标题 +``` +# 一级标题 # +一级标题 +==== +## 二级标题 ## +二级标题 +---- +### 三级标题 ### +#### 四级标题 #### +##### 五级标题 ##### +###### 六级标题 ###### +``` +## 分割线 +``` +*** +--- +``` +**** +## ^上^角~下~标 +``` +上角标 x^2^ +下角标 H~2~0 +``` +## ++下划线++ ~~中划线~~ +``` +++下划线++ +~~中划线~~ +``` +## ==标记== +``` +==标记== +``` +## 段落引用 +``` +> 一级 +>> 二级 +>>> 三级 +... +``` + +## 列表 +``` +有序列表 +1. +2. +3. +... +无序列表 +- +- +... +``` + +## 任务列表 + +- [x] 已完成任务 +- [ ] 未完成任务 + +``` +- [x] 已完成任务 +- [ ] 未完成任务 +``` + +## 链接 +``` +[链接](www.baidu.com) + +``` +## 代码段落 +\``` type + +代码段落 + +\``` + +\` 代码块 \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` +## 表格(table) +``` +| 标题1 | 标题2 | 标题3 | +| :-- | :--: | ----: | +| 左对齐 | 居中 | 右对齐 | +| ---------------------- | ------------- | ----------------- | +``` +| 标题1 | 标题2 | 标题3 | +| :-- | :--: | ----: | +| 左对齐 | 居中 | 右对齐 | +| ---------------------- | ------------- | ----------------- | +## 脚注(footnote) +``` +hello[^hello] +``` + +见底部脚注[^hello] + +[^hello]: 一个注脚 + +## 表情(emoji) +[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$公式 + +我们可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$ +我们也可以单行渲染 +$$\sum_{i=1}^n a_i=0$$ +具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## 布局 + +::: hljs-left +`::: hljs-left` +`居左` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`居中` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`居右` +`:::` +::: + +## 定义 + +术语一 + +: 定义一 + +包含有*行内标记*的术语二 + +: 定义二 + + {一些定义二的文字或代码} + + 定义二的第三段 + +``` +术语一 + +: 定义一 + +包含有*行内标记*的术语二 + +: 定义二 + + {一些定义二的文字或代码} + + 定义二的第三段 + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 规范由 W3C 维护 +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 规范由 W3C 维护 +``` + diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json new file mode 100644 index 0000000..1a03e14 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json @@ -0,0 +1,54 @@ +{ + "start_editor": "开始编辑...", + "navigation_title": "导航目录", + "tl_bold": "粗体", + "tl_italic": "斜体", + "tl_header": "标题", + "tl_header_one": "一级标题", + "tl_header_two": "二级标题", + "tl_header_three": "三级标题", + "tl_header_four": "四级标题", + "tl_header_five": "五级标题", + "tl_header_six": "六级标题", + "tl_underline": "下划线", + "tl_strikethrough": "中划线", + "tl_mark": "标记", + "tl_superscript": "上角标", + "tl_subscript": "下角标", + "tl_quote": "段落引用", + "tl_ol": "有序列表", + "tl_ul": "无序列表", + "tl_link": "链接", + "tl_image": "添加图片链接", + "tl_code": "代码块", + "tl_table": "表格", + "tl_undo": "上一步", + "tl_redo": "下一步", + "tl_trash": "清空", + "tl_save": "保存", + "tl_navigation_on": "开启标题导航", + "tl_navigation_off": "关闭标题导航", + "tl_preview": "预览", + "tl_aligncenter": "居中", + "tl_alignleft": "居左", + "tl_alignright": "居右", + "tl_edit": "编辑", + "tl_single_column": "单栏", + "tl_double_column": "双栏", + "tl_fullscreen_on": "全屏编辑", + "tl_fullscreen_off": "退出全屏", + "tl_read": "沉浸式阅读", + "tl_html_on": "查看html文本", + "tl_html_off": "返回markdown文本", + "tl_help": "markdown语法帮助", + "tl_upload": "上传图片", + "tl_upload_remove": "删除", + "tl_popup_link_title": "添加链接", + "tl_popup_link_text": "链接描述", + "tl_popup_link_addr": "链接地址", + "tl_popup_img_link_title": "添加图片", + "tl_popup_img_link_text": "图片描述", + "tl_popup_img_link_addr": "图片链接", + "tl_popup_link_sure": "确定", + "tl_popup_link_cancel": "取消" +} diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md new file mode 100644 index 0000000..ac451b9 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md @@ -0,0 +1,198 @@ +@[toc](目錄) + +Markdown 語法簡介 +============= +> [語法詳解](http://commonmark.org/help/) + +## **粗體** +``` +**粗體** +__粗體__ +``` +## *斜體* +``` +*斜體* +_斜體_ +``` +## 標題 +``` +# 一級標題 # +一級標題 +==== +## 二級標題 ## +二級標題 +---- +### 三級標題 ### +#### 四級標題 #### +##### 五級標題 ##### +###### 六級標題 ###### +``` +## 分割線 +``` +*** +--- +``` +**** +## ^上^角~下~標 +``` +上角標 x^2^ +下角標 H~2~0 +``` +## ++下劃線++ ~~中劃線~~ +``` +++下劃線++ +~~中劃線~~ +``` +## ==標記== +``` +==標記== +``` +## 段落引用 +``` +> 一級 +>> 二級 +>>> 三級 +... +``` + +## 列表 +``` +有序列表 +1. +2. +3. +... +無序列表 +- +- +... +``` + +## 任務列表 + +- [x] 已完成任務 +- [ ] 未完成任務 + +``` +- [x] 已完成任務 +- [ ] 未完成任務 +``` + +## 鏈接 +``` +[鏈接](www.baidu.com) + +``` +## 代碼段落 +\``` type + +代碼段落 + +\``` + +\` 代碼塊 \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` +## 表格(table) +``` +| 標題1 | 標題2 | 標題3 | +| :-- | :--: | ----: | +| 左對齊 | 居中 | 右對齊 | +| ---------------------- | ------------- | ----------------- | +``` +| 標題1 | 標題2 | 標題3 | +| :-- | :--: | ----: | +| 左對齊 | 居中 | 右對齊 | +| ---------------------- | ------------- | ----------------- | +## 腳註(footnote) +``` +hello[^hello] +``` + +見底部腳註[^hello] + +[^hello]: 一個註腳 + +## 表情(emoji) +[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$公式 + +我們可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$ +我們也可以單行渲染 +$$\sum_{i=1}^n a_i=0$$ +具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## 布局 + +::: hljs-left +`::: hljs-left` +`居左` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`居中` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`居右` +`:::` +::: + +## 定義 + +術語一 + +: 定義一 + +包含有*行內標記*的術語二 + +: 定義二 + + {一些定義二的文字或代碼} + + 定義二的第三段 + +``` +術語一 + +: 定義一 + +包含有*行內標記*的術語二 + +: 定義二 + + {一些定義二的文字或代碼} + + 定義二的第三段 + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 規範由 W3C 維護 +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 規範由 W3C 維護 +``` + diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json new file mode 100644 index 0000000..e388ce3 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json @@ -0,0 +1,54 @@ +{ + "start_editor": "開始編輯...", + "navigation_title": "導航目錄", + "tl_bold": "粗體", + "tl_italic": "斜體", + "tl_header": "標題", + "tl_header_one": "一級標題", + "tl_header_two": "二級標題", + "tl_header_three": "三級標題", + "tl_header_four": "四級標題", + "tl_header_five": "五級標題", + "tl_header_six": "六級標題", + "tl_underline": "下劃線", + "tl_strikethrough": "中劃線", + "tl_mark": "標記", + "tl_superscript": "上角標", + "tl_subscript": "下角標", + "tl_quote": "段落引用", + "tl_ol": "有序列表", + "tl_ul": "無序列表", + "tl_link": "鏈接", + "tl_image": "添加圖片鏈接", + "tl_code": "代碼塊", + "tl_table": "表格", + "tl_undo": "上一步", + "tl_redo": "下一步", + "tl_trash": "清空", + "tl_save": "保存", + "tl_navigation_on": "開啟標題導航", + "tl_navigation_off": "關閉標題導航", + "tl_preview": "預覽", + "tl_aligncenter": "居中", + "tl_alignleft": "居左", + "tl_alignright": "居右", + "tl_edit": "編輯", + "tl_single_column": "單欄", + "tl_double_column": "雙欄", + "tl_fullscreen_on": "全屏編輯", + "tl_fullscreen_off": "退出全屏", + "tl_read": "沈浸式閱讀", + "tl_html_on": "查看html文本", + "tl_html_off": "返回markdown文本", + "tl_help": "markdown語法幫助", + "tl_upload": "上傳圖片", + "tl_upload_remove": "刪除", + "tl_popup_link_title": "添加鏈接", + "tl_popup_link_text": "鏈接描述", + "tl_popup_link_addr": "鏈接地址", + "tl_popup_img_link_title": "添加圖片", + "tl_popup_img_link_text": "圖片描述", + "tl_popup_img_link_addr": "圖片鏈接", + "tl_popup_link_sure": "確定", + "tl_popup_link_cancel": "取消" +} diff --git a/node_modules/mavon-editor/src/dev/demo.vue b/node_modules/mavon-editor/src/dev/demo.vue new file mode 100644 index 0000000..1adedf0 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/demo.vue @@ -0,0 +1,34 @@ +<template> + <div> + <div class="navigate"> + <span @click="viewIndex = 1">Full demo</span> + <span @click="viewIndex = 2">Simple demo</span> + </div> + <div> + <App v-if="viewIndex == 1"></App> + <Editor v-else-if="viewIndex == 2"></Editor> + </div> + </div> +</template> + +<script setup> +import App from './app.vue'; +import Editor from './editor.vue'; +import {ref} from "vue" + +const viewIndex = ref(1) +</script> +<style> +.navigate { + text-align: center; + font-size: 18px; + color: blue; +} +.navigate span { + margin-right: 5px; +} +.navigate span:hover { + cursor: pointer; + font-weight: bolder; +} +</style> \ No newline at end of file diff --git a/node_modules/mavon-editor/src/dev/editor.vue b/node_modules/mavon-editor/src/dev/editor.vue new file mode 100644 index 0000000..f59b0d5 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/editor.vue @@ -0,0 +1,66 @@ +<template> + <div class="container"> + <div id="editor"> + <mavon-editor style="height: 100%" v-model="code" :codeStyle="codeStyle" :xssOptions="xssOptions"></mavon-editor> + </div> + <div class="switch-code-style"> + <span>code style:</span> + <select v-model="codeStyle"> + <option v-for="(val, key) in styles" :value="key">{{ key }}</option> + </select> + </div> + </div> +</template> +<script> +import styles from '../lib/core/hljs/lang.hljs.css.js' +const code = `java +/** + * @author John Smith <john.smith@example.com> +*/ +package l2f.gameserver.model; +public abstract strictfp class L2Char extends L2Object { + public static final Short ERROR = 0x0001; + public void moveTo(int x, int y, int z) { + _ai = null; + log("Should not be called"); + if (1 > 5) { + return; + } + } +}`; + +module.exports = { + name: 'editor', + data: function() { + return { + codeStyle: "github", + styles, + code: '<span style="color:red;font-size:36px;">A</span> \n```' + code + '\n```', + xssOptions:{ + whiteList: { + span: ['style'] + } + } + }; + }, + computed: { + }, + methods: { + } +} +</script> +<style> +.container { + margin: auto; + width: 80%; +} + +#editor { + height: 580px; +} + +.switch-code-style { + margin-top: 10px; + font-size: 16px; +} +</style> diff --git a/node_modules/mavon-editor/src/dev/index.html b/node_modules/mavon-editor/src/dev/index.html new file mode 100644 index 0000000..4066676 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/index.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>md-test</title> + <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"> +</head> +<body> + <div id="main"> + </div> +</body> +</html> diff --git a/node_modules/mavon-editor/src/dev/index.js b/node_modules/mavon-editor/src/dev/index.js new file mode 100644 index 0000000..30da850 --- /dev/null +++ b/node_modules/mavon-editor/src/dev/index.js @@ -0,0 +1,18 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-04T23:26:08+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: index.js + * @Last modified by: chc + * @Last modified time: 2017-11-25T12:14:56+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +import { createApp, h } from 'vue'; +import demo from './demo.vue'; +import sMd from '../index' + +createApp({ + render: () => h(demo) +}).use(sMd).mount('#main'); diff --git a/node_modules/mavon-editor/src/index.js b/node_modules/mavon-editor/src/index.js new file mode 100644 index 0000000..7f57dc6 --- /dev/null +++ b/node_modules/mavon-editor/src/index.js @@ -0,0 +1,25 @@ +/** + * Created by zhy on 2017/4/1. + */ +'use strict'; + +/** + * mavonEditor + * @author hinesboy + */ +const mavonEditor = require('./mavon-editor.vue').default; +const VueMavonEditor = { + /** + * @deprecated + * @see mavonEditor.getMarkdownIt() + */ + markdownIt: mavonEditor.mixins[0].data().markdownIt, + mavonEditor: mavonEditor, + LeftToolbar: require('./components/md-toolbar-left').default, + RightToolbar: require('./components/md-toolbar-right').default, + install: function(Vue) { + Vue.component('mavon-editor', mavonEditor); + } +}; + +module.exports = VueMavonEditor; diff --git a/node_modules/mavon-editor/src/lib/config.js b/node_modules/mavon-editor/src/lib/config.js new file mode 100644 index 0000000..f768ec4 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/config.js @@ -0,0 +1,79 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-06T21:40:39+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: config.js + * @Last modified by: CHC + * @Last modified time: 2017-05-06T22:12:49+08:00 + * @License: MIT + * @Copyright: 2017 + * @desc 初始化配置项 + */ + +import help_zh_CN from './lang/zh-CN/help_zh-CN.md' +import help_zh_TW from './lang/zh-TW/help_zh-TW.md' +import help_en from './lang/en/help_en.md' +import help_fr from './lang/fr/help_fr.md' +import help_pt_BR from './lang/pt-BR/help_pt-BR.md' +import help_ru from './lang/ru/help_ru.md' +import help_de from './lang/de/help_de.md' +import help_ja from './lang/ja/help_ja.md' + +import words_zh_CN from './lang/zh-CN/words_zh-CN.json' +import words_zh_TW from './lang/zh-TW/words_zh-TW.json' +import words_en from './lang/en/words_en.json' +import words_fr from './lang/fr/words_fr.json' +import words_pt_BR from './lang/pt-BR/words_pt-BR.json' +import words_ru from './lang/ru/words_ru.json' +import words_de from './lang/de/words_de.json' +import words_ja from './lang/ja/words_ja.json' +export const CONFIG = { + 'help_zh-CN': help_zh_CN, + 'help_zh-TW': help_zh_TW, + 'help_pt-BR': help_pt_BR, + 'help_en': help_en, + 'help_fr': help_fr, + 'help_ru': help_ru, + 'help_de': help_de, + 'help_ja': help_ja, + 'words_zh-CN': words_zh_CN, + 'words_zh-TW': words_zh_TW, + 'words_pt-BR': words_pt_BR, + 'words_en': words_en, + 'words_fr': words_fr, + 'words_ru': words_ru, + 'words_de': words_de, + 'words_ja': words_ja, + 'langList': ['en', 'zh-CN', 'zh-TW', 'fr', 'pt-BR', 'ru', 'de', 'ja'], + 'toolbars': { + 'bold': true, + 'italic': true, + 'header': true, + 'underline': true, + 'strikethrough': true, + 'mark': true, + 'superscript': true, + 'subscript': true, + 'quote': true, + 'ol': true, + 'ul': true, + 'link': true, + 'imagelink': true, + 'code': true, + 'table': true, + 'undo': true, + 'redo': true, + 'trash': true, + 'save': true, + 'alignleft': true, + 'aligncenter': true, + 'alignright': true, + 'navigation': true, + 'subfield': true, + 'fullscreen': true, + 'readmodel': true, + 'htmlcode': true, + 'help': true, + 'preview': true + } +}; diff --git a/node_modules/mavon-editor/src/lib/core/extra-function.js b/node_modules/mavon-editor/src/lib/core/extra-function.js new file mode 100644 index 0000000..44b7eaf --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/extra-function.js @@ -0,0 +1,538 @@ +/** + * @Author: HuaChao Chen <chc> + * @Date: 2017-06-14T23:04:34+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: extra-function.js + * @Last modified by: CHC + * @Last modified time: 2017-12-19T17:46:48+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +/** + * Created by zhy on 2017/4/24. + */ +/** + * textarea 插入内容 + */ +export const insertTextAtCaret = (obj, {prefix, subfix, str, type}, $vm) => { + obj.focus() + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + if (startPos === endPos) { + // 直接插入 + obj.value = tmpStr.substring(0, startPos) + prefix + str + subfix + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = startPos + prefix.length; + obj.selectionEnd = startPos + (str.length + prefix.length); + } else { + // 存在选中区域 + if (tmpStr.substring(startPos - prefix.length, startPos) === prefix && tmpStr.substring(endPos, endPos + subfix.length) === subfix && judgeItalicAndBold(prefix, subfix, tmpStr, startPos, endPos)) { + // 取消 + obj.value = tmpStr.substring(0, startPos - prefix.length) + tmpStr.substring(startPos, endPos) + tmpStr.substring(endPos + subfix.length, tmpStr.length); + obj.selectionStart = startPos - prefix.length; + obj.selectionEnd = endPos - prefix.length; + } else { + // 确定 + obj.value = tmpStr.substring(0, startPos) + prefix + tmpStr.substring(startPos, endPos) + subfix + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = startPos + prefix.length; + obj.selectionEnd = startPos + (endPos - startPos + prefix.length); + } + } + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus() +} + +const code_structure = { + prefix: "```", + subfix: "\n```\n", + defaultLanguageText: "language" +} + +export const insertCodeBlock = ($vm) => { + let obj = $vm.getTextareaDom(); + + if (isExistSelectionObj(obj)) { + const {defaultLanguageText: language} = code_structure; + let { selectionStart: startPos, selectionEnd: endPos, value: tmpStr } = obj; + + if (startPos === endPos) { + // 直接插入 + insertCodeBlockToVM(language, "", obj); + } else { + // 存在选中区域 + if (isCancelCodeBlock(obj)) { + // 取消 + removeCodeBlockFromVM(obj); + } else { + // 确定 + let value = tmpStr.substring(startPos, endPos); + insertCodeBlockToVM("", value, obj); + } + } + } else { + alert('Error: Browser version is too low'); + return; + } + + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} + +function insertCodeBlockToVM(language, content, selectionObj) { + const {prefix, subfix} = code_structure; + let { selectionStart: startPos, selectionEnd: endPos, value: tmpStr } = selectionObj; + + let value = tmpStr.substring(0, startPos); + value += prefix + language + "\n"; + value += content; + value += subfix; + value += tmpStr.substring(endPos, tmpStr.length); + + selectionObj.value = value; + selectionObj.selectionStart = startPos + prefix.length + (language ? 0 : 1); + selectionObj.selectionEnd = selectionObj.selectionStart + language.length + content.length; +} + +function removeCodeBlockFromVM(selectionObj) { + let {prefix, subfix, defaultLanguageText: language} = code_structure; + let { selectionStart: startPos, selectionEnd: endPos, value: content } = selectionObj; + let selectedValue = content.substring(startPos, endPos); + + if (content.substring(startPos - 1, startPos) === "\n") + { + prefix = prefix + "\n"; + } else { + subfix = "\n" + subfix; + if (prefix + language + subfix === content.substring(startPos - prefix.length,endPos + subfix.length)) { + let value = content.substring(0, startPos - prefix.length); + value += content.substring(endPos + subfix.length, content.length) + + selectionObj.value = value; + selectionObj.selectionStart = startPos - prefix.length; + selectionObj.selectionEnd = selectionObj.selectionStart; + return; + } + } + + let value = content.substring(0, startPos - prefix.length); + value += selectedValue; + value += content.substring(endPos + subfix.length, content.length) + + selectionObj.value = value; + selectionObj.selectionStart = startPos - prefix.length; + selectionObj.selectionEnd = selectionObj.selectionStart + selectedValue.length; +} + +function isExistSelectionObj(textareaDom) { + return typeof textareaDom.selectionStart === 'number' && typeof textareaDom.selectionEnd === 'number'; +} + +function isCancelCodeBlock(selectionObj) { + let { selectionStart: startPos, selectionEnd: endPos, value: content } = selectionObj; + let {prefix, subfix} = code_structure; + + if (content.substring(startPos - 1, startPos) === "\n") + { + prefix = prefix + "\n"; + } else { + subfix = "\n" + subfix; + } + + return content.substring(startPos - prefix.length, startPos) === prefix && + content.substring(endPos, endPos + subfix.length) === subfix; +} + +// 处理粗体与斜体冲突问题 +function judgeItalicAndBold(prefix, subfix, tmpStr, startPos, endPos) { + if (prefix === '*' && subfix === '*') { + if (tmpStr.substring(startPos - 2, startPos - 1) === '*' && tmpStr.substring(endPos + 1, endPos + 2) === '*') { + return false + } + } + return true +} +// 插入有序列表 +export const insertOl = ($vm) => { + let obj = $vm.getTextareaDom(); + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + if (startPos === endPos) { + // 直接插入 + obj.value = tmpStr.substring(0, startPos) + '1. ' + tmpStr.substring(endPos, tmpStr.length); + obj.selectionEnd = obj.selectionStart = startPos + 3; + } else { + // 存在选中区域 + let start = startPos + while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') { + start-- + } + let selectStr = tmpStr.substring(start, endPos) + let selectStrs = selectStr.split('\n') + for (let i = 0; i < selectStrs.length; i++) { + selectStrs[i] = (i + 1) + '. ' + selectStrs[i] + } + let newSelectStr = selectStrs.join('\n') + obj.value = tmpStr.substring(0, start) + newSelectStr + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = start + obj.selectionEnd = endPos + newSelectStr.length - selectStr.length; + } + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} +// 删除行 +export const removeLine = ($vm) => { + let obj = $vm.getTextareaDom(); + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + // 找到行首、行尾 + let start = startPos + while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') { + start-- + } + let end = endPos + while (end < tmpStr.length && tmpStr.substring(end, end + 1) !== '\n') { + end++ + } + if (end < tmpStr.length) { + end++ + } + obj.value = tmpStr.substring(0, start) + tmpStr.substring(end, tmpStr.length); + obj.selectionEnd = obj.selectionStart = start === 0 ? 0 : start - 1; + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} +// 插入无序列表 +export const insertUl = ($vm) => { + let obj = $vm.getTextareaDom(); + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + if (startPos === endPos) { + // 直接插入 + obj.value = tmpStr.substring(0, startPos) + '- ' + tmpStr.substring(endPos, tmpStr.length); + obj.selectionEnd = obj.selectionStart = startPos + 2; + } else { + // 存在选中区域 + let start = startPos + while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') { + start-- + } + let selectStr = tmpStr.substring(start, endPos) + let newSelectStr = selectStr.replace(/\n/g, '\n- ') + newSelectStr = '- ' + newSelectStr + obj.value = tmpStr.substring(0, start) + newSelectStr + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = start + obj.selectionEnd = endPos + newSelectStr.length - selectStr.length; + } + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} +// 插入tab +export const insertTab = ($vm, tab) => { + tab = tab ? (new Array(tab)).fill(' ').join('') : '\t' + let obj = $vm.getTextareaDom(); + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + let lastLine = tmpStr.substring(0, startPos).split('\n').pop() + if (lastLine.match(/^\s*[0-9]+\.\s+\S*/)) { + // 有序列表 + let temp = lastLine.replace(/(\d+)/, 1) + obj.value = tmpStr.substring(0, startPos - temp.length) + tab + temp + tmpStr.substring(endPos, tmpStr.length); + } else if (lastLine.match(/^\s*-\s+\S*/)) { + // 无序列表 + obj.value = tmpStr.substring(0, startPos - lastLine.length) + tab + lastLine + tmpStr.substring(endPos, tmpStr.length); + } else { + obj.value = tmpStr.substring(0, startPos) + tab + tmpStr.substring(endPos, tmpStr.length); + } + obj.selectionStart = obj.selectionEnd = startPos + tab.length; + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} +// shift + tab +export const unInsertTab = ($vm, tab) => { + let regTab = new RegExp(tab ? `\\s{${tab}}` : '\t') + console.log(`regTab:`, regTab) + let obj = $vm.getTextareaDom(); + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + let lastLine = tmpStr.substring(0, startPos).split('\n').pop() + if (lastLine.search(regTab) >= 0) { + // 替换最后一个制表符为空 + obj.value = tmpStr.substring(0, startPos - lastLine.length) + lastLine.replace(regTab, '') + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = obj.selectionEnd = startPos - (tab || 1); + } + } else { + alert('Error: Browser version is too low') + // obj.value += str; + } + // 触发change事件 + $vm.d_value = obj.value + obj.focus(); +} +// 插入enter +export const insertEnter = ($vm, event) => { + let obj = $vm.getTextareaDom() + if (isExistSelectionObj(obj)) { + var startPos = obj.selectionStart; + var endPos = obj.selectionEnd; + var tmpStr = obj.value; + // 获取光标前最后一行字符串 + let lastLine = tmpStr.substring(0, startPos).split('\n').pop() + let matchListNeedChangeLine = lastLine.match(/^\s*(?:[0-9]+\.|-)\s+\S+/) + if (matchListNeedChangeLine) { + // 需要自动产生下一个列表项 + event.preventDefault() + // eg: [1. test] 仅获取[1. ] + let subfix = matchListNeedChangeLine.shift().match(/^\s*(?:[0-9]+\.|-)\s/).shift() + if (subfix.search(/-/) >= 0) { + // 无序列表 + obj.value = tmpStr.substring(0, startPos) + '\n' + subfix + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = obj.selectionEnd = startPos + subfix.length + 1 + } else { + // 有序列表 + let temp = subfix.replace(/(\d+)/, parseInt(subfix) + 1) + obj.value = tmpStr.substring(0, startPos) + '\n' + temp + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = obj.selectionEnd = startPos + temp.length + 1 + } + } else { + let matchListNeedRemoveLine = lastLine.match(/^\s*(?:[0-9]+\.|-)\s+$/) + if (matchListNeedRemoveLine) { + // 需要跳出列表 + event.preventDefault() + let preLength = matchListNeedRemoveLine.shift().length + obj.value = tmpStr.substring(0, startPos - preLength) + '\n' + tmpStr.substring(endPos, tmpStr.length); + obj.selectionStart = obj.selectionEnd = startPos - preLength + // TODO 检测是否存在嵌套列表,自动生成上一级 + } + } + } else { + alert('Error: Browser version is too low') + } + $vm.d_value = obj.value + obj.focus(); +} +/** + * 生成导航目录 + */ +export const getNavigation = ($vm , full) => { + let navigationContent; + + navigationContent = $vm.$refs.navigationContent + + navigationContent.innerHTML = $vm.d_render + let nodes = navigationContent.children + if (nodes.length) { + for (let i = 0; i < nodes.length; i++) { + judageH(nodes[i] , i , nodes) + } + } + function judageH(node , i , nodes) { + let reg = /^H[1-6]{1}$/; + if (!reg.exec(node.tagName)) { + node.style.display = 'none' + } else { + node.onclick = function () { + let vShowContent = $vm.$refs.vShowContent; + let vNoteEdit = $vm.$refs.vNoteEdit; + if ($vm.s_subfield) { + // 双栏 + if ($vm.s_preview_switch) { + // 编辑预览 + vNoteEdit.scrollTop = vShowContent.children[i].offsetTop * (vNoteEdit.scrollHeight - vNoteEdit.offsetHeight) / (vShowContent.scrollHeight - vShowContent.offsetHeight); + } else { + // todo 编辑 + } + } else { + // 单栏 + if ($vm.s_preview_switch) { + // 预览 + vShowContent.scrollTop = vShowContent.children[i].offsetTop; + } else { + // todo 编辑 + } + } + } + } + } +} + +/** + * 滚动条联动 + */ +export const scrollLink = ($event, $vm) => { + let element = $event.srcElement ? $event.srcElement : $event.target + let ratio = element.scrollTop / (element.scrollHeight - element.offsetHeight) + if ($vm.edit_scroll_height >= 0 && element.scrollHeight !== $vm.edit_scroll_height && (element.scrollHeight - element.offsetHeight - element.scrollTop <= 30)) { + // star 内容变化 导致 高度增加 且滚动条距离底部小于25px 自动滚动到底部 + $vm.$refs.vNoteEdit.scrollTop = element.scrollHeight - element.offsetHeight + ratio = 1 + } + $vm.edit_scroll_height = element.scrollHeight + // end ---- + if ($vm.$refs.vShowContent.scrollHeight > $vm.$refs.vShowContent.offsetHeight) { + $vm.$refs.vShowContent.scrollTop = ($vm.$refs.vShowContent.scrollHeight - $vm.$refs.vShowContent.offsetHeight) * ratio + } +} +/** + * 监听浏览器fullscreen + * @param $vm + */ +export const fullscreenchange = ($vm) => { + // 阅读模式 全屏监听事件 + $vm.$el.addEventListener('fullscreenchange', function (e) { + $vm.$toolbar_right_read_change_status() + }, false); + $vm.$el.addEventListener('mozfullscreenchange', function (e) { + $vm.$toolbar_right_read_change_status() + }, false); + $vm.$el.addEventListener('webkitfullscreenchange', function (e) { + $vm.$toolbar_right_read_change_status() + }, false); + $vm.$el.addEventListener('msfullscreenchange', function (e) { + $vm.$toolbar_right_read_change_status() + }, false); +} + +/** + * 监听浏览器onresize + * @param $vm + */ +export const windowResize = ($vm) => { + function sizeToStatus() { + if ($vm.$el.clientWidth > 768) { + // > 768 + $vm.s_subfield = $vm.subfield; + } + else { + // < 768 + $vm.s_subfield = false; + } + } + + sizeToStatus(); + window.addEventListener('resize', sizeToStatus); +} + +export function loadScript(src, callback) { + if (!(typeof callback === 'function')) { + callback = function() {}; + } + var check = document.querySelectorAll("script[src='" + src + "']"); + if (check.length > 0) { + check[0].addEventListener('load', function() { + callback(); + }); + callback(); + return; + } + var script = document.createElement('script'); + var head = document.getElementsByTagName('head')[0]; + script.type = 'text/javascript'; + script.charset = 'UTF-8'; + script.src = src; + if (script.addEventListener) { + script.addEventListener('load', function () { + callback(); + }, false); + } else if (script.attachEvent) { + script.attachEvent('onreadystatechange', function () { + var target = window.event.srcElement; + if (target.readyState === 'loaded') { + callback(); + } + }); + } + head.appendChild(script); +} + +// <link href="https://cdn.bootcss.com/highlight.js/9.12.0/styles/agate.min.css" rel="stylesheet"> +export function loadLink(src, callback, id) { + if (!(typeof callback === 'function')) { + callback = function() {}; + } + var check = document.querySelectorAll("link[href='" + src + "']"); + if (check.length > 0) { + callback(); + return; + } + + if (id) { + var styles = document.querySelectorAll("link#" + id); + if (styles.length) { + styles[0].href = src; + return; + } + } + + var link = document.createElement('link'); + var head = document.getElementsByTagName('head')[0]; + link.rel = 'stylesheet'; + link.href = src; + id && (link['id'] = id); + if (link.addEventListener) { + link.addEventListener('load', function () { + callback(); + }, false); + } else if (link.attachEvent) { + link.attachEvent('onreadystatechange', function () { + var target = window.event.srcElement; + if (target.readyState === 'loaded') { + callback(); + } + }); + } + head.appendChild(link); +} + +export const ImagePreviewListener = ($vm) => { + // vShowContent + $vm.$refs.vShowContent.addEventListener('click', function (event) { + event = event ? event : window.event; + let ele = event.srcElement ? event.srcElement : event.target; + if (ele.tagName === 'IMG') { + if ($vm.imageClick != null) { + // 覆盖图片点击事件 + $vm.imageClick(ele); + } else { + $vm.d_preview_imgsrc = ele.src; + } + } + }) +} diff --git a/node_modules/mavon-editor/src/lib/core/highlight.js b/node_modules/mavon-editor/src/lib/core/highlight.js new file mode 100644 index 0000000..80f8605 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/highlight.js @@ -0,0 +1,95 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-06-16T21:01:47+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: highlight.js + * @Last modified by: chc + * @Last modified time: 2017-11-24T19:55:22+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +import { + loadScript +} from './extra-function.js' +function highLightCode(str, callback, hljsLangFuc, hljsFuc) { + var hljs = window.hljs; + if (!hljs) { + if (typeof hljsFuc !== 'function') { + console.warn('external_link.hljs_js is not a function, hljs can not load by mavon-editor, if you want to disabled this log, set external_link.hljs_js to function'); + callback(str); + return; + } + var url = hljsFuc(); + console.warn('hljs parsing file is missing. mavon-editor will autoload', url); + loadScript(url, function() { + _highLightCode(str, callback, hljsLangFuc); + }); + } else { + if (typeof hljsLangFuc === 'function') { + _highLightCode(str, callback, hljsLangFuc); + } else { + console.warn('external_link.hljs_lang is not a function, hljs will not to work'); + callback(str); + } + } +} +function _highLightCode(str, callback, hljsLangFuc) { + var dom = document.createElement('div'); + var hljs = window.hljs; + dom.innerHTML = str; + var pre_code = dom.querySelectorAll('pre > div.hljs > code'); + if (pre_code && hljs && (typeof hljsLangFuc === 'function')) { + var flag = 0; + var i = 0; + var deal = 0; + var not_include_lang = {}; // these lang parse file need to be include. + var url = ''; + for (i = 0; i < pre_code.length; i++) { + var lang = pre_code[i].className.toLowerCase(); + if (lang.length > 0) { + // if this lang parse file missing + url = hljsLangFuc(lang); + if (!hljs.getLanguage(lang) && !not_include_lang.hasOwnProperty(lang) && url.length > 0) { + not_include_lang[lang] = url; + } + } + } + // we need to include these lang parse file manually + var need_langs = []; + for (var key in not_include_lang) { + if (not_include_lang.hasOwnProperty(key)) { + need_langs.push(key); + } + } + for (i = 0; i < need_langs.length; i++) { + url = not_include_lang[need_langs[i]]; + loadScript(url, function() { + deal = deal + 1; + if (deal === need_langs.length) { + for (var i = 0; i < pre_code.length; i++) { + var lang = pre_code[i].className; + // if lang is valid. + if (lang.length > 0 && hljs.getLanguage(lang)) { + hljs.highlightBlock(pre_code[i]) + } + } + callback(dom.innerHTML); + } + }); + } + if (need_langs.length === 0) { + for (i = 0; i < pre_code.length; i++) { + lang = pre_code[i].className; + // if lang is valid. + if (lang.length > 0 && hljs.getLanguage(lang)) { + hljs.highlightBlock(pre_code[i]) + } + } + callback(dom.innerHTML); + } + } else { + callback(dom.innerHTML); + } +} +export default highLightCode; diff --git a/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js new file mode 100644 index 0000000..41c13b4 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js @@ -0,0 +1,70 @@ +export default { + agate: 1, + androidstudio: 1, + 'arduino-light': 1, + arta: 1, + ascetic: 1, + 'atom-one-dark': 1, + 'atom-one-light': 1, + 'brown-paper': 1, + 'codepen-embed': 1, + 'color-brewer': 1, + dark: 1, + default: 1, + docco: 1, + far: 1, + foundation: 1, + github: 1, + googlecode: 1, + grayscale: 1, + hybrid: 1, + idea: 1, + 'ir-black': 1, + magula: 1, + 'mono-blue': 1, + 'monokai-sublime': 1, + monokai: 1, + obsidian: 1, + 'paraiso-dark': 1, + 'paraiso-light': 1, + pojoaque: 1, + purebasic: 1, + rainbow: 1, + routeros: 1, + 'school-book': 1, + sunburst: 1, + 'tomorrow-night-blue': 1, + 'tomorrow-night-bright': 1, + vs: 1, + vs2015: 1, + xcode: 1, + xt256: 1, + 'a11y-dark': 1, + 'a11y-light': 1, + 'an-old-hope': 1, + 'atom-one-dark-reasonable': 1, + 'brown-pap': 1, + devibeans: 1, + 'github-dark': 1, + 'github-dark-dimmed': 1, + gml: 1, + 'gradient-dark': 1, + 'gradient-light': 1, + 'isbl-editor-dark': 1, + 'isbl-editor-light': 1, + 'kimbie-dark': 1, + 'kimbie-light': 1, + lightfair: 1, + lioshi: 1, + 'night-owl': 1, + 'nnfx-dark': 1, + 'nnfx-light': 1, + nord: 1, + pojo: 1, + 'qtcreator-dark': 1, + 'qtcreator-light': 1, + 'shades-of-purple': 1, + srcery: 1, + 'stackoverflow-dark': 1, + 'stackoverflow-light': 1 + }; diff --git a/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js new file mode 100644 index 0000000..120636a --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js @@ -0,0 +1,322 @@ +export default { + '1c': '1c', + 'abnf': 'abnf', + 'accesslog': 'accesslog', + 'actionscript': 'actionscript', + 'as': 'actionscript', + 'ada': 'ada', + 'apache': 'apache', + 'apacheconf': 'apache', + 'applescript': 'applescript', + 'osascript': 'applescript', + 'arduino': 'arduino', + 'armasm': 'armasm', + 'arm': 'armasm', + 'asciidoc': 'asciidoc', + 'adoc': 'asciidoc', + 'aspectj': 'aspectj', + 'autohotkey': 'autohotkey', + 'ahk': 'autohotkey', + 'autoit': 'autoit', + 'avrasm': 'avrasm', + 'awk': 'awk', + 'axapta': 'axapta', + 'bash': 'bash', + 'sh': 'bash', + 'zsh': 'bash', + 'basic': 'basic', + 'bnf': 'bnf', + 'brainfuck': 'brainfuck', + 'bf': 'brainfuck', + 'cal': 'cal', + 'capnproto': 'capnproto', + 'capnp': 'capnproto', + 'ceylon': 'ceylon', + 'clean': 'clean', + 'icl': 'clean', + 'dcl': 'clean', + 'clojure-repl': 'clojure-repl', + 'clojure': 'clojure', + 'clj': 'clojure', + 'cmake': 'cmake', + 'cmake.in': 'cmake', + 'coffeescript': 'coffeescript', + 'coffee': 'coffeescript', + 'cson': 'coffeescript', + 'iced': 'coffeescript', + 'coq': 'coq', + 'cos': 'cos', + 'cls': 'cos', + 'cpp': 'cpp', + 'c': 'cpp', + 'cc': 'cpp', + 'h': 'cpp', + 'c++': 'cpp', + 'h++': 'cpp', + 'hpp': 'cpp', + 'crmsh': 'crmsh', + 'crm': 'crmsh', + 'pcmk': 'crmsh', + 'crystal': 'crystal', + 'cr': 'crystal', + 'cs': 'cs', + 'csharp': 'cs', + 'csp': 'csp', + 'css': 'css', + 'd': 'd', + 'dart': 'dart', + 'delphi': 'delphi', + 'dpr': 'delphi', + 'dfm': 'delphi', + 'pas': 'delphi', + 'pascal': 'delphi', + 'freepascal': 'delphi', + 'lazarus': 'delphi', + 'lpr': 'delphi', + 'lfm': 'delphi', + 'diff': 'diff', + 'patch': 'diff', + 'django': 'django', + 'jinja': 'django', + 'dns': 'dns', + 'bind': 'dns', + 'zone': 'dns', + 'dockerfile': 'dockerfile', + 'docker': 'dockerfile', + 'dos': 'dos', + 'bat': 'dos', + 'cmd': 'dos', + 'dsconfig': 'dsconfig', + 'dts': 'dts', + 'dust': 'dust', + 'dst': 'dust', + 'ebnf': 'ebnf', + 'elixir': 'elixir', + 'elm': 'elm', + 'erb': 'erb', + 'erlang-repl': 'erlang-repl', + 'erlang': 'erlang', + 'erl': 'erlang', + 'excel': 'excel', + 'xlsx': 'excel', + 'xls': 'excel', + 'fix': 'fix', + 'flix': 'flix', + 'fortran': 'fortran', + 'f90': 'fortran', + 'f95': 'fortran', + 'fsharp': 'fsharp', + 'fs': 'fsharp', + 'gams': 'gams', + 'gms': 'gams', + 'gauss': 'gauss', + 'gss': 'gauss', + 'gcode': 'gcode', + 'nc': 'gcode', + 'gherkin': 'gherkin', + 'feature': 'gherkin', + 'glsl': 'glsl', + 'go': 'go', + 'golang': 'go', + 'golo': 'golo', + 'gradle': 'gradle', + 'groovy': 'groovy', + 'haml': 'haml', + 'handlebars': 'handlebars', + 'hbs': 'handlebars', + 'html.hbs': 'handlebars', + 'html.handlebars': 'handlebars', + 'haskell': 'haskell', + 'hs': 'haskell', + 'haxe': 'haxe', + 'hx': 'haxe', + 'hsp': 'hsp', + 'htmlbars': 'htmlbars', + 'http': 'http', + 'https': 'http', + 'hy': 'hy', + 'hylang': 'hy', + 'inform7': 'inform7', + 'i7': 'inform7', + 'ini': 'ini', + 'toml': 'ini', + 'irpf90': 'irpf90', + 'java': 'java', + 'jsp': 'java', + 'javascript': 'javascript', + 'js': 'javascript', + 'jsx': 'javascript', + 'jboss-cli': 'jboss-cli', + 'wildfly-cli': 'jboss-cli', + 'json': 'json', + 'julia-repl': 'julia-repl', + 'julia': 'julia', + 'kotlin': 'kotlin', + 'lasso': 'lasso', + 'ls': 'livescript', + 'lassoscript': 'lasso', + 'ldif': 'ldif', + 'leaf': 'leaf', + 'less': 'less', + 'lisp': 'lisp', + 'livecodeserver': 'livecodeserver', + 'livescript': 'livescript', + 'llvm': 'llvm', + 'lsl': 'lsl', + 'lua': 'lua', + 'makefile': 'makefile', + 'mk': 'makefile', + 'mak': 'makefile', + 'markdown': 'markdown', + 'md': 'markdown', + 'mkdown': 'markdown', + 'mkd': 'markdown', + 'mathematica': 'mathematica', + 'mma': 'mathematica', + 'matlab': 'matlab', + 'maxima': 'maxima', + 'mel': 'mel', + 'mercury': 'mercury', + 'm': 'mercury', + 'moo': 'mercury', + 'mipsasm': 'mipsasm', + 'mips': 'mipsasm', + 'mizar': 'mizar', + 'mojolicious': 'mojolicious', + 'monkey': 'monkey', + 'moonscript': 'moonscript', + 'moon': 'moonscript', + 'n1ql': 'n1ql', + 'nginx': 'nginx', + 'nginxconf': 'nginx', + 'nimrod': 'nimrod', + 'nim': 'nimrod', + 'nix': 'nix', + 'nixos': 'nix', + 'nsis': 'nsis', + 'objectivec': 'objectivec', + 'mm': 'objectivec', + 'objc': 'objectivec', + 'obj-c': 'objectivec', + 'ocaml': 'ocaml', + 'ml': 'sml', + 'openscad': 'openscad', + 'scad': 'openscad', + 'oxygene': 'oxygene', + 'parser3': 'parser3', + 'perl': 'perl', + 'pl': 'perl', + 'pm': 'perl', + 'pf': 'pf', + 'pf.conf': 'pf', + 'php': 'php', + 'php3': 'php', + 'php4': 'php', + 'php5': 'php', + 'php6': 'php', + 'pony': 'pony', + 'powershell': 'powershell', + 'ps': 'powershell', + 'processing': 'processing', + 'profile': 'profile', + 'prolog': 'prolog', + 'protobuf': 'protobuf', + 'puppet': 'puppet', + 'pp': 'puppet', + 'purebasic': 'purebasic', + 'pb': 'purebasic', + 'pbi': 'purebasic', + 'python': 'python', + 'py': 'python', + 'gyp': 'python', + 'q': 'q', + 'k': 'q', + 'kdb': 'q', + 'qml': 'qml', + 'qt': 'qml', + 'r': 'r', + 'rib': 'rib', + 'roboconf': 'roboconf', + 'graph': 'roboconf', + 'instances': 'roboconf', + 'routeros': 'routeros', + 'mikrotik': 'routeros', + 'rsl': 'rsl', + 'ruby': 'ruby', + 'rb': 'ruby', + 'gemspec': 'ruby', + 'podspec': 'ruby', + 'thor': 'ruby', + 'irb': 'ruby', + 'ruleslanguage': 'ruleslanguage', + 'rust': 'rust', + 'rs': 'rust', + 'scala': 'scala', + 'scheme': 'scheme', + 'scilab': 'scilab', + 'sci': 'scilab', + 'scss': 'scss', + 'shell': 'shell', + 'console': 'shell', + 'smali': 'smali', + 'smalltalk': 'smalltalk', + 'st': 'smalltalk', + 'sml': 'sml', + 'sqf': 'sqf', + 'sql': 'sql', + 'stan': 'stan', + 'stata': 'stata', + 'do': 'stata', + 'ado': 'stata', + 'step21': 'step21', + 'p21': 'step21', + 'step': 'step21', + 'stp': 'step21', + 'stylus': 'stylus', + 'styl': 'stylus', + 'subunit': 'subunit', + 'swift': 'swift', + 'taggerscript': 'taggerscript', + 'tap': 'tap', + 'tcl': 'tcl', + 'tk': 'tcl', + 'tex': 'tex', + 'thrift': 'thrift', + 'tp': 'tp', + 'twig': 'twig', + 'craftcms': 'twig', + 'typescript': 'typescript', + 'ts': 'typescript', + 'vala': 'vala', + 'vbnet': 'vbnet', + 'vb': 'vbnet', + 'vbscript-html': 'vbscript-html', + 'vbscript': 'vbscript', + 'vbs': 'vbscript', + 'verilog': 'verilog', + 'v': 'verilog', + 'sv': 'verilog', + 'svh': 'verilog', + 'vhdl': 'vhdl', + 'vim': 'vim', + 'x86asm': 'x86asm', + 'xl': 'xl', + 'tao': 'xl', + 'xml': 'xml', + 'html': 'xml', + 'xhtml': 'xml', + 'rss': 'xml', + 'atom': 'xml', + 'xjb': 'xml', + 'xsd': 'xml', + 'xsl': 'xml', + 'plist': 'xml', + 'xquery': 'xquery', + 'xpath': 'xquery', + 'xq': 'xquery', + 'yaml': 'yaml', + 'yml': 'yaml', + 'YAML': 'yaml', + 'zephir': 'zephir', + 'zep': 'zephir' +}; diff --git a/node_modules/mavon-editor/src/lib/core/keydown-listen.js b/node_modules/mavon-editor/src/lib/core/keydown-listen.js new file mode 100644 index 0000000..0d2b4ad --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/keydown-listen.js @@ -0,0 +1,359 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-03T00:31:20+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: keydown-listen.js + * @Last modified by: chenhuachao + * @Last modified time: 2017-12-04T00:03:33+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +/** + * Created by zhy on 2017/4/24. + */ +const KEY_CODE = { + F8: 119, + F9: 120, + F10: 121, + F11: 122, + F12: 123, + B: 66, + I: 73, + H: 72, + U: 85, + D: 68, + M:77 , + Q: 81, + O: 79, + L: 76, + S: 83, + Z: 90, + Y: 89, + C: 67, + T: 84, + R: 82, + DELETE: 8, + TAB: 9, + ENTER: 13, + ONE: 97, + TWO: 98, + THREE: 99, + FOUR: 100, + FIVE: 101, + SIX: 102, + _ONE: 49, + _TWO: 50, + _THREE: 51, + _FOUR: 52, + _FIVE: 53, + _SIX: 54 +}; +export const keydownListen = ($vm) => { + if (!$vm.shortCut) + { + return + } + $vm.$el.addEventListener('keydown', function (e) { + // 注册监听键盘事件 + if (!(e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey) { + // one key + switch (e.keyCode) { + case KEY_CODE.F8: { + // F8 导航 + if ($vm.toolbars.navigation) { + e.preventDefault() + $vm.toolbar_right_click('navigation') + } + break; + } + case KEY_CODE.F9: { + // F9 预览模式 + if ($vm.toolbars.preview) { + e.preventDefault() + $vm.toolbar_right_click('preview') + } + break; + } + case KEY_CODE.F10: { + // F10 全屏 + if ($vm.toolbars.fullscreen) { + e.preventDefault() + $vm.toolbar_right_click('fullscreen') + } + break; + } + case KEY_CODE.F11: { + // F11 阅读 + if ($vm.toolbars.readmodel) { + e.preventDefault() + $vm.toolbar_right_click('read') + } + break; + } + case KEY_CODE.F12: { + // F12 单双栏切换 + if ($vm.toolbars.subfield) { + e.preventDefault() + $vm.toolbar_right_click('subfield') + } + break; + } + case KEY_CODE.TAB: { + // TAB + if (!$vm.$refs.toolbar_left.s_img_link_open) { + e.preventDefault() + $vm.insertTab(); + } + break; + } + case KEY_CODE.ENTER: { + // enter + if ($vm.$refs.toolbar_left.s_img_link_open) { + // 当添加外部链接的弹出层打开时, enter表示确定输入此链接 + e.preventDefault() + $vm.$refs.toolbar_left.$imgLinkAdd(); + } else { + // 在文本框中输入enter + $vm.insertEnter(e) + } + break; + } + } + } else if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey) { + // ctrl + + switch (e.keyCode) { + case KEY_CODE.B: { + // B + e.preventDefault() + $vm.toolbar_left_click('bold') + break; + } + case KEY_CODE.I: { + // I + e.preventDefault() + $vm.toolbar_left_click('italic') + break; + } + case KEY_CODE.H: { + // H + e.preventDefault() + $vm.toolbar_left_click('header') + break; + } + case KEY_CODE.U: { + // U + e.preventDefault() + $vm.toolbar_left_click('underline') + break; + } + case KEY_CODE.D: { + // D + e.preventDefault() + $vm.toolbar_left_click('removeLine') + break; + } + case KEY_CODE.M: { + // M + e.preventDefault() + $vm.toolbar_left_click('mark') + break; + } + case KEY_CODE.Q: { + // Q + e.preventDefault() + $vm.toolbar_left_click('quote') + break; + } + case KEY_CODE.O: { + // O + e.preventDefault() + $vm.toolbar_left_click('ol') + break; + } + case KEY_CODE.L: { + // L + e.preventDefault() + $vm.toolbar_left_click('link') + break; + } + case KEY_CODE.S: { + // S + e.preventDefault() + $vm.toolbar_left_click('save') + break; + } + case KEY_CODE.Z: { + // Z + e.preventDefault() + $vm.toolbar_left_click('undo') + break; + } + case KEY_CODE.Y: { + // Y + e.preventDefault() + $vm.toolbar_left_click('redo') + break; + } + case KEY_CODE.DELETE: { + // delete + e.preventDefault() + $vm.toolbar_left_click('trash') + break; + } + case KEY_CODE.ONE: { + // ONE + e.preventDefault() + $vm.toolbar_left_click('header1') + break; + } + case KEY_CODE.TWO: { + // TWO + e.preventDefault() + $vm.toolbar_left_click('header2') + break; + } + case KEY_CODE.THREE: { + // THREE + e.preventDefault() + $vm.toolbar_left_click('header3') + break; + } + case KEY_CODE.FOUR: { + // FOUR + e.preventDefault() + $vm.toolbar_left_click('header4') + break; + } + case KEY_CODE.FIVE: { + // FIVE + e.preventDefault() + $vm.toolbar_left_click('header5') + break; + } + case KEY_CODE.SIX: { + // SIX + e.preventDefault() + $vm.toolbar_left_click('header6') + break; + } + case KEY_CODE._ONE: { + // ONE + e.preventDefault() + $vm.toolbar_left_click('header1') + break; + } + case KEY_CODE._TWO: { + // TWO + e.preventDefault() + $vm.toolbar_left_click('header2') + break; + } + case KEY_CODE._THREE: { + // THREE + e.preventDefault() + $vm.toolbar_left_click('header3') + break; + } + case KEY_CODE._FOUR: { + // FOUR + e.preventDefault() + $vm.toolbar_left_click('header4') + break; + } + case KEY_CODE._FIVE: { + // FIVE + e.preventDefault() + $vm.toolbar_left_click('header5') + break; + } + case KEY_CODE._SIX: { + // SIX + e.preventDefault() + $vm.toolbar_left_click('header6') + break; + } + } + } else if ((e.ctrlKey || e.metaKey) && e.altKey && !e.shiftKey) { + // ctrl + alt + + switch (e.keyCode) { + case KEY_CODE.S: { + // S + e.preventDefault() + $vm.toolbar_left_click('superscript') + break; + } + case KEY_CODE.U: { + // U + e.preventDefault() + $vm.toolbar_left_click('ul') + break; + } + case KEY_CODE.L: { + // L + e.preventDefault() + $vm.toolbar_left_click('imagelink') + break; + } + case KEY_CODE.C: { + // C + e.preventDefault() + $vm.toolbar_left_click('code') + break; + } + case KEY_CODE.T: { + // T + e.preventDefault() + $vm.toolbar_left_click('table') + break; + } + } + } else if ((e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey) { + // ctrl + shift + switch (e.keyCode) { + case KEY_CODE.S: { + // S + e.preventDefault() + $vm.toolbar_left_click('subscript') + break; + } + case KEY_CODE.D: { + // D + e.preventDefault() + $vm.toolbar_left_click('strikethrough') + break; + } + case KEY_CODE.L: { + // D + e.preventDefault() + $vm.toolbar_left_click('alignleft') + break; + } + case KEY_CODE.R: { + // D + e.preventDefault() + $vm.toolbar_left_click('alignright') + break; + } + case KEY_CODE.C: { + // D + e.preventDefault() + $vm.toolbar_left_click('aligncenter') + break; + } + } + } else if (!(e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey) { + // shift + + switch (e.keyCode) { + case KEY_CODE.TAB: { + // TAB + if (!$vm.$refs.toolbar_left.s_img_link_open) { + e.preventDefault() + $vm.unInsertTab(); + } + break; + } + } + } + }); +} diff --git a/node_modules/mavon-editor/src/lib/core/markdown.js b/node_modules/mavon-editor/src/lib/core/markdown.js new file mode 100644 index 0000000..6de0444 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/markdown.js @@ -0,0 +1,90 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-03T00:31:20+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: markdown.js + * @Last modified by: chc + * @Last modified time: 2017-11-26T16:40:54+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +import hljsLangs from './hljs/lang.hljs.js' + +/** + * Created by zhy on 2017/3/30. + */ +// default mode +var markdown_config = { + html: true, // Enable HTML tags in source + xhtmlOut: true, // Use '/' to close single tags (<br />). + breaks: true, // Convert '\n' in paragraphs into <br> + langPrefix: 'language-', // CSS language prefix for fenced blocks. Can be + linkify: false, // 自动识别url + typographer: true, + quotes: '“”‘’', + highlight: function (str, lang) { + if (lang && hljsLangs[lang]) { + return '<pre><div class="hljs"><code class="' + lang + '">' + markdown.utils.escapeHtml(str) + '</code></div></pre>'; + } + return '<pre><code class="' + lang + '">' + markdown.utils.escapeHtml(str) + '</code></pre>'; + } +} +var markdown = require('markdown-it')(markdown_config); +// 表情 +var emoji = require('markdown-it-emoji'); +// 下标 +var sub = require('markdown-it-sub') +// 上标 +var sup = require('markdown-it-sup') +// <dl/> +var deflist = require('markdown-it-deflist') +// <abbr/> +var abbr = require('markdown-it-abbr') +// footnote +var footnote = require('markdown-it-footnote') +// insert 带有下划线 样式 ++ ++ +var insert = require('markdown-it-ins') +// mark +var mark = require('markdown-it-mark') +// taskLists +var taskLists = require('markdown-it-task-lists') +// +var container = require('markdown-it-container') +// add target="_blank" to all link +var defaultRender = markdown.renderer.rules.link_open || function(tokens, idx, options, env, self) { + return self.renderToken(tokens, idx, options); +}; +markdown.renderer.rules.link_open = function (tokens, idx, options, env, self) { + // If you are sure other plugins can't add `target` - drop check below + var aIndex = tokens[idx].attrIndex('target'); + + if (aIndex < 0) { + tokens[idx].attrPush(['target', '_blank']); // add new attribute + } else { + tokens[idx].attrs[aIndex][1] = '_blank'; // replace value of existing attr + } + + // pass token to default renderer. + return defaultRender(tokens, idx, options, env, self); +}; +// math katex +var katex = require('markdown-it-katex-external'); +var miip = require('markdown-it-images-preview'); +markdown.use(emoji) + .use(taskLists) + .use(sup) + .use(sub) + .use(container) + .use(container, 'hljs-left') /* align left */ + .use(container, 'hljs-center')/* align center */ + .use(container, 'hljs-right')/* align right */ + .use(deflist) + .use(abbr) + .use(footnote) + .use(insert) + .use(mark) + .use(container) + .use(miip) + .use(katex) +export default markdown diff --git a/node_modules/mavon-editor/src/lib/core/onecolumn-event.js b/node_modules/mavon-editor/src/lib/core/onecolumn-event.js new file mode 100644 index 0000000..d2a98d1 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/onecolumn-event.js @@ -0,0 +1,159 @@ +/** + * Created by zhy on 2017/4/24. + */ +/** + * keydown enter + */ +export const onecolumnKeyDownEnter = ($event , $vm , tomarkdown) => { + let element = $event.srcElement ? $event.srcElement : $event.target + let sel = window.getSelection(); + let range = sel.getRangeAt(0); + // code中回车处理 + if (range.startContainer.tagName === 'CODE' || range.startContainer.tagName === 'PRE') { + $event.preventDefault() + onecolumnInsert(range.startContainer , '\n') + } else if (range.startContainer.parentElement.tagName === 'CODE' || range.startContainer.parentElement.tagName === 'PRE') { + $event.preventDefault() + onecolumnInsert(range.startContainer.parentElement , '\n') + } else if (!blockQuoteDoubleEnter(range.startContainer , $event , range.startContainer)) { + $vm.s_table_enter = false + judgeRender(range.startContainer , $event , range.startContainer , range.startContainer , $vm) + /* if (result) { + range = range.cloneRange(); + // code的渲染 + if (result.children !== null && result.children.length > 0 && result.children[0].tagName === 'PRE') { + result.children[0].children[0].innerHTML = '\n' + result.innerHTML += '<div><br/></div>' + range.setStartAfter(result.children[0].children[0]); + } else if (result.lastChild) { + range.setStartAfter(result.lastChild); + } else { + range.setStartAfter(result); + } + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + } */ + } + $vm.d_value = tomarkdown(element.innerHTML) +} +/** + * insert + */ +export const onecolumnInsert = (dom , html) => { + dom.focus() + var sel + var range + if (window.getSelection) { + // IE9 and non-IE + sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) { + range = sel.getRangeAt(0); + range.deleteContents(); + // Range.createContextualFragment() would be useful here but is + // non-standard and not supported in all browsers (IE9, for one) + var el = document.createElement('div'); + el.innerHTML = html; + var frag = document.createDocumentFragment() + var node + var lastNode + while ((node = el.firstChild)) { + lastNode = frag.appendChild(node); + } + range.insertNode(frag); + // Preserve the selection + if (lastNode) { + range = range.cloneRange(); + range.setStartAfter(lastNode); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + } + } + } else if (document.selection && document.selection.type !== 'Control') { + // IE < 9 + document.selection.createRange().pasteHTML(html); + } +} +/** + * 连续两次在段落中换行 跳出段落 + */ +export const blockQuoteDoubleEnter = (dom , $event , self) => { + if (dom.tagName) { + if (dom.getAttribute('class') === 'content-div content-div-edit') { + return false + } else if (dom.tagName === 'BLOCKQUOTE') { + if (!self.innerText || self.innerText === '\n' || self.innerText === '') { + $event.preventDefault() + let sel = window.getSelection(); + let range = sel.getRangeAt(0); + let next = dom.nextSibling + self.outerHTML = '' + dom.outerHTML += '<div><br/></div>' + range = range.cloneRange() + range.setStartAfter(next.previousSibling.lastChild); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + } + return true + } + return blockQuoteDoubleEnter(dom.parentElement, $event , dom) + } else { + return blockQuoteDoubleEnter(dom.parentElement, $event , dom) + } +} +/** + * 在表格中回车特殊处理(暂时只做表格回车 , 后续可能拓展) + */ +export const judgeRender = (dom , $event , self , pre , $vm) => { + if (dom.tagName) { + if (dom.tagName === 'TABLE') { + $vm.s_table_enter = true + self = dom + } + if (dom.getAttribute('class') === 'content-div content-div-edit') { + // 在表格中回车 在表格后换行 + if ($vm.s_table_enter) { + let sel = window.getSelection(); + let range = sel.getRangeAt(0); + range = range.cloneRange() + $event.preventDefault() + let next = self.nextSibling + self.outerHTML += '<div><br/></div>' + range.setStartAfter(next.previousSibling.lastChild); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + } + return; + } + judgeRender(dom.parentElement , $event , self , dom , $vm) + /* let obj = document.createElement('div') + obj.innerHTML = markdown.render(dom.innerHTML.replace('>' , '>')) + var objText = obj.innerText + var domText = dom.innerText + var objTextNoSpaceEnter = objText.replace(/\s+/g, '').replace(/[\r\n]/g, '') + var domTextNoSpaceEnter = domText.replace(/\s+/g, '').replace(/[\r\n]/g, '') + if (obj.children.length > 0) { + if (obj.children[0].innerText.replace(/\s+/g, '').replace(/[\r\n]/g, '') === domTextNoSpaceEnter || obj.children[0].innerText === domText || objText === domText || domTextNoSpaceEnter === objTextNoSpaceEnter) { + return judgeRender(dom.parentElement , $event , self ,dom , $vm) + } else { + // 有变化 + $event.preventDefault() + dom.innerHTML = markdown.render(tomarkdown(dom.innerHTML)) + return dom + } + } else { + if (objText === domText || objTextNoSpaceEnter === domTextNoSpaceEnter) { + return judgeRender(dom.parentElement , $event , self , dom , $vm) + } else { + // 有变化 + dom.innerHTML = markdown.render(tomarkdown(obj.innerHTML)) + return dom + } + } */ + } else { + judgeRender(dom.parentElement , $event , self , dom , $vm) + } +} diff --git a/node_modules/mavon-editor/src/lib/core/sanitizer.js b/node_modules/mavon-editor/src/lib/core/sanitizer.js new file mode 100644 index 0000000..bdb79a7 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/sanitizer.js @@ -0,0 +1,31 @@ +import { FilterXSS } from 'xss'; + +let xssHandler; + +function mavoneditor_sanitizer(state) { + if (!xssHandler) { + return; + } + sanitizer(state.tokens, ['inline', 'html_block']); +} + +function sanitizer(tokens, types) { + let originContent, children; + for (let i = 0; i < tokens.length; i++) { + if (types.indexOf(tokens[i].type) !== -1) { + originContent = tokens[i].content; + children = tokens[i].children; + tokens[i].content = xssHandler.process(originContent); + if (children && children.length && originContent !== tokens[i].content) { + sanitizer(children, ['html_inline']); + } + } + } +} + +export default function (md, xssOptions) { + if (md.options.html) { + xssHandler = new FilterXSS(xssOptions); + md.core.ruler.push('mavoneditor_sanitizer', mavoneditor_sanitizer); + } +} diff --git a/node_modules/mavon-editor/src/lib/core/to-markdown.js b/node_modules/mavon-editor/src/lib/core/to-markdown.js new file mode 100644 index 0000000..d6edd1b --- /dev/null +++ b/node_modules/mavon-editor/src/lib/core/to-markdown.js @@ -0,0 +1,171 @@ +/** + * @Author: HuaChao Chen <chc> + * @Date: 2017-05-03T00:31:20+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: to-markdown.js + * @Last modified by: chc + * @Last modified time: 2017-06-12T20:42:27+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +/** + * Created by zhy on 2017/4/9. + */ +var toMarkdown = require('to-markdown'); +// +const coverterP = { + filter: 'P', + replacement: function (content) { + return '\n' + content + } +} +const coverterp = { + filter: 'p', + replacement: function (content) { + return '\n' + content + } +} +const coverterDiv = { + filter: 'DIV', + replacement: function (content) { + return '\n' + content + } +} +const coverterdiv = { + filter: 'div', + replacement: function (content) { + return '\n' + content + } +} +// 解析代码块 +const coverterCode = { + filter: 'pre', + replacement: function (content) { + let objE = document.createElement('div'); + objE.innerHTML = content; + let codes = objE.getElementsByTagName('code') + if (codes !== null && codes.length > 0) { + let code = codes[0] + let codeType = code.getAttribute('class') === null ? '' : code.getAttribute('class') + let codeContent = code.innerText + return '\n```' + codeType + '\n' + codeContent + '\n```\n'; + } + return '\n```\n' + content + '\n```\n'; + } +} +// 解析表格 +const coverterTable = { + filter: 'table', + replacement: function (content) { + let table = document.createElement('table'); + table.innerHTML = content; + let dom = '\n'; + let tableMark = ''; + let thead = table.getElementsByTagName('thead')[0]; + let thead_tr = thead.getElementsByTagName('tr')[0]; + let thead_th = thead_tr.getElementsByTagName('th') + for (let i = 0; i < thead_th.length; i++) { + dom += '| ' + thead_th[i].innerText + ' ' + let text_align = thead_th[i].style.textAlign + if (text_align === 'left') { + tableMark += '| :- ' + } else if (text_align === 'center') { + tableMark += '| :-: ' + } else if (text_align === 'right') { + tableMark += '| -: ' + } else { + tableMark += '| - ' + } + if (i === thead_th.length - 1) { + dom += '|\n' + tableMark + ' |\n' + } + } + let tbody + if (table.getElementsByTagName('tbody')) { + tbody = table.getElementsByTagName('tbody')[0]; + let tbody_tr = tbody.getElementsByTagName('tr') + if (tbody_tr.length > 0) { + for (let i = 0; i < tbody_tr.length; i++) { + let tbody_td = tbody_tr[i].getElementsByTagName('td') + for (let j = 0; j < tbody_td.length; j++) { + dom += '| ' + tbody_td[j].innerText + ' '; + if (j === tbody_td.length - 1) { + dom += '|\n'; + } + } + } + } + } + return dom + } +} +// 上角标 +const coverterSup = { + filter: 'sup', + replacement: function (content) { + return '^' + content + '^'; + } +} +// 下角标 +const coverterSub = { + filter: 'sub', + replacement: function (content) { + return '~' + content + '~'; + } +} +// 下划线 +const coverterUnderline = { + filter: 'ins', + replacement: function (content) { + return '++' + content + '++'; + } +} +// 中画线 +const coverterStrikethrough = { + filter: 's', + replacement: function (content) { + return '~~' + content + '~~'; + } +} +// 标记 +const coverterMark = { + filter: 'mark', + replacement: function (content) { + return '==' + content + '=='; + } +} +// 图片 +const converterImg = { + filter: 'img', + replacement: function(content, tag) { + var rel = tag.getAttribute('rel'); + var alt = tag.getAttribute('alt'); + if (rel && alt) { + return '![' + alt + ']' + '(' + rel + ')' + } + else { + var src = tag.getAttribute('src'); + return '![' + alt + ']' + '(' + src + ')' + } + } +} +var tomarkdown = function (str) { + return toMarkdown(str, { + converters: [ + coverterCode, + coverterTable, + coverterSup, + coverterSub, + coverterUnderline, + coverterStrikethrough, + coverterMark, + coverterP, + coverterp, + coverterDiv, + coverterdiv, + converterImg + ] + }); +} +export default tomarkdown diff --git a/node_modules/mavon-editor/src/lib/css/markdown.css b/node_modules/mavon-editor/src/lib/css/markdown.css new file mode 100644 index 0000000..3cecff0 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/css/markdown.css @@ -0,0 +1,783 @@ +@font-face { + font-family: octicons-link; + src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); +} + +.markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + color: #24292e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body .pl-c { + color: #969896; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #0086b3; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #795da3; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #333; +} + +.markdown-body .pl-ent { + color: #63a35c; +} + +.markdown-body .pl-k { + color: #a71d5d; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #183691; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #ed6a43; +} + +.markdown-body .pl-bu { + color: #b52a1d; +} + +.markdown-body .pl-ii { + color: #f8f8f8; + background-color: #b52a1d; +} + +.markdown-body .pl-c2 { + color: #f8f8f8; + background-color: #b52a1d; +} + +.markdown-body .pl-c2::before { + content: "^M"; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #63a35c; +} + +.markdown-body .pl-ml { + color: #693a17; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #1d3e81; +} + +.markdown-body .pl-mq { + color: #008080; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #333; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #333; +} + +.markdown-body .pl-md { + color: #bd2c00; + background-color: #ffecec; +} + +.markdown-body .pl-mi1 { + color: #55a532; + background-color: #eaffea; +} + +.markdown-body .pl-mc { + color: #ef9700; + background-color: #ffe3b4; +} + +.markdown-body .pl-mi2 { + color: #d8d8d8; + background-color: #808080; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #795da3; +} + +.markdown-body .pl-mo { + color: #1d3e81; +} + +.markdown-body .pl-ba { + color: #595e62; +} + +.markdown-body .pl-sg { + color: #c0c0c0; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #183691; +} + +.markdown-body .octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} + +.markdown-body a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +.markdown-body a:active, +.markdown-body a:hover { + outline-width: 0; +} + +.markdown-body strong { + font-weight: inherit; +} + +.markdown-body strong { + font-weight: bolder; +} + +.markdown-body h1 { + font-size: 2.4em; + margin: 0.67em 0; +} + +.markdown-body img { + border-style: none; +} + +.markdown-body svg:not(:root) { + overflow: hidden; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre { + font-family: monospace, monospace; + font-size: 1em; +} + +.markdown-body hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +.markdown-body input { + font: inherit; + margin: 0; +} + +.markdown-body input { + overflow: visible; +} + +.markdown-body [type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body * { + box-sizing: border-box; +} + +.markdown-body input { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body a { + color: #0366d6; + text-decoration: none; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body strong { + font-weight: 600; +} + +.markdown-body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid #dfe2e5; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body h1 { + font-size: 36px; + font-weight: 600; +} +.markdown-body h2 { + font-size: 28px; + font-weight: 600; +} + +.markdown-body h3 { + font-size: 20px; + font-weight: 600; +} + +.markdown-body h4 { + font-size: 18px; + font-weight: 600; +} + +.markdown-body h5 { + font-size: 14px; + font-weight: 600; +} + +.markdown-body h6 { + font-size: 12px; + font-weight: 600; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 6px; +} + +.markdown-body blockquote { + margin: 0; +} + +.markdown-body ul, +.markdown-body ol { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +.markdown-body .octicon { + vertical-align: text-bottom; +} + +.markdown-body .pl-0 { + padding-left: 0 !important; +} + +.markdown-body .pl-1 { + padding-left: 4px !important; +} + +.markdown-body .pl-2 { + padding-left: 8px !important; +} + +.markdown-body .pl-3 { + padding-left: 16px !important; +} + +.markdown-body .pl-4 { + padding-left: 24px !important; +} + +.markdown-body .pl-5 { + padding-left: 32px !important; +} + +.markdown-body .pl-6 { + padding-left: 40px !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body > *:first-child { + margin-top: 0 !important; +} + +.markdown-body > *:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body hr { + height: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; +} + +.markdown-body blockquote { + padding: 0 1em; + color: #6a737d; + border-left: 0.25em solid #dfe2e5; +} + +.markdown-body blockquote > :first-child { + margin-top: 0; +} + +.markdown-body blockquote > :last-child { + margin-bottom: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 20px; + margin-bottom: 12px; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #1b1f23; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 { + padding-bottom: 0.3em; + font-size: 2.2em; + border-bottom: 1px solid #eaecef; +} + +.markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.8em; + border-bottom: 1px solid #eaecef; +} + +.markdown-body h3 { + font-size: 1.5em; +} + +.markdown-body h4 { + font-size: 1.2em; +} + +.markdown-body h5 { + font-size: 16px; +} + +.markdown-body h6 { + font-size: 14px; + color: #6a737d; +} + +.markdown-body ul, +.markdown-body ol { + padding-left: 2em; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li > p { + margin-top: 16px; +} + +.markdown-body li + li { + margin-top: 0.25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 16px; + margin-bottom: 12px; +} + +.markdown-body table { + display: block; + width: 100%; + overflow: auto; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #dfe2e5; +} + +.markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; +} + +.markdown-body code { + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; + margin: 0; + font-size: 85%; + background-color: rgba(27, 31, 35, 0.05); + border-radius: 3px; +} + +.markdown-body code::before, +.markdown-body code::after { + letter-spacing: -0.2em; + content: "\00a0"; +} + +.markdown-body pre { + word-wrap: normal; +} + +.markdown-body pre > code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 12px; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + border-radius: 3px; +} + +.markdown-body pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +.markdown-body pre code::before, +.markdown-body pre code::after { + content: normal; +} + +.markdown-body .full-commit .btn-outline:not(:disabled):hover { + color: #005cc5; + border-color: #005cc5; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; +} + +.markdown-body :checked + .radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item + .task-list-item { + margin-top: 3px; +} + +.markdown-body .task-list-item input { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} + +.markdown-body hr { + border-bottom-color: #eee; +} + +/* 高亮 */ +.markdown-body .hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f2f3f1 +} + +.markdown-body .hljs-comment, .hljs-quote { + color: #998; + font-style: italic +} + +.markdown-body .hljs-keyword, .hljs-selector-tag, .hljs-subst { + color: #333; + font-weight: bold +} + +.markdown-body .hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr { + color: #008080 +} + +.markdown-body .hljs-string, .hljs-doctag { + color: #d14 +} + +.markdown-body .hljs-title, .hljs-section, .hljs-selector-id { + color: #900; + font-weight: bold +} + +.markdown-body .hljs-subst { + font-weight: normal +} + +.markdown-body .hljs-type, .hljs-class .hljs-title { + color: #458; + font-weight: bold +} + +.markdown-body .hljs-tag, .hljs-name, .hljs-attribute { + color: #000080; + font-weight: normal +} + +.markdown-body .hljs-regexp, .hljs-link { + color: #009926 +} + +.markdown-body .hljs-symbol, .hljs-bullet { + color: #990073 +} + +.markdown-body .hljs-built_in, .hljs-builtin-name { + color: #0086b3 +} + +.markdown-body .hljs-meta { + color: #999; + font-weight: bold +} + +.markdown-body .hljs-deletion { + background: #fdd +} + +.markdown-body .hljs-addition { + background: #dfd +} + +.markdown-body .hljs-emphasis { + font-style: italic +} + +.markdown-body .hljs-strong { + font-weight: bold +} diff --git a/node_modules/mavon-editor/src/lib/css/mavon-editor.styl b/node_modules/mavon-editor/src/lib/css/mavon-editor.styl new file mode 100644 index 0000000..a280844 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/css/mavon-editor.styl @@ -0,0 +1,297 @@ + border-color = 1px solid #F2F6FC + op-height = 40px + textarea:disabled + background-color #ffffff + + /* 路由内容 */ + .v-note-wrapper + position relative + min-width 300px + min-height 300px + display flex + flex-direction column + background-color #fff + z-index 1500 + text-align left + border border-color + border-radius 4px + &.fullscreen + position fixed + left 0 + right 0 + bottom 0 + top 0 + margin 0 + height auto + z-index 1501 + .v-note-op + padding 1px + width 100% + display flex + white-space pre-line + flex none + min-height op-height + user-select none + border-bottom border-color + border-radius 4px 4px 0 0 + background-color #fff + z-index 1 + .v-left-item, .v-right-item + flex 1 + min-height op-height + box-sizing border-box + .op-icon-divider + height op-height + border-left 1px solid #e5e5e5 + margin 0 6px 0 4px + .op-icon + box-sizing border-box + display inline-block + cursor pointer + height 28px + width 28px + margin 6px 0 5px 0px + font-size 14px + padding 4.5px 6px 5px 3.5px + color #757575 + border-radius 5px + text-align center + background none + border none + outline none + line-height 1 + //vertical-align middle + &.dropdown-wrapper + line-height 18px + &.selected + color rgba(0, 0, 0, 0.8) + background #eaeaea + &:hover + color rgba(0, 0, 0, 0.8) + background #e9e9eb + &.transition + .op-icon + transition all 0.2s linear 0s + .v-right-item + text-align right + padding-right 6px + max-width 30% + .v-left-item + text-align left + padding-left 6px + .v-note-panel + position relative + border-top none + display flex + flex 1 + width 100% + box-sizing border-box + overflow hidden + .v-note-edit.divarea-wrapper + flex 0 0 50% + width 50% + padding 0 + overflow-y scroll + overflow-x hidden + box-sizing border-box + cursor text + border-bottom-left-radius: 4px; + scrollbar() + &.transition + transition all 0.2s linear 0s + &.single-edit + width 100% + flex 0 0 100% + overflow-y auto + &.single-show + width 0 + flex 0 0 0 + display none + .content-div + width 100% + padding 20px 25px + box-sizing border-box + outline 0 none + border none !important + color #2c3e50 + font-size 16px + .content-input-wrapper + width 100% + padding 8px 25px 15px 25px + .v-note-show + flex 0 0 50% + width 50% + overflow-y auto + padding 0 0 + transition all 0.2s linear 0s + &.single-show + flex 0 0 100% + width 100% + .v-show-content, .v-show-content-html + width 100% + height 100% + padding 8px 25px 15px 25px + overflow-y auto + box-sizing border-box + overflow-x hidden + scrollbar() + .v-note-navigation-wrapper + display flex + position absolute + width 250px + right 0 + top 0 + bottom 0 + height 100% + flex-direction column + background-color rgba(255,255,255,0.98) + border-left border-color + border-right border-color + &.transition + transition all 0.1s linear 0s + @media only screen and (max-width 768px) + width 50% + &.slideTop-enter-active, &.slideTop-leave-active + height 100% + &.slideTop-enter, &.slideTop-leave-active + height 0 + .v-note-navigation-title + height 50px + width 100% + border-bottom border-color + flex none + line-height @height + font-size 16px + box-sizing border-box + padding 0 12px 0 18px + .v-note-navigation-close + float right + color #606266 + font-size 18px + cursor pointer + &:hover + color #303133 + .v-note-navigation-content + overflow-y auto + flex 1 + scrollbar() + padding 8px 0 + h1, h2, h3, h4, h5, h6 + margin 2px 0 + font-weight 500 + font-size 17px + color #2185d0 + cursor pointer + line-height normal + overflow hidden + text-overflow ellipsis + white-space nowrap + padding 0 12px + border-bottom none + &:hover + color #483D8B + text-decoration-line underline + h2 + padding-left 27px + font-size 17px + h3 + padding-left 42px + font-size 17px + h4 + padding-left 58px + font-size 15px + h5 + padding-left 72px + font-size 15px + h6 + padding-left 87px + font-size 15px + .v-note-read-model + position relative + display none + width 100% + height 100% + background #fbfbfb + padding 30px 8% 50px 8% + overflow-y auto + scrollbar() + box-sizing border-box + &.show + display block + &.shadow + border none + // box-shadow 0 2px 12px 0 rgba(0, 0, 0, 0.1) +.v-note-help-wrapper + position fixed + left 0 + right 0 + top 0 + bottom 0 + background rgba(0, 0, 0, 0.7) + z-index 1600 + transition all 0.1s linear 0s + &.fade-enter-active, &.fade-leave-active + opacity 1 + &.fade-enter, &.fade-leave-active + opacity 0 + .v-note-help-content + position relative + width 60% + max-width 800px + margin 30px auto + height 90% + min-width 320px + transition all 0.1s linear 0s + z-index 3 + border border-color + &.shadow + border none + box-shadow 0 0px 5px rgba(0, 0, 0, .156863), 0 0px 5px rgba(0, 0, 0, .227451) + i + font-size 28px + position absolute + right 15px + top 8px + color rgba(0, 0, 0, 0.7) + cursor pointer + &:hover + color rgba(0, 0, 0, 1) + .v-note-help-show + width 100% + height 100% + font-size 18px + background #fbfbfb + overflow-y auto + padding 2% 6% + scrollbar() + + +.v-note-img-wrapper + position fixed + display flex + justify-content center + align-items center + left 0 + right 0 + top 0 + bottom 0 + background rgba(0, 0, 0, 0.7) + z-index 1600 + transition all 0.1s linear 0s + &.fade-enter-active, &.fade-leave-active + opacity 1 + &.fade-enter, &.fade-leave-active + opacity 0 + img + flex 0 0 auto + z-index 3 + i + font-size 28px + position absolute + right 15px + top 8px + color rgba(255, 255, 255, 0.7) + cursor pointer + &:hover + color rgba(255, 255, 255, 1) +align() diff --git a/node_modules/mavon-editor/src/lib/css/md.css b/node_modules/mavon-editor/src/lib/css/md.css new file mode 100644 index 0000000..b6bde12 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/css/md.css @@ -0,0 +1,27 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-05T15:57:16+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: md.css + * @Last modified by: chc + * @Last modified time: 2017-06-15T00:13:34+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +.markdown-body strong{ + font-weight: bolder; +} + +.markdown-body .hljs-center { + text-align: center; +} +.markdown-body .hljs-right { + text-align: right; +} +.markdown-body .hljs-left { + text-align: left; +} +.markdown-body .hljs { + overflow: auto; +} \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/css/scroll.styl b/node_modules/mavon-editor/src/lib/css/scroll.styl new file mode 100644 index 0000000..0303c96 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/css/scroll.styl @@ -0,0 +1,15 @@ +scrollbar() + &.scroll-style::-webkit-scrollbar + width 6px + background-color #e5e5e5 + &.scroll-style::-webkit-scrollbar-thumb + background-color #b7b7b7 + border-radius 4px + &.scroll-style::-webkit-scrollbar-thumb:hover + background-color #a1a1a1 + &.scroll-style::-webkit-scrollbar-thumb:active + background-color #a1a1a1 + &.scroll-style::-webkit-scrollbar-track + -webkit-box-shadow 0 0 0px gray inset + &.scroll-style-border-radius::-webkit-scrollbar + border-bottom-right-radius 4px \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/LICENSE.txt b/node_modules/mavon-editor/src/lib/font/LICENSE.txt new file mode 100644 index 0000000..8fa3da3 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/LICENSE.txt @@ -0,0 +1,12 @@ +Font license info + + +## Font Awesome + + Copyright (C) 2016 by Dave Gandy + + Author: Dave Gandy + License: SIL () + Homepage: http://fortawesome.github.com/Font-Awesome/ + + diff --git a/node_modules/mavon-editor/src/lib/font/README.txt b/node_modules/mavon-editor/src/lib/font/README.txt new file mode 100644 index 0000000..beaab33 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/README.txt @@ -0,0 +1,75 @@ +This webfont is generated by http://fontello.com open source project. + + +================================================================================ +Please, note, that you should obey original font licenses, used to make this +webfont pack. Details available in LICENSE.txt file. + +- Usually, it's enough to publish content of LICENSE.txt file somewhere on your + site in "About" section. + +- If your project is open-source, usually, it will be ok to make LICENSE.txt + file publicly available in your repository. + +- Fonts, used in Fontello, don't require a clickable link on your site. + But any kind of additional authors crediting is welcome. +================================================================================ + + +Comments on archive content +--------------------------- + +- /font/* - fonts in different formats + +- /css/* - different kinds of css, for all situations. Should be ok with + twitter bootstrap. Also, you can skip <i> style and assign icon classes + directly to text elements, if you don't mind about IE7. + +- demo.html - demo file, to show your webfont content + +- LICENSE.txt - license info about source fonts, used to build your one. + +- config.json - keeps your settings. You can import it back into fontello + anytime, to continue your work + + +Why so many CSS files ? +----------------------- + +Because we like to fit all your needs :) + +- basic file, <your_font_name>.css - is usually enough, it contains @font-face + and character code definitions + +- *-ie7.css - if you need IE7 support, but still don't wish to put char codes + directly into html + +- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face + rules, but still wish to benefit from css generation. That can be very + convenient for automated asset build systems. When you need to update font - + no need to manually edit files, just override old version with archive + content. See fontello source code for examples. + +- *-embedded.css - basic css file, but with embedded WOFF font, to avoid + CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain. + We strongly recommend to resolve this issue by `Access-Control-Allow-Origin` + server headers. But if you ok with dirty hack - this file is for you. Note, + that data url moved to separate @font-face to avoid problems with <IE9, when + string is too long. + +- animate.css - use it to get ideas about spinner rotation animation. + + +Attention for server setup +-------------------------- + +You MUST setup server to reply with proper `mime-types` for font files - +otherwise some browsers will fail to show fonts. + +Usually, `apache` already has necessary settings, but `nginx` and other +webservers should be tuned. Here is list of mime types for our file extensions: + +- `application/vnd.ms-fontobject` - eot +- `application/x-font-woff` - woff +- `application/x-font-ttf` - ttf +- `image/svg+xml` - svg diff --git a/node_modules/mavon-editor/src/lib/font/config.json b/node_modules/mavon-editor/src/lib/font/config.json new file mode 100644 index 0000000..41f485d --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/config.json @@ -0,0 +1,196 @@ +{ + "name": "", + "css_prefix_text": "fa-mavon-", + "css_use_suffix": false, + "hinting": true, + "units_per_em": 1000, + "ascent": 850, + "glyphs": [ + { + "uid": "02cca871bb69da75e8ee286b7055832c", + "css": "bold", + "code": 59392, + "src": "fontawesome" + }, + { + "uid": "a8cb1c217f02b073db3670c061cc54d2", + "css": "italic", + "code": 59393, + "src": "fontawesome" + }, + { + "uid": "0c708edd8fae2376b3370aa56d40cf9e", + "css": "header", + "code": 61916, + "src": "fontawesome" + }, + { + "uid": "d4a4a38a40b728f46dad1de4ac950231", + "css": "underline", + "code": 61645, + "src": "fontawesome" + }, + { + "uid": "61c242c9e2134d5864d7fdd57b3c9289", + "css": "strikethrough", + "code": 61644, + "src": "fontawesome" + }, + { + "uid": "f04a5d24e9e659145b966739c4fde82a", + "css": "thumb-tack", + "code": 59394, + "src": "fontawesome" + }, + { + "uid": "4e88371fb8857dacc1f66afe6314e426", + "css": "superscript", + "code": 61739, + "src": "fontawesome" + }, + { + "uid": "3d1c929dbc966992185ce749548c1b2c", + "css": "subscript", + "code": 61740, + "src": "fontawesome" + }, + { + "uid": "ab95e1351ebaec5850101097cbf7097f", + "css": "quote-left", + "code": 61709, + "src": "fontawesome" + }, + { + "uid": "f6766a8b042c2453a4e153af03294383", + "css": "list-ol", + "code": 61643, + "src": "fontawesome" + }, + { + "uid": "a2a74f5e7b7d9ba054897d8c795a326a", + "css": "list-ul", + "code": 61642, + "src": "fontawesome" + }, + { + "uid": "0ddd3e8201ccc7d41f7b7c9d27eca6c1", + "css": "link", + "code": 59395, + "src": "fontawesome" + }, + { + "uid": "381da2c2f7fd51f8de877c044d7f439d", + "css": "picture-o", + "code": 59396, + "src": "fontawesome" + }, + { + "uid": "7034e4d22866af82bef811f52fb1ba46", + "css": "code", + "code": 61729, + "src": "fontawesome" + }, + { + "uid": "8fb55fd696d9a0f58f3b27c1d8633750", + "css": "table", + "code": 61646, + "src": "fontawesome" + }, + { + "uid": "bc71f4c6e53394d5ba46b063040014f1", + "css": "repeat", + "code": 59397, + "src": "fontawesome" + }, + { + "uid": "f9c3205df26e7778abac86183aefdc99", + "css": "undo", + "code": 59398, + "src": "fontawesome" + }, + { + "uid": "f48ae54adfb27d8ada53d0fd9e34ee10", + "css": "trash-o", + "code": 59399, + "src": "fontawesome" + }, + { + "uid": "f4445feb55521283572ee88bc304f928", + "css": "floppy-o", + "code": 59400, + "src": "fontawesome" + }, + { + "uid": "559647a6f430b3aeadbecd67194451dd", + "css": "bars", + "code": 61641, + "src": "fontawesome" + }, + { + "uid": "53dd31a6cc6438192b2d7b09b1c1dd45", + "css": "columns", + "code": 61659, + "src": "fontawesome" + }, + { + "uid": "07f0832c07f3d9713fffb06c8bffa027", + "css": "window-maximize", + "code": 62160, + "src": "fontawesome" + }, + { + "uid": "b013f6403e5ab0326614e68d1850fd6b", + "css": "arrows-alt", + "code": 61618, + "src": "fontawesome" + }, + { + "uid": "3c24ee33c9487bbf18796ca6dffa1905", + "css": "compress", + "code": 59401, + "src": "fontawesome" + }, + { + "uid": "c5fd349cbd3d23e4ade333789c29c729", + "css": "eye", + "code": 59402, + "src": "fontawesome" + }, + { + "uid": "7fd683b2c518ceb9e5fa6757f2276faa", + "css": "eye-slash", + "code": 59403, + "src": "fontawesome" + }, + { + "uid": "17ebadd1e3f274ff0205601eef7b9cc4", + "css": "question-circle", + "code": 59404, + "src": "fontawesome" + }, + { + "uid": "5211af474d3a9848f67f945e2ccaf143", + "css": "times", + "code": 59405, + "src": "fontawesome" + }, + { + "uid": "f4f0e849b805be1f6d76b65581cb3b8b", + "css": "align-left", + "code": 59407, + "src": "fontawesome" + }, + { + "uid": "ae6336c46d73af999fe7460c089abb4d", + "css": "align-center", + "code": 59408, + "src": "fontawesome" + }, + { + "uid": "e1e7306b47c3c5e6faecce9d32571381", + "css": "align-right", + "code": 59409, + "src": "fontawesome" + } + ] +} \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/css/animation.css b/node_modules/mavon-editor/src/lib/font/css/animation.css new file mode 100644 index 0000000..ac5a956 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/animation.css @@ -0,0 +1,85 @@ +/* + Animation example, for spinners +*/ +.animate-spin { + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + display: inline-block; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css b/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css new file mode 100644 index 0000000..e73964c --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css @@ -0,0 +1,32 @@ + +.fa-mavon-bold:before { content: '\e800'; } /* '' */ +.fa-mavon-italic:before { content: '\e801'; } /* '' */ +.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */ +.fa-mavon-link:before { content: '\e803'; } /* '' */ +.fa-mavon-picture-o:before { content: '\e804'; } /* '' */ +.fa-mavon-repeat:before { content: '\e805'; } /* '' */ +.fa-mavon-undo:before { content: '\e806'; } /* '' */ +.fa-mavon-trash-o:before { content: '\e807'; } /* '' */ +.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */ +.fa-mavon-compress:before { content: '\e809'; } /* '' */ +.fa-mavon-eye:before { content: '\e80a'; } /* '' */ +.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */ +.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */ +.fa-mavon-times:before { content: '\e80d'; } /* '' */ +.fa-mavon-align-left:before { content: '\e80f'; } /* '' */ +.fa-mavon-align-center:before { content: '\e810'; } /* '' */ +.fa-mavon-align-right:before { content: '\e811'; } /* '' */ +.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */ +.fa-mavon-bars:before { content: '\f0c9'; } /* '' */ +.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */ +.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */ +.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */ +.fa-mavon-underline:before { content: '\f0cd'; } /* '' */ +.fa-mavon-table:before { content: '\f0ce'; } /* '' */ +.fa-mavon-columns:before { content: '\f0db'; } /* '' */ +.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */ +.fa-mavon-code:before { content: '\f121'; } /* '' */ +.fa-mavon-superscript:before { content: '\f12b'; } /* '' */ +.fa-mavon-subscript:before { content: '\f12c'; } /* '' */ +.fa-mavon-header:before { content: '\f1dc'; } /* '' */ +.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */ \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css b/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css new file mode 100644 index 0000000..dd7821d --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css @@ -0,0 +1,85 @@ +@font-face { + font-family: 'fontello'; + src: url('../font/fontello.eot?30047687'); + src: url('../font/fontello.eot?30047687#iefix') format('embedded-opentype'), + url('../font/fontello.svg?30047687#fontello') format('svg'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'fontello'; + src: url('data:application/octet-stream;base64,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') format('woff'), + url('data:application/octet-stream;base64,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') format('truetype'); +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'fontello'; + src: url('../font/fontello.svg?30047687#fontello') format('svg'); + } +} +*/ + + [class^="fa-mavon-"]:before, [class*=" fa-mavon-"]:before { + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} +.fa-mavon-bold:before { content: '\e800'; } /* '' */ +.fa-mavon-italic:before { content: '\e801'; } /* '' */ +.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */ +.fa-mavon-link:before { content: '\e803'; } /* '' */ +.fa-mavon-picture-o:before { content: '\e804'; } /* '' */ +.fa-mavon-repeat:before { content: '\e805'; } /* '' */ +.fa-mavon-undo:before { content: '\e806'; } /* '' */ +.fa-mavon-trash-o:before { content: '\e807'; } /* '' */ +.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */ +.fa-mavon-compress:before { content: '\e809'; } /* '' */ +.fa-mavon-eye:before { content: '\e80a'; } /* '' */ +.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */ +.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */ +.fa-mavon-times:before { content: '\e80d'; } /* '' */ +.fa-mavon-align-left:before { content: '\e80f'; } /* '' */ +.fa-mavon-align-center:before { content: '\e810'; } /* '' */ +.fa-mavon-align-right:before { content: '\e811'; } /* '' */ +.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */ +.fa-mavon-bars:before { content: '\f0c9'; } /* '' */ +.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */ +.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */ +.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */ +.fa-mavon-underline:before { content: '\f0cd'; } /* '' */ +.fa-mavon-table:before { content: '\f0ce'; } /* '' */ +.fa-mavon-columns:before { content: '\f0db'; } /* '' */ +.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */ +.fa-mavon-code:before { content: '\f121'; } /* '' */ +.fa-mavon-superscript:before { content: '\f12b'; } /* '' */ +.fa-mavon-subscript:before { content: '\f12c'; } /* '' */ +.fa-mavon-header:before { content: '\f1dc'; } /* '' */ +.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */ \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css new file mode 100644 index 0000000..65a81d3 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css @@ -0,0 +1,32 @@ + +.fa-mavon-bold { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-italic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-thumb-tack { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-picture-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-repeat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-undo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-trash-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-floppy-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-compress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-eye-slash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-question-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-center { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-arrows-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-bars { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-list-ul { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-list-ol { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-strikethrough { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-underline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-table { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-columns { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-superscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-subscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-header { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-window-maximize { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css new file mode 100644 index 0000000..ddd9d0e --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css @@ -0,0 +1,43 @@ +[class^="fa-mavon-"], [class*=" fa-mavon-"] { + font-family: 'fontello'; + font-style: normal; + font-weight: normal; + + /* fix buttons height */ + line-height: 1em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ +} + +.fa-mavon-bold { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-italic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-thumb-tack { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-picture-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-repeat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-undo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-trash-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-floppy-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-compress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-eye-slash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-question-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-center { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-align-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-arrows-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-bars { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-list-ul { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-list-ol { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-strikethrough { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-underline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-table { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-columns { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-superscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-subscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-header { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-mavon-window-maximize { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello.css b/node_modules/mavon-editor/src/lib/font/css/fontello.css new file mode 100644 index 0000000..1939b7b --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/css/fontello.css @@ -0,0 +1,88 @@ +@font-face { + font-family: 'fontello'; + src: url('../font/fontello.eot?60486047'); + src: url('../font/fontello.eot?60486047#iefix') format('embedded-opentype'), + url('../font/fontello.woff2?60486047') format('woff2'), + url('../font/fontello.woff?60486047') format('woff'), + url('../font/fontello.ttf?60486047') format('truetype'), + url('../font/fontello.svg?60486047#fontello') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'fontello'; + src: url('../font/fontello.svg?60486047#fontello') format('svg'); + } +} +*/ + + [class^="fa-mavon-"]:before, [class*=" fa-mavon-"]:before { + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.fa-mavon-bold:before { content: '\e800'; } /* '' */ +.fa-mavon-italic:before { content: '\e801'; } /* '' */ +.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */ +.fa-mavon-link:before { content: '\e803'; } /* '' */ +.fa-mavon-picture-o:before { content: '\e804'; } /* '' */ +.fa-mavon-repeat:before { content: '\e805'; } /* '' */ +.fa-mavon-undo:before { content: '\e806'; } /* '' */ +.fa-mavon-trash-o:before { content: '\e807'; } /* '' */ +.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */ +.fa-mavon-compress:before { content: '\e809'; } /* '' */ +.fa-mavon-eye:before { content: '\e80a'; } /* '' */ +.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */ +.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */ +.fa-mavon-times:before { content: '\e80d'; } /* '' */ +.fa-mavon-align-left:before { content: '\e80f'; } /* '' */ +.fa-mavon-align-center:before { content: '\e810'; } /* '' */ +.fa-mavon-align-right:before { content: '\e811'; } /* '' */ +.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */ +.fa-mavon-bars:before { content: '\f0c9'; } /* '' */ +.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */ +.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */ +.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */ +.fa-mavon-underline:before { content: '\f0cd'; } /* '' */ +.fa-mavon-table:before { content: '\f0ce'; } /* '' */ +.fa-mavon-columns:before { content: '\f0db'; } /* '' */ +.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */ +.fa-mavon-code:before { content: '\f121'; } /* '' */ +.fa-mavon-superscript:before { content: '\f12b'; } /* '' */ +.fa-mavon-subscript:before { content: '\f12c'; } /* '' */ +.fa-mavon-header:before { content: '\f1dc'; } /* '' */ +.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */ \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/demo.html b/node_modules/mavon-editor/src/lib/font/demo.html new file mode 100644 index 0000000..2e576f5 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/demo.html @@ -0,0 +1,353 @@ +<!DOCTYPE html> +<html> + <head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--> + <meta charset="UTF-8"><style>/* + * Bootstrap v2.2.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333; + background-color: #fff; +} +a { + color: #08c; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, +.row:after { + display: table; + content: ""; + line-height: 0; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.span12 { + width: 940px; +} +.span11 { + width: 860px; +} +.span10 { + width: 780px; +} +.span9 { + width: 700px; +} +.span8 { + width: 620px; +} +.span7 { + width: 540px; +} +.span6 { + width: 460px; +} +.span5 { + width: 380px; +} +.span4 { + width: 300px; +} +.span3 { + width: 220px; +} +.span2 { + width: 140px; +} +.span1 { + width: 60px; +} +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; + line-height: 0; +} +.container:after { + clear: both; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} +small { + font-size: 85%; +} +h1 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} +h1 small { + font-weight: normal; + line-height: 1; + color: #999; +} +h1 { + line-height: 40px; +} +h1 { + font-size: 38.5px; +} +h1 small { + font-size: 24.5px; +} +body { + margin-top: 90px; +} +.header { + position: fixed; + top: 0; + left: 50%; + margin-left: -480px; + background-color: #fff; + border-bottom: 1px solid #ddd; + padding-top: 10px; + z-index: 10; +} +.footer { + color: #ddd; + font-size: 12px; + text-align: center; + margin-top: 20px; +} +.footer a { + color: #ccc; + text-decoration: underline; +} +.the-icons { + font-size: 14px; + line-height: 24px; +} +.switch { + position: absolute; + right: 0; + bottom: 10px; + color: #666; +} +.switch input { + margin-right: 0.3em; +} +.codesOn .i-name { + display: none; +} +.codesOn .i-code { + display: inline; +} +.i-code { + display: none; +} +@font-face { + font-family: 'fontello'; + src: url('./font/fontello.eot?55997964'); + src: url('./font/fontello.eot?55997964#iefix') format('embedded-opentype'), + url('./font/fontello.woff?55997964') format('woff'), + url('./font/fontello.ttf?55997964') format('truetype'), + url('./font/fontello.svg?55997964#fontello') format('svg'); + font-weight: normal; + font-style: normal; + } + + + .demo-icon + { + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* You can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ + } + </style> + <link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/fontello-ie7.css"><![endif]--> + <script> + function toggleCodes(on) { + var obj = document.getElementById('icons'); + + if (on) { + obj.className += ' codesOn'; + } else { + obj.className = obj.className.replace(' codesOn', ''); + } + } + + </script> + </head> + <body> + <div class="container header"> + <h1> + fontello + <small>font demo</small> + </h1> + <label class="switch"> + <input type="checkbox" onclick="toggleCodes(this.checked)">show codes + </label> + </div> + <div id="icons" class="container"> + <div class="row"> + <div title="Code: 0xe800" class="the-icons span3"><i class="demo-icon fa-mavon-bold"></i> <span class="i-name">fa-mavon-bold</span><span class="i-code">0xe800</span></div> + <div title="Code: 0xe801" class="the-icons span3"><i class="demo-icon fa-mavon-italic"></i> <span class="i-name">fa-mavon-italic</span><span class="i-code">0xe801</span></div> + <div title="Code: 0xe802" class="the-icons span3"><i class="demo-icon fa-mavon-thumb-tack"></i> <span class="i-name">fa-mavon-thumb-tack</span><span class="i-code">0xe802</span></div> + <div title="Code: 0xe803" class="the-icons span3"><i class="demo-icon fa-mavon-link"></i> <span class="i-name">fa-mavon-link</span><span class="i-code">0xe803</span></div> + </div> + <div class="row"> + <div title="Code: 0xe804" class="the-icons span3"><i class="demo-icon fa-mavon-picture-o"></i> <span class="i-name">fa-mavon-picture-o</span><span class="i-code">0xe804</span></div> + <div title="Code: 0xe805" class="the-icons span3"><i class="demo-icon fa-mavon-repeat"></i> <span class="i-name">fa-mavon-repeat</span><span class="i-code">0xe805</span></div> + <div title="Code: 0xe806" class="the-icons span3"><i class="demo-icon fa-mavon-undo"></i> <span class="i-name">fa-mavon-undo</span><span class="i-code">0xe806</span></div> + <div title="Code: 0xe807" class="the-icons span3"><i class="demo-icon fa-mavon-trash-o"></i> <span class="i-name">fa-mavon-trash-o</span><span class="i-code">0xe807</span></div> + </div> + <div class="row"> + <div title="Code: 0xe808" class="the-icons span3"><i class="demo-icon fa-mavon-floppy-o"></i> <span class="i-name">fa-mavon-floppy-o</span><span class="i-code">0xe808</span></div> + <div title="Code: 0xe809" class="the-icons span3"><i class="demo-icon fa-mavon-compress"></i> <span class="i-name">fa-mavon-compress</span><span class="i-code">0xe809</span></div> + <div title="Code: 0xe80a" class="the-icons span3"><i class="demo-icon fa-mavon-eye"></i> <span class="i-name">fa-mavon-eye</span><span class="i-code">0xe80a</span></div> + <div title="Code: 0xe80b" class="the-icons span3"><i class="demo-icon fa-mavon-eye-slash"></i> <span class="i-name">fa-mavon-eye-slash</span><span class="i-code">0xe80b</span></div> + </div> + <div class="row"> + <div title="Code: 0xe80c" class="the-icons span3"><i class="demo-icon fa-mavon-question-circle"></i> <span class="i-name">fa-mavon-question-circle</span><span class="i-code">0xe80c</span></div> + <div title="Code: 0xe80d" class="the-icons span3"><i class="demo-icon fa-mavon-times"></i> <span class="i-name">fa-mavon-times</span><span class="i-code">0xe80d</span></div> + <div title="Code: 0xe80f" class="the-icons span3"><i class="demo-icon fa-mavon-align-left"></i> <span class="i-name">fa-mavon-align-left</span><span class="i-code">0xe80f</span></div> + <div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon fa-mavon-align-center"></i> <span class="i-name">fa-mavon-align-center</span><span class="i-code">0xe810</span></div> + </div> + <div class="row"> + <div title="Code: 0xe811" class="the-icons span3"><i class="demo-icon fa-mavon-align-right"></i> <span class="i-name">fa-mavon-align-right</span><span class="i-code">0xe811</span></div> + <div title="Code: 0xf0b2" class="the-icons span3"><i class="demo-icon fa-mavon-arrows-alt"></i> <span class="i-name">fa-mavon-arrows-alt</span><span class="i-code">0xf0b2</span></div> + <div title="Code: 0xf0c9" class="the-icons span3"><i class="demo-icon fa-mavon-bars"></i> <span class="i-name">fa-mavon-bars</span><span class="i-code">0xf0c9</span></div> + <div title="Code: 0xf0ca" class="the-icons span3"><i class="demo-icon fa-mavon-list-ul"></i> <span class="i-name">fa-mavon-list-ul</span><span class="i-code">0xf0ca</span></div> + </div> + <div class="row"> + <div title="Code: 0xf0cb" class="the-icons span3"><i class="demo-icon fa-mavon-list-ol"></i> <span class="i-name">fa-mavon-list-ol</span><span class="i-code">0xf0cb</span></div> + <div title="Code: 0xf0cc" class="the-icons span3"><i class="demo-icon fa-mavon-strikethrough"></i> <span class="i-name">fa-mavon-strikethrough</span><span class="i-code">0xf0cc</span></div> + <div title="Code: 0xf0cd" class="the-icons span3"><i class="demo-icon fa-mavon-underline"></i> <span class="i-name">fa-mavon-underline</span><span class="i-code">0xf0cd</span></div> + <div title="Code: 0xf0ce" class="the-icons span3"><i class="demo-icon fa-mavon-table"></i> <span class="i-name">fa-mavon-table</span><span class="i-code">0xf0ce</span></div> + </div> + <div class="row"> + <div title="Code: 0xf0db" class="the-icons span3"><i class="demo-icon fa-mavon-columns"></i> <span class="i-name">fa-mavon-columns</span><span class="i-code">0xf0db</span></div> + <div title="Code: 0xf10d" class="the-icons span3"><i class="demo-icon fa-mavon-quote-left"></i> <span class="i-name">fa-mavon-quote-left</span><span class="i-code">0xf10d</span></div> + <div title="Code: 0xf121" class="the-icons span3"><i class="demo-icon fa-mavon-code"></i> <span class="i-name">fa-mavon-code</span><span class="i-code">0xf121</span></div> + <div title="Code: 0xf12b" class="the-icons span3"><i class="demo-icon fa-mavon-superscript"></i> <span class="i-name">fa-mavon-superscript</span><span class="i-code">0xf12b</span></div> + </div> + <div class="row"> + <div title="Code: 0xf12c" class="the-icons span3"><i class="demo-icon fa-mavon-subscript"></i> <span class="i-name">fa-mavon-subscript</span><span class="i-code">0xf12c</span></div> + <div title="Code: 0xf1dc" class="the-icons span3"><i class="demo-icon fa-mavon-header"></i> <span class="i-name">fa-mavon-header</span><span class="i-code">0xf1dc</span></div> + <div title="Code: 0xf2d0" class="the-icons span3"><i class="demo-icon fa-mavon-window-maximize"></i> <span class="i-name">fa-mavon-window-maximize</span><span class="i-code">0xf2d0</span></div> + </div> + </div> + <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div> + </body> +</html> \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.eot b/node_modules/mavon-editor/src/lib/font/font/fontello.eot new file mode 100644 index 0000000000000000000000000000000000000000..4f8bd8207106c88b0d216d339dfcc50bee7ae8b2 GIT binary patch literal 15568 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 MlK5d5iV;HoA7$VQ@c;k- literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.svg b/node_modules/mavon-editor/src/lib/font/font/fontello.svg new file mode 100644 index 0000000..01812b4 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/font/font/fontello.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata> +<defs> +<font id="fontello" horiz-adv-x="1000" > +<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> +<missing-glyph horiz-adv-x="1000" /> +<glyph glyph-name="bold" unicode="" d="M310 1q41-18 78-18 210 0 210 187 0 64-23 101-15 24-34 41t-38 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-88q0-5 0-38t0-54 2-47 7-37z m-8 417q23-4 61-4 46 0 80 7t61 25 42 50 14 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7 0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38z m-302-497l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 6q13 0 38-1t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-138q0-56-20-101t-52-72-77-48-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z" horiz-adv-x="785.7" /> + +<glyph glyph-name="italic" unicode="" d="M0-78l10 48q12 4 34 9t40 11 33 13q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 8-30 11t-39 4-32 3l10 58q19-1 67-4t84-4 67-1q27 0 55 1t68 4 54 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-7z" horiz-adv-x="571.4" /> + +<glyph glyph-name="thumb-tack" unicode="" d="M650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" /> + +<glyph glyph-name="link" unicode="" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" /> + +<glyph glyph-name="picture-o" unicode="" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" /> + +<glyph glyph-name="repeat" unicode="" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" /> + +<glyph glyph-name="undo" unicode="" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" /> + +<glyph glyph-name="trash-o" unicode="" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> + +<glyph glyph-name="floppy-o" unicode="" d="M214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-7 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" /> + +<glyph glyph-name="compress" unicode="" d="M429 314v-250q0-14-11-25t-25-10-25 10l-81 81-185-186q-5-5-13-5t-12 5l-64 64q-6 6-6 13t6 13l185 185-80 80q-11 11-11 25t11 25 25 11h250q14 0 25-11t11-25z m421 375q0-7-6-12l-185-186 80-80q11-11 11-25t-11-25-25-11h-250q-14 0-25 11t-10 25v250q0 14 10 25t25 10 25-10l81-80 185 185q6 5 13 5t13-5l63-64q6-5 6-13z" horiz-adv-x="857.1" /> + +<glyph glyph-name="eye" unicode="" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" /> + +<glyph glyph-name="eye-slash" unicode="" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" /> + +<glyph glyph-name="question-circle" unicode="" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> + +<glyph glyph-name="times" unicode="" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" /> + +<glyph glyph-name="align-left" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="align-center" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-500q-14 0-25 11t-11 25v71q0 15 11 25t25 11h500q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v72q0 14 11 25t25 10h786q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-358q-14 0-25 10t-10 25v72q0 14 10 25t25 11h358q14 0 25-11t10-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="align-right" unicode="" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-714q-14 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-857q-14 0-25 11t-11 25v72q0 14 11 25t25 10h857q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-643q-14 0-25 10t-10 25v72q0 14 10 25t25 11h643q15 0 25-11t11-25z" horiz-adv-x="1000" /> + +<glyph glyph-name="arrows-alt" unicode="" d="M716 548l-198-198 198-198 80 80q17 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 21 7 38l81 81-198 198-198-198 80-81q17-17 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-14 3-22 9-22 33v250q0 14 11 25t25 11h250q23 0 33-23 9-21-8-38l-80-81 198-198 198 198-81 81q-17 17-7 38 9 23 32 23h250q15 0 26-11t10-25v-250q0-24-22-33-7-3-14-3-14 0-25 11z" horiz-adv-x="857.1" /> + +<glyph glyph-name="bars" unicode="" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" /> + +<glyph glyph-name="list-ul" unicode="" d="M214 64q0-44-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 7 5 12t13 6h678q7 0 13-6t5-12z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="list-ol" unicode="" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="strikethrough" unicode="" d="M982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 55-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-101-33-38-32-38-81 0-41 37-78t156-72q38-12 96-37 33-16 53-29h-414z m283-143h229q4-22 4-51 0-62-23-119-13-31-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-76 40z" horiz-adv-x="1000" /> + +<glyph glyph-name="underline" unicode="" d="M27 726q-21 1-25 2l-2 49q7 1 22 1 34 0 63-3 74-4 93-4 47 0 93 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-7 0-18t0-15l1-127 8-157q3-69 28-112 20-33 54-52 49-26 98-26 59 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-1q3-22 3-29 0-4-2-17-25-7-47-8-41-6-44-9-8-8-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-31-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 45-9 132v186q0 105-9 119-14 20-82 22z m830-787v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h821q8 0 13 5t5 13z" horiz-adv-x="857.1" /> + +<glyph glyph-name="table" unicode="" d="M286 82v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m0 214v108q0 7-5 12t-13 5h-179q-7 0-12-5t-6-12v-108q0-7 6-12t12-5h179q8 0 13 5t5 12z m285-214v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m-285 429v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m285-215v108q0 7-5 12t-12 5h-179q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h179q7 0 12 5t5 12z m286-214v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m-286 429v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m286-215v108q0 7-5 12t-13 5h-178q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h178q8 0 13 5t5 12z m0 215v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m72 178v-607q0-37-27-63t-63-26h-750q-36 0-63 26t-26 63v607q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" /> + +<glyph glyph-name="columns" unicode="" d="M89-7h340v643h-358v-625q0-7 6-13t12-5z m768 18v625h-357v-643h339q8 0 13 5t5 13z m72 678v-678q0-37-27-63t-63-27h-750q-36 0-63 27t-26 63v678q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" /> + +<glyph glyph-name="quote-left" unicode="" d="M429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" /> + +<glyph glyph-name="code" unicode="" d="M344 69l-28-28q-5-5-12-5t-13 5l-260 261q-6 5-6 12t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l209 720q2 8 8 11t13 2l35-10q7-2 11-9t1-13z m367-363l-260-261q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-12z" horiz-adv-x="1071.4" /> + +<glyph glyph-name="superscript" unicode="" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m355 379v-115h-287l-1 15q-3 16-3 26 0 36 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-6-20-22l-59 52q15 20 35 37 47 36 105 36 61 0 99-33t38-89q0-31-13-57t-35-43-45-33-46-28-37-28-17-36h130v45h70z" horiz-adv-x="857.1" /> + +<glyph glyph-name="subscript" unicode="" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m356-121v-115h-287l-2 15q-2 25-2 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-28 0-54-21-8-6-20-22l-59 52q15 20 35 37 45 36 105 36 62 0 100-33t37-89q0-37-19-66t-47-48-55-35-49-35-23-41h130v45h70z" horiz-adv-x="857.1" /> + +<glyph glyph-name="header" unicode="" d="M939-79q-25 0-74 2t-75 2q-24 0-73-2t-74-2q-13 0-21 12t-7 25q0 18 9 26t22 9 29 4 25 9q18 11 18 78l0 218q0 12-1 17-7 3-28 3h-376q-22 0-29-3 0-5 0-17l-1-207q0-79 21-91 9-6 26-8t32-2 25-8 11-26q0-14-6-26t-21-13q-26 0-78 2t-77 2q-24 0-71-2t-71-2q-13 0-20 12t-7 25q0 17 9 25t20 10 26 4 24 9q18 13 18 80l-1 31v454q0 2 1 15t0 20-1 21-2 24-4 20-6 18-9 10q-8 5-25 7t-29 1-23 7-10 26q0 14 6 26t20 13q26 0 78-2t77-2q23 0 71 2t70 2q14 0 21-13t7-26q0-17-9-25t-22-8-27-2-24-7q-20-12-20-90l1-178q0-12 0-18 7-2 22-2h390q14 0 21 2 1 6 1 18l0 178q0 78-19 90-10 6-33 7t-37 7-14 28q0 14 7 26t21 13q24 0 74-2t73-2q24 0 72 2t72 2q14 0 21-13t7-26q0-17-10-25t-22-8-29-2-24-7q-20-13-20-90l1-526q0-66 19-78 9-6 25-8t30-2 23-9 10-25q0-14-6-26t-20-13z" horiz-adv-x="1000" /> + +<glyph glyph-name="window-maximize" unicode="" d="M143 64h714v429h-714v-429z m857 625v-678q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v678q0 37 26 63t63 27h822q37 0 63-27t26-63z" horiz-adv-x="1000" /> +</font> +</defs> +</svg> \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.ttf b/node_modules/mavon-editor/src/lib/font/font/fontello.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fcc3b308b45bd042835771713158f9e97b75211f GIT binary patch literal 15400 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 B_x=C? literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.woff b/node_modules/mavon-editor/src/lib/font/font/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..984445365a1cb97d508c612c13142313eece4b10 GIT binary patch literal 9068 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 literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.woff2 b/node_modules/mavon-editor/src/lib/font/font/fontello.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..957d0533bb3add3e396e6f484b3caa0383b11bdb GIT binary patch literal 7764 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 ax5DGbVzc~Kx8&gBZ{xtE?`B87pKt@}gU<l~ literal 0 HcmV?d00001 diff --git a/node_modules/mavon-editor/src/lib/lang/de/help_de.md b/node_modules/mavon-editor/src/lib/lang/de/help_de.md new file mode 100644 index 0000000..7db0345 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/de/help_de.md @@ -0,0 +1,204 @@ +@[toc](Catalog) + +Markdown Handbuch +=== +> Details: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Fett** +``` +**fett** +__fett__ +``` +## *Kursiv* +``` +*kursiv* +_kursiv_ +``` +## Überschriften +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Trennlinien +``` +*** +--- +``` +**** +## ^Hoch^gestellt & ~Tief~gestellt +``` +hochgestellt x^2^ +tiefgestellt H~2~0 +``` +## ++Unterstrichen++ & ~~Durchgestrichen~~ +``` +++unterstrichen++ +~~durchgestrichen~~ +``` +## ==Markiert== +``` +==markiert== +``` +## Zitat + +``` +> zitat 1 +>> zitat 2 +>>> zitat 3 +... +``` + +## Liste +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Todo Liste + +- [x] aufgabe 1 +- [ ] aufgabe 2 + +``` +- [x] aufgabe 1 +- [ ] aufgabe 2 +``` + +## Link +``` +Text Link +[Text](www.baidu.com) + +Link mit Bild + +``` +## Code +\``` Typ + +Codeblock + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Tabelle +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| links | mitte | rechts | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| links | mitte | rechts | +| ---------------------- | ------------- | ----------------- | +## Fußnote +``` +hallo[^hallo] +``` + +Schau zum unteren Rand[^hallo] + +[^hallo]: fussnote + +## Emojis +Details: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematik + +Formeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\sum_{i=1}^n a_i=0$ +Formeln können auf einer eigenen Zeile gerendert werden +$$\sum_{i=1}^n a_i=0$$ +Details: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`links` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`mitte` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`rechts` +`:::` +::: + +## Liste von Definitionen + +Term 1 + +: Definition 1 + +Term 2 mit *inline markup* + +: Definition 2 + + { ein wenig code, teil von Definition 2 } + + Dritter Absatz von Definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 mit *inline markup* + +: Definition 2 + + { ein wenig code, teil von Definition 2 } + + Dritter Absatz von Definition 2. + +``` + +## Abkürzungen +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +Die HTML Spezifikation +wird gepflegt vom W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +Die HTML Spezifikation +wird gepflegt vom W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/de/words_de.json b/node_modules/mavon-editor/src/lib/lang/de/words_de.json new file mode 100644 index 0000000..9325671 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/de/words_de.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Bearbeitung beginnen...", + "navigation_title": "Navigation", + "tl_bold": "Fett", + "tl_italic": "Kursiv", + "tl_header": "Überschrift", + "tl_header_one": "Überschrift 1", + "tl_header_two": "Überschrift 2", + "tl_header_three": "Überschrift 3", + "tl_header_four": "Überschrift 4", + "tl_header_five": "Überschrift 5", + "tl_header_six": "Überschrift 6", + "tl_underline": "Unterstrichen", + "tl_strikethrough": "Durchgestrichen", + "tl_mark": "Markiert", + "tl_superscript": "Hochgestellt", + "tl_subscript": "Tiefgestellt", + "tl_quote": "Zitat", + "tl_ol": "Ol", + "tl_ul": "Ul", + "tl_link": "Link", + "tl_image": "Link mit Bild", + "tl_code": "Code", + "tl_table": "Tabelle", + "tl_undo": "Rückgängig", + "tl_redo": "Wiederherstellen", + "tl_trash": "Mülleimer", + "tl_save": "Speichern", + "tl_navigation_on": "Navigation AN", + "tl_navigation_off": "Navigation AUS", + "tl_preview": "Vorschau", + "tl_aligncenter": "Text zentrieren", + "tl_alignleft": "Nach links ausrichten", + "tl_alignright": "Nach rechts ausrichten", + "tl_edit": "Bearbeiten", + "tl_single_column": "Einspaltig", + "tl_double_column": "Zweispaltig", + "tl_fullscreen_on": "Vollbild AN", + "tl_fullscreen_off": "Vollbild AUS", + "tl_read": "Lesemodus", + "tl_html_on": "HTML AN", + "tl_html_off": "HTML AUS", + "tl_help": "Markdown Handbuch", + "tl_upload": "Bilder-Upload", + "tl_upload_remove": "Entfernen", + "tl_popup_link_title": "Link hinzufügen", + "tl_popup_link_text": "Text des Links", + "tl_popup_link_addr": "Linkziel", + "tl_popup_img_link_title": "Bild hinzufügen", + "tl_popup_img_link_text": "Text des Bildes", + "tl_popup_img_link_addr": "Link auf Bild", + "tl_popup_link_sure": "Ja", + "tl_popup_link_cancel": "Abbruch" +} diff --git a/node_modules/mavon-editor/src/lib/lang/en/help_en.md b/node_modules/mavon-editor/src/lib/lang/en/help_en.md new file mode 100644 index 0000000..e6abfd0 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/en/help_en.md @@ -0,0 +1,204 @@ +@[toc](Catalog) + +Markdown Guide +=== +> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Bold** +``` +**bold** +__bold__ +``` +## *Italic* +``` +*italic* +_italic_ +``` +## Header +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Dividing line +``` +*** +--- +``` +**** +## ^Super^script & ~Sub~script +``` +super x^2^ +sub H~2~0 +``` +## ++Underline++ & ~~Strikethrough~~ +``` +++underline++ +~~strikethrough~~ +``` +## ==Mark== +``` +==mark== +``` +## Quote + +``` +> quote 1 +>> quote 2 +>>> quote 3 +... +``` + +## List +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Todo List + +- [x] task 1 +- [ ] task 2 + +``` +- [x] task 1 +- [ ] task 2 +``` + +## Link +``` +Text Link +[Text](www.baidu.com) + +Image Link + +``` +## Code +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Table +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Footnote +``` +hello[^hello] +``` + +Look at the bottom[^hello] + +[^hello]: footnote + +## Emojis +Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +We can also single-line rendering +$$\sum_{i=1}^n a_i=0$$ +Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## deflist + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/en/words_en.json b/node_modules/mavon-editor/src/lib/lang/en/words_en.json new file mode 100644 index 0000000..e30268d --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/en/words_en.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Begin editing...", + "navigation_title": "Navigation", + "tl_bold": "Bold", + "tl_italic": "Italic", + "tl_header": "Header", + "tl_header_one": "Header 1", + "tl_header_two": "Header 2", + "tl_header_three": "Header 3", + "tl_header_four": "Header 4", + "tl_header_five": "Header 5", + "tl_header_six": "Header 6", + "tl_underline": "Underline", + "tl_strikethrough": "Strikethrough", + "tl_mark": "Mark", + "tl_superscript": "Superscript", + "tl_subscript": "Subscript", + "tl_quote": "Quote", + "tl_ol": "Ol", + "tl_ul": "Ul", + "tl_link": "Link", + "tl_image": "Image Link", + "tl_code": "Code", + "tl_table": "Table", + "tl_undo": "Undo", + "tl_redo": "Redo", + "tl_trash": "Trash", + "tl_save": "Save", + "tl_navigation_on": "Navigation ON", + "tl_navigation_off": "Navigation OFF", + "tl_preview": "Preview", + "tl_aligncenter": "Center text", + "tl_alignleft": "Clamp text to the left", + "tl_alignright": "Clamp text to the right", + "tl_edit": "Edit", + "tl_single_column": "Single Column", + "tl_double_column": "Double Columns", + "tl_fullscreen_on": "FullScreen ON", + "tl_fullscreen_off": "FullScreen OFF", + "tl_read": "Read Model", + "tl_html_on": "HTML ON", + "tl_html_off": "HTML OFF", + "tl_help": "Markdown Guide", + "tl_upload": "Upload Images", + "tl_upload_remove": "Remove", + "tl_popup_link_title": "Add Link", + "tl_popup_link_text": "Link text", + "tl_popup_link_addr": "Link address", + "tl_popup_img_link_title": "Add Image", + "tl_popup_img_link_text": "Image Text", + "tl_popup_img_link_addr": "Image Link", + "tl_popup_link_sure": "Sure", + "tl_popup_link_cancel": "Cancel" +} diff --git a/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md b/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md new file mode 100644 index 0000000..b3a19fe --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md @@ -0,0 +1,204 @@ +@[toc](Catalogue) + +Guide Markdown +============== +> Détail : [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Bold** +``` +**bold** +__bold__ +``` +## *Italic* +``` +*italic* +_italic_ +``` +## Header +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Dividing line +``` +*** +--- +``` +**** +## ^Super^script & ~Sub~script +``` +super x^2^ +sub H~2~0 +``` +## ++Underline++ & ~~Strikethrough~~ +``` +++underline++ +~~strikethrough~~ +``` +## ==Mark== +``` +==mark== +``` +## Quote + +``` +> quote 1 +>> quote 2 +>>> quote 3 +... +``` + +## List +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` +## Link + +## Todo List + +- [x] Équipe 1 +- [ ] Équipe 2 + +``` +- [x] Équipe 1 +- [ ] Équipe 2 +``` + +``` +Text Link +[Text](www.baidu.com) + +Image Link + +``` +## Code +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Table +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Footnote +``` +hello[^hello] +``` + +Look at the bottom[^hello] + +[^hello]: footnote + +## Emojis +Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +We can also single-line rendering +$$\sum_{i=1}^n a_i=0$$ +Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## deflist + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json b/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json new file mode 100644 index 0000000..0c5c176 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json @@ -0,0 +1,55 @@ +{ + "start_editor": "Début d'édition...", + "navigation_title": "Navigation", + "tl_bold": "Gras", + "tl_italic": "Italique", + "tl_header": "Entête", + "tl_header_one": "Entête 1", + "tl_header_two": "Entête 2", + "tl_header_three": "Entête 3", + "tl_header_four": "Entête 4", + "tl_header_five": "Entête 5", + "tl_header_six": "Entête 6", + "tl_underline": "Souligné", + "tl_strikethrough": "Barré", + "tl_mark": "Mark", + "tl_superscript": "Exposant", + "tl_subscript": "Sous-exposant", + "tl_quote": "Quote", + "tl_ol": "Liste ", + "tl_ul": "Puce", + "tl_link": "Lien", + "tl_image": "Image Lien", + "tl_code": "Code", + "tl_table": "Table", + "tl_undo": "Annuler", + "tl_redo": "Refaire", + "tl_trash": "Supprimer", + "tl_save": "Sauver", + "tl_navigation_on": "Activer la navigation", + "tl_navigation_off": "Désactiver le navigation", + "tl_preview": "Previsualisé", + "tl_aligncenter": "Center le texte", + "tl_alignleft": "Férer le texte à gauche", + "tl_alignright": "Férer le texte à droite", + "tl_preview": "Previsualisé", + "tl_edit": "Editer", + "tl_single_column": "Seule Colonne", + "tl_double_column": "Colonnes Doubles", + "tl_fullscreen_on": "Activer le mode plein écran", + "tl_fullscreen_off": "Désactiver le mode plein écran", + "tl_read": "Lire le modèle", + "tl_html_on": "Activer le mode HTML", + "tl_html_off": "Désactiver le mode HTML", + "tl_help": "Guide Markdown", + "tl_upload": "Télécharger les images", + "tl_upload_remove": "Supprimer", + "tl_popup_link_title": "Ajouter un lien", + "tl_popup_link_text": "Description", + "tl_popup_link_addr": "Link", + "tl_popup_img_link_title": "Ajouter une image", + "tl_popup_img_link_text": "Description", + "tl_popup_img_link_addr": "Link", + "tl_popup_link_sure": "sûr", + "tl_popup_link_cancel": "Annuler" +} diff --git a/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md b/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md new file mode 100644 index 0000000..205f1d0 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md @@ -0,0 +1,205 @@ +@[toc](目次) + +Markdown 文法ガイド +=== +> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **太字** +``` +**太字** +__太字__ +``` +## *斜体* +``` +*斜体* +_斜体_ +``` +## 見出し +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## 横線 +``` +*** +--- +``` +**** +## ^上付き^文字 & ~下付き~文字 +``` +super x^2^ +sub H~2~0 +``` +## ++下線++ & ~~取り消し線~~ +``` +++underline++ +~~strikethrough~~ +``` +## ==蛍光ペン== +``` +==mark== +``` +## 引用 + +``` +> quote 1 +>> quote 2 +>>> quote 3 +... +``` + +## リスト +``` +番号付きリスト +1. +2. +3. +... + +箇条書きリスト +- +- +... +``` + +## Todoリスト + +- [x] task 1 +- [ ] task 2 + +``` +- [x] task 1 +- [ ] task 2 +``` + +## リンク +``` +Text Link +[Text](www.baidu.com) + +Image Link + +``` +## コード +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## 表 +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | + +## 脚注 +``` +hello[^hello] +``` + +Look at the bottom[^hello] + +[^hello]: footnote + +## 絵文字 +> Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ 数式 +> Detailed: [KaTeXマニュアル](http://www.intmath.com/cg5/katex-mathjax-comparison.php)、[KaTeX function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)、[LaTeXマニュアル](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +We can also single-line rendering +$$\sum_{i=1}^n a_i=0$$ + +## レイアウト + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## 定義リスト + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json b/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json new file mode 100644 index 0000000..96d9585 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json @@ -0,0 +1,54 @@ +{ + "start_editor": "編集を始めてね!", + "navigation_title": "ナビゲーション", + "tl_bold": "太字", + "tl_italic": "斜体", + "tl_header": "見出し", + "tl_header_one": "見出し1", + "tl_header_two": "見出し2", + "tl_header_three": "見出し3", + "tl_header_four": "見出し4", + "tl_header_five": "見出し5", + "tl_header_six": "見出し6", + "tl_underline": "下線", + "tl_strikethrough": "取り消し線", + "tl_mark": "蛍光ペン", + "tl_superscript": "上付き文字", + "tl_subscript": "下付き文字", + "tl_quote": "引用", + "tl_ol": "番号付きリスト", + "tl_ul": "箇条書きリスト", + "tl_link": "ハイパーリンク", + "tl_image": "画像のリンク", + "tl_code": "コードの挿入", + "tl_table": "表の挿入", + "tl_undo": "戻る", + "tl_redo": "進む", + "tl_trash": "削除", + "tl_save": "保存", + "tl_navigation_on": "ナビゲーションを表示", + "tl_navigation_off": "ナビゲーションを非表示", + "tl_preview": "プレビュー", + "tl_aligncenter": "中央揃え", + "tl_alignleft": "左揃え", + "tl_alignright": "右揃え", + "tl_edit": "編集", + "tl_single_column": "一列", + "tl_double_column": "二列", + "tl_fullscreen_on": "全画面表示", + "tl_fullscreen_off": "全画面表示の終了", + "tl_read": "モデルの読み込み", + "tl_html_on": "HTMLで表示", + "tl_html_off": "HTML表示の終了", + "tl_help": "ヘルプ", + "tl_upload": "画像をアップロード", + "tl_upload_remove": "画像の削除", + "tl_popup_link_title": "リンクの追加", + "tl_popup_link_text": "リンクテキスト", + "tl_popup_link_addr": "リンク先のURL", + "tl_popup_img_link_title": "画像の追加", + "tl_popup_img_link_text": "画像タイトル", + "tl_popup_img_link_addr": "画像URL", + "tl_popup_link_sure": "OK", + "tl_popup_link_cancel": "戻る" +} diff --git a/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md b/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md new file mode 100644 index 0000000..dd5d442 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md @@ -0,0 +1,204 @@ +@[toc](Directory) + +Guia Markdown +=== +> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Negrito** +``` +**negrito** +__negrito__ +``` +## *Itálico* +``` +*itálico* +_itálico_ +``` +## Cabeçalho +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Linha Divisora +``` +*** +--- +``` +**** +## ^Sobre^scrito & ~Sub~scrito +``` +sobre x^2^ +sub H~2~0 +``` +## ++Sublinhar++ & ~~Tachar~~ +``` +++sublinhar++ +~~tachar~~ +``` +## ==Marcador== +``` +==marcador== +``` +## Citação + +``` +> citação 1 +>> citação 2 +>>> citação 3 +... +``` + +## Listas +``` +lista Numerada +1. +2. +3. +... + +lista com marcadores +- +- +... +``` + +## Todo Listas + +- [x] Tarefa 1 +- [ ] Tarefa 2 + +``` +- [x] Tarefa 1 +- [ ] Tarefa 2 +``` + +## Link +``` +Link Texto +[Text](www.baidu.com) + +Link Imagem + +``` +## Código +\``` tipo + +bloco de código + +\``` + +\` código \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` + +## Tabela +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| esquerda | centro | direita | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| esquerda | centro | direita | +| ---------------------- | ------------- | ----------------- | +## Rodapé +``` +olá[^olá] +``` + +Olhe para baixo[^olá] + +[^olá]: rodapé + +## Emojis +Detalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +Podemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +Podemos também mostrar em uma única linha: +$$\sum_{i=1}^n a_i=0$$ +Detalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Layout + +::: hljs-left +`::: hljs-left` +`esquerda` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`centro` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`direita` +`:::` +::: + +## Definições + +Termo 1 + +: Definição 1 + +Termo 2 com *markup inline* + +: Definição 2 + + { um pouco de código, parte da Definição 2 } + + Terceiro parágrafo da definição 2. + +``` +Termo 1 + +: Definição 1 + +Termo 2 com *markup inline* + +: Definição 2 + + { um pouco de código, parte da Definição 2 } + + Terceiro parágrafo da definição 2. + +``` + +## Abreviações +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +A especificação HTML +é mantida pela W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +é mantida pela W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json b/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json new file mode 100644 index 0000000..3e4046a --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Começar edição...", + "navigation_title": "Navegação", + "tl_bold": "Negrito", + "tl_italic": "Itálico", + "tl_header": "Cabeçalho", + "tl_header_one": "Cabeçalho 1", + "tl_header_two": "Cabeçalho 2", + "tl_header_three": "Cabeçalho 3", + "tl_header_four": "Cabeçalho 4", + "tl_header_five": "Cabeçalho 5", + "tl_header_six": "Cabeçalho 6", + "tl_underline": "Sublinhar", + "tl_strikethrough": "Tachar", + "tl_mark": "Marcação", + "tl_superscript": "Sobrescrito", + "tl_subscript": "Subscrito", + "tl_quote": "Citação", + "tl_ol": "Lista Numerada", + "tl_ul": "Lista com marcadores", + "tl_link": "Link", + "tl_image": "Link de imagem", + "tl_code": "Código", + "tl_table": "Tabela", + "tl_undo": "Desfazer", + "tl_redo": "Refazer", + "tl_trash": "Lixo", + "tl_save": "Salvar", + "tl_navigation_on": "Mostrar Navegação", + "tl_navigation_off": "Esconder Navegação", + "tl_preview": "Preview", + "tl_aligncenter": "Alinhar no centro", + "tl_alignleft": "Alinhar à esquerda", + "tl_alignright": "Alinhar à direita", + "tl_edit": "Editar", + "tl_single_column": "Coluna Única", + "tl_double_column": "Duas Colunas", + "tl_fullscreen_on": "Ligar Tela Cheia", + "tl_fullscreen_off": "Desligar Tela Cheia", + "tl_read": "Modo de Leitura", + "tl_html_on": "Ligar HTML", + "tl_html_off": "Desligar HTML", + "tl_help": "Guia Markdown", + "tl_upload": "Upload de Imagens", + "tl_upload_remove": "Remover", + "tl_popup_link_title": "Adicionar Link", + "tl_popup_link_text": "Descrição", + "tl_popup_link_addr": "Link", + "tl_popup_img_link_title": "Adicionar fotos", + "tl_popup_img_link_text": "Descrição", + "tl_popup_img_link_addr": "Link", + "tl_popup_link_sure": "Confirmar", + "tl_popup_link_cancel": "Cancelar" +} \ No newline at end of file diff --git a/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md b/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md new file mode 100644 index 0000000..36d6a72 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md @@ -0,0 +1,202 @@ +@[toc](Catalog) + +Markdown помощь +=== +> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/) + +## **Полужирный** +``` +**Полужирный** +__Полужирный__ +``` +## *Курсив* +``` +*Курсив* +_Курсив_ +``` +## Заголовок +``` +# h1 # +h1 +==== +## h2 ## +h2 +---- +### h3 ### +#### h4 #### +##### h5 ##### +###### h6 ###### +``` +## Разделительная линия +``` +*** +--- +``` +**** +## ^Верхний^индекс & ~Нижний~индекс +``` +верхний x^2^ +нижний H~2~0 +``` +## ++Подчеркнутый++ & ~~Зачеркнутый~~ +``` +++Подчеркнутый++ +~~Зачеркнутый~~ +``` +## ==Отметка== +``` +==Отметка== +``` +## Цитата + +``` +> Цитата +>> Цитата 2 +>>> Цитата 3 +... +``` + +## Список +``` +ol +1. +2. +3. +... + +ul +- +- +... +``` + +## Список задач + +- [x] Задача 1 +- [ ] Задача 2 + +``` +- [x] Задача 1 +- [ ] Задача 2 +``` + +## Ссылка +``` +Ссылка +[Текст](www.baidu.com) + +Ссылка изображения + +``` +## Код +\``` type + +code block + +\``` + +\` code \` + +```c++ +int main() +{ + printf("hello world!");} +``` +`code` + +## Таблица +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +``` +| th1 | th2 | th3 | +| :-- | :--: | ----: | +| left | center | right | +| ---------------------- | ------------- | ----------------- | +## Сноска +``` +Привет[^Привет] +``` + +Тут что-то непонятное[^Привет] + +[^Привет]: А тут объяснение + +## Emojis +Подробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$ Mathematics + +Можно выводить такие формулы:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$ +А также в одну строку: +$$\sum_{i=1}^n a_i=0$$ +Подробнее: +- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php) +- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX) +- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## Разметка + +::: hljs-left +`::: hljs-left` +`left` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`center` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`right` +`:::` +::: + +## Список определений + +Термин 1 + +: Определение 1 + +Термин 2 с использованием *разметки* + +: Определение 2 + + { Какой-нибудь код, часть определения 2 } + Третий параграф определения 2. +``` +Термин 1 + +: Определение 1 + +Термин 2 с использованием *разметки* + +: Определение 2 + + { Какой-нибудь код, часть определения 2 } + Третий параграф определения 2. +``` + +## Сокращения +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +The HTML specification +is maintained by the W3C. +``` diff --git a/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json b/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json new file mode 100644 index 0000000..83a68e6 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json @@ -0,0 +1,54 @@ +{ + "start_editor": "Начните редактирование...", + "navigation_title": "Навигация", + "tl_bold": "Полужирный", + "tl_italic": "Курсив", + "tl_header": "Заголовки", + "tl_header_one": "Заголовок 1", + "tl_header_two": "Заголовок 2", + "tl_header_three": "Заголовок 3", + "tl_header_four": "Заголовок 4", + "tl_header_five": "Заголовок 5", + "tl_header_six": "Заголовок 6", + "tl_underline": "Подчеркнутый", + "tl_strikethrough": "Зачеркнутый", + "tl_mark": "Отметка", + "tl_superscript": "Верхний индекс", + "tl_subscript": "Нижний индекс", + "tl_quote": "Цитата", + "tl_ol": "Нумерованный список", + "tl_ul": "Список", + "tl_link": "Ссылка", + "tl_image": "Ссылка изображения", + "tl_code": "Код", + "tl_table": "Таблица", + "tl_undo": "Отменить", + "tl_redo": "Вернуть", + "tl_trash": "Удалить", + "tl_save": "Сохранить", + "tl_navigation_on": "Показать навигацию", + "tl_navigation_off": "Скрыть навигацию", + "tl_preview": "Предпросмотр", + "tl_aligncenter": "Выровнять по центру", + "tl_alignleft": "Выровнять по левому краю", + "tl_alignright": "Выровнять по правому краю", + "tl_edit": "Редактор", + "tl_single_column": "Одно поле", + "tl_double_column": "Два поля", + "tl_fullscreen_on": "Полноэкранный режим", + "tl_fullscreen_off": "Выключить полноэкранный режим", + "tl_read": "Режим чтения", + "tl_html_on": "Показать HTML", + "tl_html_off": "Убрать HTML", + "tl_help": "Markdown помощь", + "tl_upload": "Загрузить изображение", + "tl_upload_remove": "Удалить", + "tl_popup_link_title": "Добавить ссылку", + "tl_popup_link_text": "Текст ссылки", + "tl_popup_link_addr": "Адрес ссылки", + "tl_popup_img_link_title": "Локальное изображение", + "tl_popup_img_link_text": "Текст изображения", + "tl_popup_img_link_addr": "Ссылка изображения", + "tl_popup_link_sure": "Добавить", + "tl_popup_link_cancel": "Отменить" +} diff --git a/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md b/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md new file mode 100644 index 0000000..d0924ca --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md @@ -0,0 +1,203 @@ +@[toc](目录) + +Markdown 语法简介 +============= +> [语法详解](http://commonmark.org/help/) + +## **目录** +``` +@[toc](目录) +``` + +## **粗体** +``` +**粗体** +__粗体__ +``` +## *斜体* +``` +*斜体* +_斜体_ +``` +## 标题 +``` +# 一级标题 # +一级标题 +==== +## 二级标题 ## +二级标题 +---- +### 三级标题 ### +#### 四级标题 #### +##### 五级标题 ##### +###### 六级标题 ###### +``` +## 分割线 +``` +*** +--- +``` +**** +## ^上^角~下~标 +``` +上角标 x^2^ +下角标 H~2~0 +``` +## ++下划线++ ~~中划线~~ +``` +++下划线++ +~~中划线~~ +``` +## ==标记== +``` +==标记== +``` +## 段落引用 +``` +> 一级 +>> 二级 +>>> 三级 +... +``` + +## 列表 +``` +有序列表 +1. +2. +3. +... +无序列表 +- +- +... +``` + +## 任务列表 + +- [x] 已完成任务 +- [ ] 未完成任务 + +``` +- [x] 已完成任务 +- [ ] 未完成任务 +``` + +## 链接 +``` +[链接](www.baidu.com) + +``` +## 代码段落 +\``` type + +代码段落 + +\``` + +\` 代码块 \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` +## 表格(table) +``` +| 标题1 | 标题2 | 标题3 | +| :-- | :--: | ----: | +| 左对齐 | 居中 | 右对齐 | +| ---------------------- | ------------- | ----------------- | +``` +| 标题1 | 标题2 | 标题3 | +| :-- | :--: | ----: | +| 左对齐 | 居中 | 右对齐 | +| ---------------------- | ------------- | ----------------- | +## 脚注(footnote) +``` +hello[^hello] +``` + +见底部脚注[^hello] + +[^hello]: 一个注脚 + +## 表情(emoji) +[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$公式 + +我们可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$ +我们也可以单行渲染 +$$\sum_{i=1}^n a_i=0$$ +具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## 布局 + +::: hljs-left +`::: hljs-left` +`居左` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`居中` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`居右` +`:::` +::: + +## 定义 + +术语一 + +: 定义一 + +包含有*行内标记*的术语二 + +: 定义二 + + {一些定义二的文字或代码} + + 定义二的第三段 + +``` +术语一 + +: 定义一 + +包含有*行内标记*的术语二 + +: 定义二 + + {一些定义二的文字或代码} + + 定义二的第三段 + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 规范由 W3C 维护 +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 规范由 W3C 维护 +``` + diff --git a/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json b/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json new file mode 100644 index 0000000..1a03e14 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json @@ -0,0 +1,54 @@ +{ + "start_editor": "开始编辑...", + "navigation_title": "导航目录", + "tl_bold": "粗体", + "tl_italic": "斜体", + "tl_header": "标题", + "tl_header_one": "一级标题", + "tl_header_two": "二级标题", + "tl_header_three": "三级标题", + "tl_header_four": "四级标题", + "tl_header_five": "五级标题", + "tl_header_six": "六级标题", + "tl_underline": "下划线", + "tl_strikethrough": "中划线", + "tl_mark": "标记", + "tl_superscript": "上角标", + "tl_subscript": "下角标", + "tl_quote": "段落引用", + "tl_ol": "有序列表", + "tl_ul": "无序列表", + "tl_link": "链接", + "tl_image": "添加图片链接", + "tl_code": "代码块", + "tl_table": "表格", + "tl_undo": "上一步", + "tl_redo": "下一步", + "tl_trash": "清空", + "tl_save": "保存", + "tl_navigation_on": "开启标题导航", + "tl_navigation_off": "关闭标题导航", + "tl_preview": "预览", + "tl_aligncenter": "居中", + "tl_alignleft": "居左", + "tl_alignright": "居右", + "tl_edit": "编辑", + "tl_single_column": "单栏", + "tl_double_column": "双栏", + "tl_fullscreen_on": "全屏编辑", + "tl_fullscreen_off": "退出全屏", + "tl_read": "沉浸式阅读", + "tl_html_on": "查看html文本", + "tl_html_off": "返回markdown文本", + "tl_help": "markdown语法帮助", + "tl_upload": "上传图片", + "tl_upload_remove": "删除", + "tl_popup_link_title": "添加链接", + "tl_popup_link_text": "链接描述", + "tl_popup_link_addr": "链接地址", + "tl_popup_img_link_title": "添加图片", + "tl_popup_img_link_text": "图片描述", + "tl_popup_img_link_addr": "图片链接", + "tl_popup_link_sure": "确定", + "tl_popup_link_cancel": "取消" +} diff --git a/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md b/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md new file mode 100644 index 0000000..ac451b9 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md @@ -0,0 +1,198 @@ +@[toc](目錄) + +Markdown 語法簡介 +============= +> [語法詳解](http://commonmark.org/help/) + +## **粗體** +``` +**粗體** +__粗體__ +``` +## *斜體* +``` +*斜體* +_斜體_ +``` +## 標題 +``` +# 一級標題 # +一級標題 +==== +## 二級標題 ## +二級標題 +---- +### 三級標題 ### +#### 四級標題 #### +##### 五級標題 ##### +###### 六級標題 ###### +``` +## 分割線 +``` +*** +--- +``` +**** +## ^上^角~下~標 +``` +上角標 x^2^ +下角標 H~2~0 +``` +## ++下劃線++ ~~中劃線~~ +``` +++下劃線++ +~~中劃線~~ +``` +## ==標記== +``` +==標記== +``` +## 段落引用 +``` +> 一級 +>> 二級 +>>> 三級 +... +``` + +## 列表 +``` +有序列表 +1. +2. +3. +... +無序列表 +- +- +... +``` + +## 任務列表 + +- [x] 已完成任務 +- [ ] 未完成任務 + +``` +- [x] 已完成任務 +- [ ] 未完成任務 +``` + +## 鏈接 +``` +[鏈接](www.baidu.com) + +``` +## 代碼段落 +\``` type + +代碼段落 + +\``` + +\` 代碼塊 \` + +```c++ +int main() +{ + printf("hello world!"); +} +``` +`code` +## 表格(table) +``` +| 標題1 | 標題2 | 標題3 | +| :-- | :--: | ----: | +| 左對齊 | 居中 | 右對齊 | +| ---------------------- | ------------- | ----------------- | +``` +| 標題1 | 標題2 | 標題3 | +| :-- | :--: | ----: | +| 左對齊 | 居中 | 右對齊 | +| ---------------------- | ------------- | ----------------- | +## 腳註(footnote) +``` +hello[^hello] +``` + +見底部腳註[^hello] + +[^hello]: 一個註腳 + +## 表情(emoji) +[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/) +``` +:laughing: +:blush: +:smiley: +:) +... +``` +:laughing::blush::smiley::) + +## $\KaTeX$公式 + +我們可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$ +我們也可以單行渲染 +$$\sum_{i=1}^n a_i=0$$ +具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) + +## 布局 + +::: hljs-left +`::: hljs-left` +`居左` +`:::` +::: + +::: hljs-center +`::: hljs-center` +`居中` +`:::` +::: + +::: hljs-right +`::: hljs-right` +`居右` +`:::` +::: + +## 定義 + +術語一 + +: 定義一 + +包含有*行內標記*的術語二 + +: 定義二 + + {一些定義二的文字或代碼} + + 定義二的第三段 + +``` +術語一 + +: 定義一 + +包含有*行內標記*的術語二 + +: 定義二 + + {一些定義二的文字或代碼} + + 定義二的第三段 + +``` + +## abbr +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 規範由 W3C 維護 +``` +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +HTML 規範由 W3C 維護 +``` + diff --git a/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json b/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json new file mode 100644 index 0000000..e388ce3 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json @@ -0,0 +1,54 @@ +{ + "start_editor": "開始編輯...", + "navigation_title": "導航目錄", + "tl_bold": "粗體", + "tl_italic": "斜體", + "tl_header": "標題", + "tl_header_one": "一級標題", + "tl_header_two": "二級標題", + "tl_header_three": "三級標題", + "tl_header_four": "四級標題", + "tl_header_five": "五級標題", + "tl_header_six": "六級標題", + "tl_underline": "下劃線", + "tl_strikethrough": "中劃線", + "tl_mark": "標記", + "tl_superscript": "上角標", + "tl_subscript": "下角標", + "tl_quote": "段落引用", + "tl_ol": "有序列表", + "tl_ul": "無序列表", + "tl_link": "鏈接", + "tl_image": "添加圖片鏈接", + "tl_code": "代碼塊", + "tl_table": "表格", + "tl_undo": "上一步", + "tl_redo": "下一步", + "tl_trash": "清空", + "tl_save": "保存", + "tl_navigation_on": "開啟標題導航", + "tl_navigation_off": "關閉標題導航", + "tl_preview": "預覽", + "tl_aligncenter": "居中", + "tl_alignleft": "居左", + "tl_alignright": "居右", + "tl_edit": "編輯", + "tl_single_column": "單欄", + "tl_double_column": "雙欄", + "tl_fullscreen_on": "全屏編輯", + "tl_fullscreen_off": "退出全屏", + "tl_read": "沈浸式閱讀", + "tl_html_on": "查看html文本", + "tl_html_off": "返回markdown文本", + "tl_help": "markdown語法幫助", + "tl_upload": "上傳圖片", + "tl_upload_remove": "刪除", + "tl_popup_link_title": "添加鏈接", + "tl_popup_link_text": "鏈接描述", + "tl_popup_link_addr": "鏈接地址", + "tl_popup_img_link_title": "添加圖片", + "tl_popup_img_link_text": "圖片描述", + "tl_popup_img_link_addr": "圖片鏈接", + "tl_popup_link_sure": "確定", + "tl_popup_link_cancel": "取消" +} diff --git a/node_modules/mavon-editor/src/lib/mixins/markdown.js b/node_modules/mavon-editor/src/lib/mixins/markdown.js new file mode 100644 index 0000000..da6da90 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/mixins/markdown.js @@ -0,0 +1,154 @@ +import hljsLangs from '../core/hljs/lang.hljs.js' +import { + loadScript +} from '../core/extra-function.js' +import sanitizer from '../core/sanitizer.js' +var markdown_config = { + html: true, // Enable HTML tags in source + xhtmlOut: true, // Use '/' to close single tags (<br />). + breaks: true, // Convert '\n' in paragraphs into <br> + langPrefix: 'lang-', // CSS language prefix for fenced blocks. Can be + linkify: false, // 自动识别url + typographer: true, + quotes: '“”‘’' +} + +var MarkdownIt = require('markdown-it'); +// 表情 +var emoji = require('markdown-it-emoji'); +// 下标 +var sub = require('markdown-it-sub') +// 上标 +var sup = require('markdown-it-sup') +// <dl/> +var deflist = require('markdown-it-deflist') +// <abbr/> +var abbr = require('markdown-it-abbr') +// footnote +var footnote = require('markdown-it-footnote') +// insert 带有下划线 样式 ++ ++ +var insert = require('markdown-it-ins') +// mark +var mark = require('markdown-it-mark') +// taskLists +var taskLists = require('markdown-it-task-lists') +// container +var container = require('markdown-it-container') + +var toc = require('markdown-it-toc') + +var mihe = require('markdown-it-highlightjs-external'); +// math katex +var katex = require('markdown-it-katex-external'); +var miip = require('markdown-it-images-preview'); +var missLangs = {}; +var needLangs = []; +var hljs_opts = { + hljs: 'auto', + highlighted: true, + langCheck: function (lang) { + if (lang && hljsLangs[lang] && !missLangs[lang]) { + missLangs[lang] = 1; + needLangs.push(hljsLangs[lang]) + } + } +}; + +export function initMarkdown() { + const markdown = new MarkdownIt(markdown_config); + + // add target="_blank" to all link + var defaultRender = markdown.renderer.rules.link_open || function (tokens, idx, options, env, self) { + return self.renderToken(tokens, idx, options); + }; + markdown.renderer.rules.link_open = function (tokens, idx, options, env, self) { + var hIndex = tokens[idx].attrIndex('href'); + if (tokens[idx].attrs[hIndex][1].startsWith('#')) return defaultRender(tokens, idx, options, env, self); + // If you are sure other plugins can't add `target` - drop check below + var aIndex = tokens[idx].attrIndex('target'); + + if (aIndex < 0) { + tokens[idx].attrPush(['target', '_blank']); // add new attribute + } else { + tokens[idx].attrs[aIndex][1] = '_blank'; // replace value of existing attr + } + + // pass token to default renderer. + return defaultRender(tokens, idx, options, env, self); + }; + + markdown.use(mihe, hljs_opts) + .use(emoji) + .use(sup) + .use(sub) + .use(container) + .use(container, 'hljs-left') /* align left */ + .use(container, 'hljs-center')/* align center */ + .use(container, 'hljs-right')/* align right */ + .use(deflist) + .use(abbr) + .use(footnote) + .use(insert) + .use(mark) + .use(container) + .use(miip) + .use(katex) + .use(taskLists) + .use(toc) + + return markdown; +} + +export default { + data() { + return { + markdownIt: null + } + }, + created() { + this.markdownIt = initMarkdown(); + if (!this.html) { + this.markdownIt.set({ html: false }); + this.xssOptions = false; + } else if (typeof this.xssOptions === 'object') { + this.markdownIt.use(sanitizer, this.xssOptions); + } + }, + mounted() { + var $vm = this; + hljs_opts.highlighted = this.ishljs; + }, + methods: { + $render(src, func) { + var $vm = this; + missLangs = {}; + needLangs = []; + var res = this.markdownIt.render(src); + if (this.ishljs) { + if (needLangs.length > 0) { + $vm.$_render(src, func, res); + } + } + func(res); + }, + $_render(src, func, res) { + var $vm = this; + var deal = 0; + for (var i = 0; i < needLangs.length; i++) { + var url = $vm.p_external_link.hljs_lang(needLangs[i]); + loadScript(url, function () { + deal = deal + 1; + if (deal === needLangs.length) { + res = this.markdownIt.render(src); + func(res); + } + }) + } + } + }, + watch: { + ishljs: function (val) { + hljs_opts.highlighted = val; + } + } +}; diff --git a/node_modules/mavon-editor/src/lib/toolbar_left_click.js b/node_modules/mavon-editor/src/lib/toolbar_left_click.js new file mode 100644 index 0000000..c6432c0 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/toolbar_left_click.js @@ -0,0 +1,197 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-03T01:23:38+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: toolbar_left_click.js + * @Last modified by: CHC + * @Last modified time: 2017-08-10T12:43:22+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +function $toolbar_left_undo_click($vm) { + if ($vm.d_history_index > 0) { + $vm.d_history_index-- + } + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) + $vm.$nextTick(() => { + // 光标操作 + let start = $vm.textarea_selectionEnds[$vm.d_history_index]; + $vm.getTextareaDom().selectionStart = start + $vm.getTextareaDom().selectionEnd = start + }) + $vm.getTextareaDom().focus() +} +// redo +function $toolbar_left_redo_click($vm) { + if ($vm.d_history_index < $vm.d_history.length - 1) { + $vm.d_history_index++ + } + $vm.$nextTick(() => { + let start = $vm.textarea_selectionEnds[$vm.d_history_index]; + $vm.getTextareaDom().selectionStart = start + $vm.getTextareaDom().selectionEnd = start + }) + $vm.getTextareaDom().focus() + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) +} +function $toolbar_left_trash_click($vm) { + $vm.d_value = '' + $vm.getTextareaDom().focus() + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) +} +function $toolbar_left_save_click($vm) { + $vm.save($vm.d_value, $vm.d_render) +} +// ol +function $toolbar_left_ol_click($vm) { + $vm.insertOl() +} +// ul +function $toolbar_left_ul_click($vm) { + $vm.insertUl() +} +function $toolbar_left_remove_line_click($vm) { + $vm.removeLine() +} + +function $toolbar_left_codeBlock_click($vm) { + $vm.insertCodeBlock(); +} + +// 直接添加链接 +export const toolbar_left_addlink = (type, text, link, $vm) => { + let insert_text = { + prefix: type === 'link' ? `[${text}](` : `', + str: link + }; + $vm.insertText($vm.getTextareaDom(), insert_text); +} +export const toolbar_left_click = (_type, $vm) => { + var _param_of_insert_text = { + 'bold': { + prefix: '**', + subfix: '**', + str: $vm.d_words.tl_bold + }, + 'italic': { + prefix: '*', + subfix: '*', + str: $vm.d_words.tl_italic + }, + 'header': { + prefix: '# ', + subfix: '', + str: $vm.d_words.tl_header + }, + 'header1': { + prefix: '# ', + subfix: '', + str: $vm.d_words.tl_header_one + }, + 'header2': { + prefix: '## ', + subfix: '', + str: $vm.d_words.tl_header_two + }, + 'header3': { + prefix: '### ', + subfix: '', + str: $vm.d_words.tl_header_three + }, + 'header4': { + prefix: '#### ', + subfix: '', + str: $vm.d_words.tl_header_four + }, + 'header5': { + prefix: '##### ', + subfix: '', + str: $vm.d_words.tl_header_five + }, + 'header6': { + prefix: '###### ', + subfix: '', + str: $vm.d_words.tl_header_six + }, + 'underline': { + prefix: '++', + subfix: '++', + str: $vm.d_words.tl_underline + }, + 'strikethrough': { + prefix: '~~', + subfix: '~~', + str: $vm.d_words.tl_strikethrough + }, + 'mark': { + prefix: '==', + subfix: '==', + str: $vm.d_words.tl_mark + }, + 'superscript': { + prefix: '^', + subfix: '^', + str: $vm.d_words.tl_superscript + }, + 'subscript': { + prefix: '~', + subfix: '~', + str: $vm.d_words.tl_subscript + }, + 'quote': { + prefix: '> ', + subfix: '', + str: $vm.d_words.tl_quote + }, + 'link': { + prefix: '[](', + subfix: ')', + str: $vm.d_words.tl_link + }, + 'imagelink': { + prefix: '', + str: $vm.d_words.tl_image + }, + 'table': { + prefix: '', + subfix: '', + str: '|column1|column2|column3|\n|-|-|-|\n|content1|content2|content3|\n' + }, + 'aligncenter': { + prefix: '::: hljs-center\n\n', + subfix: '\n\n:::\n', + str: $vm.d_words.tl_aligncenter + }, + 'alignright': { + prefix: '::: hljs-right\n\n', + subfix: '\n\n:::\n', + str: $vm.d_words.tl_alignright + }, + 'alignleft': { + prefix: '::: hljs-left\n\n', + subfix: '\n\n:::\n', + str: $vm.d_words.tl_alignleft + } + }; + if (_param_of_insert_text.hasOwnProperty(_type)) { + // 插入对应的内容 + $vm.insertText($vm.getTextareaDom(), + _param_of_insert_text[_type]); + } + var _other_left_click = { + 'undo': $toolbar_left_undo_click, + 'redo': $toolbar_left_redo_click, + 'trash': $toolbar_left_trash_click, + 'save': $toolbar_left_save_click, + 'ol': $toolbar_left_ol_click, + 'ul': $toolbar_left_ul_click, + 'removeLine': $toolbar_left_remove_line_click, + 'code': $toolbar_left_codeBlock_click + }; + if (_other_left_click.hasOwnProperty(_type)) { + _other_left_click[_type]($vm); + } + } diff --git a/node_modules/mavon-editor/src/lib/toolbar_right_click.js b/node_modules/mavon-editor/src/lib/toolbar_right_click.js new file mode 100644 index 0000000..aa66e42 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/toolbar_right_click.js @@ -0,0 +1,92 @@ +/** + * @Author: HuaChao Chen <CHC> + * @Date: 2017-05-03T01:39:47+08:00 + * @Email: chenhuachaoxyz@gmail.com + * @Filename: toolbar_right_click.js + * @Last modified by: chc + * @Last modified time: 2017-06-08T12:44:50+08:00 + * @License: MIT + * @Copyright: 2017 + */ + +function $toolbar_right_html_click($vm) { + $vm.s_html_code = !$vm.s_html_code + if ($vm.htmlcode) { + $vm.htmlcode($vm.s_html_code, $vm.d_value) + } +} + +function $toolbar_right_help_click($vm) { + $vm.s_help = !$vm.s_help + if ($vm.helptoggle) { + $vm.helptoggle($vm.s_help, $vm.d_value) + } +} +// 导航 +function $toolbar_right_read_click($vm) { + let element = $vm.$refs.vReadModel + // 单栏编辑 + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } +} + +function $toolbar_right_preview_click($vm) { + $vm.s_preview_switch = !$vm.s_preview_switch + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) + if ($vm.previewtoggle) { + $vm.previewtoggle($vm.s_preview_switch, $vm.d_value) + } +} + +function $toolbar_right_fullscreen_click($vm) { + $vm.s_fullScreen = !$vm.s_fullScreen + if ($vm.fullscreen) { + $vm.fullscreen($vm.s_fullScreen, $vm.d_value) + } +} +function $toolbar_right_subfield_click ($vm) { + $vm.s_subfield = !$vm.s_subfield + $vm.s_preview_switch = $vm.s_subfield; + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) + if ($vm.previewtoggle) { + $vm.previewtoggle($vm.s_preview_switch, $vm.d_value) + } + // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value) + if ($vm.subfieldtoggle) { + $vm.subfieldtoggle($vm.s_subfield, $vm.d_value) + } +} +function $toolbar_right_navigation_click($vm) { + $vm.s_navigation = !$vm.s_navigation + if ($vm.s_navigation) { + $vm.s_preview_switch = true; + } + if ($vm.navigationtoggle) { + $vm.navigationtoggle($vm.s_navigation, $vm.d_value) + } + if ($vm.s_navigation) { + // 绘制标题导航 + $vm.getNavigation($vm, false) + } +} +export const toolbar_right_click = (_type, $vm) => { + var _other_right_click = { + 'help': $toolbar_right_help_click, + 'html': $toolbar_right_html_click, + 'read': $toolbar_right_read_click, + 'preview': $toolbar_right_preview_click, + 'fullscreen': $toolbar_right_fullscreen_click, + 'navigation': $toolbar_right_navigation_click, + 'subfield': $toolbar_right_subfield_click + } + if (_other_right_click.hasOwnProperty(_type)) { + _other_right_click[_type]($vm); + } +} diff --git a/node_modules/mavon-editor/src/lib/util.js b/node_modules/mavon-editor/src/lib/util.js new file mode 100644 index 0000000..a964300 --- /dev/null +++ b/node_modules/mavon-editor/src/lib/util.js @@ -0,0 +1,52 @@ +/** + * Created by zhy on 2016/12/25. + */ +/** + * 深度拷贝对象 + * @param target + * @param arg + * @returns {*} + * @constructor + */ +export function p_ObjectCopy_DEEP(target, arg) { + for (let arg_item in arg) { + let type = typeof arg[arg_item]; + if (!target[arg_item] || (type !== 'Object' && type !== 'object')) { + target[arg_item] = arg[arg_item]; + continue; + } else { + target[arg_item] = p_ObjectCopy_DEEP(target[arg_item], arg[arg_item]); + } + } + return target; +}; +/** + * 解析url参数 + */ +export function p_urlParse() { + let url = window.location.search; + let obj = {}; + let reg = /[?&][^?&]+=[^?&]+/g; + let arr = url.match(reg); + if (arr) { + arr.forEach((item) => { + let tempArr = item.substring(1).split('='); + let key = decodeURIComponent(tempArr[0]); + let val = decodeURIComponent(tempArr[1]); + obj[key] = val; + }) + } + return obj; +}; + +export function stopEvent(e) { + if (!e) { + return; + } + if (e.preventDefault) { + e.preventDefault(); + } + if (e.stopPropagation) { + e.stopPropagation(); + } +}; diff --git a/node_modules/mavon-editor/src/mavon-editor.vue b/node_modules/mavon-editor/src/mavon-editor.vue new file mode 100644 index 0000000..f34db3d --- /dev/null +++ b/node_modules/mavon-editor/src/mavon-editor.vue @@ -0,0 +1,932 @@ +<template> + <div + :class="[{ fullscreen: s_fullScreen, shadow: boxShadow }]" + class="v-note-wrapper markdown-body" + :style="{ 'box-shadow': boxShadow ? boxShadowStyle : '' }" + > + <!--工具栏--> + <div + class="v-note-op" + v-show="toolbarsFlag" + :style="{ background: toolbarsBackground }" + > + <v-md-toolbar-left + ref="toolbar_left" + :editable="editable" + :transition="transition" + :d_words="d_words" + @toolbar_left_click="toolbar_left_click" + @toolbar_left_addlink="toolbar_left_addlink" + :toolbars="toolbars" + @imgAdd="$imgAdd" + @imgDel="$imgDel" + @imgTouch="$imgTouch" + :image_filter="imageFilter" + :class="{ transition: transition }" + > + <template v-slot:left-toolbar-before + ><slot name="left-toolbar-before" + /></template> + <template v-slot:left-toolbar-after + ><slot name="left-toolbar-after" + /></template> + </v-md-toolbar-left> + <v-md-toolbar-right + ref="toolbar_right" + :d_words="d_words" + @toolbar_right_click="toolbar_right_click" + :toolbars="toolbars" + :s_subfield="s_subfield" + :s_preview_switch="s_preview_switch" + :s_fullScreen="s_fullScreen" + :s_html_code="s_html_code" + :s_navigation="s_navigation" + :class="{ transition: transition }" + > + <template v-slot:right-toolbar-before + ><slot name="right-toolbar-before" + /></template> + <template v-slot:right-toolbar-after + ><slot name="right-toolbar-after" + /></template> + </v-md-toolbar-right> + </div> + <!--编辑展示区域--> + <div class="v-note-panel"> + <!--编辑区--> + <div + ref="vNoteEdit" + @scroll="$v_edit_scroll" + class="v-note-edit divarea-wrapper" + :class="{ + 'scroll-style': s_scrollStyle, + 'scroll-style-border-radius': + s_scrollStyle && !s_preview_switch && !s_html_code, + 'single-edit': !s_preview_switch && !s_html_code, + 'single-show': + (!s_subfield && s_preview_switch) || (!s_subfield && s_html_code), + transition: transition + }" + @click="textAreaFocus" + > + <div + class="content-input-wrapper" + :style="{ 'background-color': editorBackground }" + > + <!-- 双栏 --> + <v-autoTextarea + ref="vNoteTextarea" + :placeholder="placeholder ? placeholder : d_words.start_editor" + class="content-input" + :fontSize="fontSize" + lineHeight="1.5" + v-model="d_value" + fullHeight + :style="{ 'background-color': editorBackground }" + ></v-autoTextarea> + </div> + </div> + <!--展示区--> + <div + :class="{ + 'single-show': + (!s_subfield && s_preview_switch) || (!s_subfield && s_html_code) + }" + v-show="s_preview_switch || s_html_code" + class="v-note-show" + > + <div + ref="vShowContent" + v-html="d_render" + v-show="!s_html_code" + :class="{ + 'scroll-style': s_scrollStyle, + 'scroll-style-border-radius': s_scrollStyle + }" + class="v-show-content" + :style="{ 'background-color': previewBackground }" + ></div> + <div + v-show="s_html_code" + :class="{ + 'scroll-style': s_scrollStyle, + 'scroll-style-border-radius': s_scrollStyle + }" + class="v-show-content-html" + :style="{ 'background-color': previewBackground }" + > + {{ d_render }} + </div> + </div> + + <!--标题导航--> + <transition name="slideTop"> + <div + v-show="s_navigation" + class="v-note-navigation-wrapper" + :class="{ transition: transition }" + > + <div class="v-note-navigation-title"> + {{ d_words.navigation_title + }}<i + @click="toolbar_right_click('navigation')" + class="fa fa-mavon-times v-note-navigation-close" + aria-hidden="true" + ></i> + </div> + <div + ref="navigationContent" + class="v-note-navigation-content" + :class="{ 'scroll-style': s_scrollStyle }" + ></div> + </div> + </transition> + </div> + <!--帮助文档--> + <transition name="fade"> + <div ref="help"> + <div + @click.self="toolbar_right_click('help')" + class="v-note-help-wrapper" + v-if="s_help" + > + <div + class="v-note-help-content markdown-body" + :class="{ shadow: boxShadow }" + > + <i + @click.stop.prevent="toolbar_right_click('help')" + class="fa fa-mavon-times" + aria-hidden="true" + ></i> + <div class="scroll-style v-note-help-show" v-html="d_help"></div> + </div> + </div> + </div> + </transition> + <!-- 预览图片 --> + <transition name="fade"> + <div + @click="d_preview_imgsrc = null" + class="v-note-img-wrapper" + v-if="d_preview_imgsrc" + > + <img :src="d_preview_imgsrc" alt="none" /> + </div> + </transition> + <!--阅读模式--> + <div + :class="{ show: s_readmodel }" + class="v-note-read-model scroll-style" + ref="vReadModel" + > + <div + ref="vNoteReadContent" + class="v-note-read-content" + v-html="d_render" + ></div> + </div> + </div> +</template> + +<script> +// import tomarkdown from './lib/core/to-markdown.js' +import { keydownListen } from "./lib/core/keydown-listen.js"; +import hljsCss from "./lib/core/hljs/lang.hljs.css.js"; +import hljsLangs from "./lib/core/hljs/lang.hljs.js"; +import { + fullscreenchange, + /* windowResize, */ + scrollLink, + insertTextAtCaret, + getNavigation, + insertTab, + unInsertTab, + insertOl, + insertUl, + insertEnter, + removeLine, + insertCodeBlock, + loadLink, + loadScript, + ImagePreviewListener +} from "./lib/core/extra-function.js"; +import { stopEvent } from "./lib/util.js"; +import { + toolbar_left_click, + toolbar_left_addlink +} from "./lib/toolbar_left_click.js"; +import { toolbar_right_click } from "./lib/toolbar_right_click.js"; +import { CONFIG } from "./lib/config.js"; +import markdown, {initMarkdown} from './lib/mixins/markdown.js'; +import md_toolbar_left from "./components/md-toolbar-left"; +import md_toolbar_right from "./components/md-toolbar-right"; +import autoTextarea from "./components/auto-textarea"; +import "./lib/font/css/fontello.css"; +import "./lib/css/md.css"; + +export default { + emits: [ + "imgDel", + "change", + "fullScreen", + "readModel", + "previewToggle", + "subfieldToggle", + "htmlCode", + "helpToggle", + "save", + "navigationToggle", + "update:modelValue" + ], + + mixins: [markdown], + + props: { + scrollStyle: { + // 是否渲染滚动条样式(webkit) + type: Boolean, + default: true + }, + boxShadow: { + // 是否添加阴影 + type: Boolean, + default: true + }, + transition: { + // 是否开启动画过渡 + type: Boolean, + default: true + }, + autofocus: { + // 是否自动获取焦点 + type: Boolean, + default: true + }, + fontSize: { + // 字体大小 + type: String, + default: "14px" + }, + toolbarsBackground: { + // 工具栏背景色 + type: String, + default: "#ffffff" + }, + editorBackground: { + // TODO: 编辑栏背景色 + type: String, + default: "#ffffff" + }, + previewBackground: { + // 预览栏背景色 + type: String, + default: "#fbfbfb" + }, + boxShadowStyle: { + // 阴影样式 + type: String, + default: "0 2px 12px 0 rgba(0, 0, 0, 0.1)" + }, + help: { + type: String, + default: null + }, + modelValue: { + // 初始 value + type: String, + default: "" + }, + language: { + // 初始语言 + type: String, + default: "zh-CN" + }, + subfield: { + type: Boolean, + default: true + }, + navigation: { + type: Boolean, + default: false + }, + defaultOpen: { + type: String, + default: null + }, + editable: { + // 是否开启编辑 + type: Boolean, + default: true + }, + toolbarsFlag: { + // 是否开启工具栏 + type: Boolean, + default: true + }, + toolbars: { + // 工具栏 + type: Object, + default() { + return CONFIG.toolbars; + } + }, + html: {// Enable HTML tags in source + type: Boolean, + default: true + }, + xssOptions: { + type: [Object, Boolean], + default() { + return {}; + } + }, + codeStyle: { + // <code></code> 样式 + type: String, + default() { + return "github"; + } + }, + placeholder: { + // 编辑器默认内容 + type: String, + default: null + }, + ishljs: { + type: Boolean, + default: true + }, + externalLink: { + type: [Object, Boolean], + default: true + }, + imageFilter: { + type: Function, + default: null + }, + imageClick: { + type: Function, + default: null + }, + tabSize: { + type: Number, + default: 0 + }, + shortCut: { + type: Boolean, + default: true + } + }, + + data() { + return { + s_right_click_menu_show: false, + right_click_menu_top: 0, + right_click_menu_left: 0, + s_subfield: (() => { + return this.subfield; + })(), + s_autofocus: true, + // 标题导航 + s_navigation: (() => { + return this.navigation; + })(), + s_scrollStyle: (() => { + return this.scrollStyle; + })(), // props 是否渲染滚动条样式 + d_value: "", // props 文本内容 + d_render: "", // props 文本内容render + s_preview_switch: (() => { + let default_open_ = this.defaultOpen; + if (!default_open_) { + default_open_ = this.subfield ? "preview" : "edit"; + } + return default_open_ === "preview" ? true : false; + })(), // props true 展示编辑 false展示预览 + s_fullScreen: false, // 全屏编辑标志 + s_help: false, // markdown帮助 + s_html_code: false, // 分栏情况下查看html + d_help: null, + d_words: null, + edit_scroll_height: -1, + s_readmodel: false, + s_table_enter: false, // 回车事件是否在表格中执行 + d_history: (() => { + let temp_array = []; + temp_array.push(this.modelValue); + return temp_array; + })(), // 编辑记录 + d_history_index: 0, // 编辑记录索引 + currentTimeout: "", + d_image_file: [], + d_preview_imgsrc: null, // 图片预览地址 + s_external_link: { + markdown_css: function () { + return "https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.9.0/github-markdown.min.css"; + }, + hljs_js: function () { + return "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/highlight.min.js"; + }, + hljs_lang: function (lang) { + return ( + "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/languages/" + + lang + + ".min.js" + ); + }, + hljs_css: function (css) { + if (hljsCss[css]) { + return ( + "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/styles/" + + css + + ".min.css" + ); + } + return ""; + }, + katex_js: function () { + return "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js"; + }, + katex_css: function () { + return "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css"; + } + }, + p_external_link: {}, + textarea_selectionEnd: 0, + textarea_selectionEnds: [0], + _xssHandler: null + }; + }, + + created() { + var $vm = this; + // 初始化语言 + this.initLanguage(); + this.initExternalFuc(); + this.$nextTick(() => { + // 初始化Textarea编辑开关 + $vm.editableTextarea(); + }); + }, + + mounted() { + var $vm = this; + this.$el.addEventListener("paste", function (e) { + $vm.$paste(e); + }); + this.$el.addEventListener("drop", function (e) { + $vm.$drag(e); + }); + // 浏览器siz大小 + /* windowResize(this); */ + keydownListen(this); + // 图片预览事件监听 + ImagePreviewListener(this); + // 设置默认焦点 + if (this.autofocus) { + this.getTextareaDom().focus(); + } + // fullscreen事件 + fullscreenchange(this); + this.d_value = this.modelValue || ""; + // 将help添加到末尾 + document.body.appendChild(this.$refs.help); + this.loadExternalLink("markdown_css", "css"); + this.loadExternalLink("katex_css", "css"); + this.loadExternalLink("katex_js", "js", function () { + $vm.iRender(true); + }); + this.loadExternalLink("hljs_js", "js", function () { + $vm.iRender(true); + }); + + if ( + !( + typeof $vm.externalLink === "object" && + typeof $vm.externalLink["markdown_css"] === "function" + ) + ) { + // 没有外部文件要来接管markdown样式,可以更改markdown样式。 + $vm.codeStyleChange($vm.codeStyle, true); + } + }, + + beforeUnmount() { + document.body.removeChild(this.$refs.help); + }, + + getMarkdownIt() { + let mdIt = this.mixins[0].data().markdownIt; + if (!mdIt) { + mdIt = initMarkdown(); + } + return mdIt; + }, + + methods: { + loadExternalLink(name, type, callback) { + if (typeof this.p_external_link[name] !== "function") { + if (this.p_external_link[name] !== false) { + console.error( + "external_link." + name, + "is not a function, if you want to disabled this error log, set external_link." + + name, + "to function or false" + ); + } + return; + } + var _obj = { + css: loadLink, + js: loadScript + }; + if (_obj.hasOwnProperty(type)) { + _obj[type](this.p_external_link[name](), callback); + } + }, + initExternalFuc() { + var $vm = this; + var _external_ = [ + "markdown_css", + "hljs_js", + "hljs_css", + "hljs_lang", + "katex_js", + "katex_css" + ]; + var _type_ = typeof $vm.externalLink; + var _is_object = _type_ === "object"; + var _is_boolean = _type_ === "boolean"; + for (var i = 0; i < _external_.length; i++) { + if ( + (_is_boolean && !$vm.externalLink) || + (_is_object && $vm.externalLink[_external_[i]] === false) + ) { + $vm.p_external_link[_external_[i]] = false; + } else if ( + _is_object && + typeof $vm.externalLink[_external_[i]] === "function" + ) { + $vm.p_external_link[_external_[i]] = $vm.externalLink[_external_[i]]; + } else { + $vm.p_external_link[_external_[i]] = + $vm.s_external_link[_external_[i]]; + } + } + }, + textAreaFocus() { + this.$refs.vNoteTextarea.$refs.vTextarea.focus(); + }, + $drag($e) { + var dataTransfer = $e.dataTransfer; + if (dataTransfer) { + var files = dataTransfer.files; + if (files.length > 0) { + $e.preventDefault(); + this.$refs.toolbar_left.$imgFilesAdd(files); + } + } + }, + $paste($e) { + var clipboardData = $e.clipboardData; + if (clipboardData) { + var items = clipboardData.items; + if (!items) return; + var types = clipboardData.types || []; + var item = null; + for (var i = 0; i < types.length; i++) { + if (types[i] === "Files") { + item = items[i]; + break; + } + } + if (item && item.kind === "file") { + // prevent filename being pasted parallel along + // with the image pasting process + stopEvent($e); + var oFile = item.getAsFile(); + this.$refs.toolbar_left.$imgFilesAdd([oFile]); + } + } + }, + $imgTouch(file) { + var $vm = this; + // TODO 跳转到图片位置 + }, + $imgDel(file) { + this.markdownIt.image_del(file[1]); + // 删除所有markdown中的图片 + let fileReg = file[0]; + let reg = new RegExp(`\\!\\[${file[1]._name}\\]\\(${fileReg}\\)`, "g"); + + this.d_value = this.d_value.replace(reg, ""); + this.iRender(); + this.$emit("imgDel", file); + }, + $imgAdd(pos, $file, isinsert) { + if (isinsert === undefined) isinsert = true; + var $vm = this; + if (this.__rFilter == null) { + // this.__rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; + this.__rFilter = /^image\//i; + } + this.__oFReader = new FileReader(); + this.__oFReader.onload = function (oFREvent) { + $vm.markdownIt.image_add(pos, oFREvent.target.result); + $file.miniurl = oFREvent.target.result; + if (isinsert === true) { + // 去除特殊字符 + $file._name = $file.name.replace( + /[\[\]\(\)\+\{\}&\|\\\*^%$#@\-]/g, + "" + ); + + $vm.insertText($vm.getTextareaDom(), { + prefix: "", + subfix: "", + str: "" + }); + $vm.$nextTick(function () { + $vm.$emit("imgAdd", pos, $file); + }); + } + }; + if ($file) { + var oFile = $file; + if (this.__rFilter.test(oFile.type)) { + this.__oFReader.readAsDataURL(oFile); + } + } + }, + $imgUpdateByUrl(pos, url) { + var $vm = this; + this.markdownIt.image_add(pos, url); + this.$nextTick(function () { + $vm.d_render = this.markdownIt.render(this.d_value); + }); + }, + $imgAddByUrl(pos, url) { + if (this.$refs.toolbar_left.$imgAddByUrl(pos, url)) { + this.$imgUpdateByUrl(pos, url); + return true; + } + return false; + }, + $img2Url(fileIndex, url) { + // x.replace(/(\[[^\[]*?\](?=\())\(\s*(\.\/2)\s*\)/g, "$1(http://path/to/png.png)") + var reg_str = + "/(!\\[\[^\\[\]*?\\]\(?=\\(\)\)\\(\\s*\(" + fileIndex + "\)\\s*\\)/g"; + var reg = eval(reg_str); + this.d_value = this.d_value.replace(reg, "$1(" + url + ")"); + this.$refs.toolbar_left.$changeUrl(fileIndex, url); + this.iRender(); + }, + $imglst2Url(imglst) { + if (imglst instanceof Array) { + for (var i = 0; i < imglst.length; i++) { + this.$img2Url(imglst[i][0], imglst[i][1]); + } + } + }, + toolbar_left_click(_type) { + toolbar_left_click(_type, this); + }, + toolbar_left_addlink(_type, text, link) { + toolbar_left_addlink(_type, text, link, this); + }, + toolbar_right_click(_type) { + toolbar_right_click(_type, this); + }, + getNavigation($vm, full) { + return getNavigation($vm, full); + }, + // @event + // 修改数据触发 (val , val_render) + change(val, render) { + this.$emit("change", val, render); + }, + // 切换全屏触发 (status , val) + fullscreen(status, val) { + this.$emit("fullScreen", status, val); + }, + // 打开阅读模式触发(status , val) + readmodel(status, val) { + this.$emit("readModel", status, val); + }, + // 切换阅读编辑触发 (status , val) + previewtoggle(status, val) { + this.$emit("previewToggle", status, val); + }, + // 切换分栏触发 (status , val) + subfieldtoggle(status, val) { + this.$emit("subfieldToggle", status, val); + }, + // 切换htmlcode触发 (status , val) + htmlcode(status, val) { + this.$emit("htmlCode", status, val); + }, + // 打开 , 关闭 help触发 (status , val) + helptoggle(status, val) { + this.$emit("helpToggle", status, val); + }, + // 监听ctrl + s + save(val, render) { + this.$emit("save", val, render); + }, + // 导航栏切换 + navigationtoggle(status, val) { + this.$emit("navigationToggle", status, val); + }, + $toolbar_right_read_change_status() { + this.s_readmodel = !this.s_readmodel; + if (this.readmodel) { + this.readmodel(this.s_readmodel, this.d_value); + } + if (this.s_readmodel && this.toolbars.navigation) { + this.getNavigation(this, true); + } + }, + // --------------------------------------- + // 滚动条联动 + $v_edit_scroll($event) { + scrollLink($event, this); + }, + // 获取textarea dom节点 + getTextareaDom() { + return this.$refs.vNoteTextarea.$refs.vTextarea; + }, + // 工具栏插入内容 + insertText(obj, { prefix, subfix, str, type }) { + // if (this.s_preview_switch) { + + insertTextAtCaret(obj, { prefix, subfix, str, type }, this); + }, + insertTab() { + insertTab(this, this.tabSize); + }, + insertOl() { + insertOl(this); + }, + removeLine() { + removeLine(this); + }, + insertUl() { + insertUl(this); + }, + unInsertTab() { + unInsertTab(this, this.tabSize); + }, + insertCodeBlock() { + insertCodeBlock(this); + }, + insertEnter(event) { + insertEnter(this, event); + }, + saveHistory() { + this.d_history.splice(this.d_history_index + 1, this.d_history.length); + this.d_history.push(this.d_value); + this.textarea_selectionEnds.splice( + this.d_history_index + 1, + this.textarea_selectionEnds.length + ); + this.textarea_selectionEnds.push(this.textarea_selectionEnd); + this.d_history_index = this.d_history.length - 1; + }, + saveSelectionEndsHistory() { + const textarea = + this.$refs.vNoteTextarea && + this.$refs.vNoteTextarea.$el.querySelector("textarea"); + this.textarea_selectionEnd = textarea + ? textarea.selectionEnd + : this.textarea_selectionEnd; + }, + initLanguage() { + let lang = + CONFIG.langList.indexOf(this.language) >= 0 ? this.language : "zh-CN"; + var $vm = this; + $vm.$render(CONFIG[`help_${lang}`], function (res) { + $vm.d_help = res; + }); + this.d_words = CONFIG[`words_${lang}`]; + }, + // 编辑开关 + editableTextarea() { + let text_dom = this.$refs.vNoteTextarea.$refs.vTextarea; + if (this.editable) { + text_dom.removeAttribute("disabled"); + } else { + text_dom.setAttribute("disabled", "disabled"); + } + }, + codeStyleChange(val, isInit) { + isInit = isInit ? isInit : false; + if (typeof this.p_external_link.hljs_css !== "function") { + if (this.p_external_link.hljs_css !== false) { + console.error( + "external_link.hljs_css is not a function, if you want to disabled this error log, set external_link.hljs_css to function or false" + ); + } + return; + } + var url = this.p_external_link.hljs_css(val); + if (url.length === 0 && isInit) { + console.warn( + "hljs color scheme", + val, + "do not exist, loading default github" + ); + url = this.p_external_link.hljs_css("github"); + } + if (url.length > 0) { + loadLink(url, null, "md-code-style"); + } else { + console.warn( + "hljs color scheme", + val, + "do not exist, hljs color scheme will not change" + ); + } + }, + iRender(toggleChange) { + var $vm = this; + this.$render($vm.d_value, function (res) { + $vm.d_render = res; + // change回调 toggleChange == false 时候触发change回调 + if (!toggleChange) { + if ($vm.change) $vm.change($vm.d_value, $vm.d_render); + } + // 改变标题导航 + if ($vm.s_navigation) getNavigation($vm, false); + // v-model 语法糖 + $vm.$emit("update:modelValue", $vm.d_value); + // 塞入编辑记录数组 + if ($vm.d_value === $vm.d_history[$vm.d_history_index]) return; + window.clearTimeout($vm.currentTimeout); + $vm.currentTimeout = setTimeout(() => { + $vm.saveHistory(); + }, 500); + }); + }, + // 清空上一步 下一步缓存 + $emptyHistory() { + this.d_history = [this.d_value]; // 编辑记录 + this.d_history_index = 0; // 编辑记录索引 + } + }, + + watch: { + d_value: function (val, oldVal) { + this.saveSelectionEndsHistory(); + this.iRender(); + }, + modelValue: function (val, oldVal) { + if (val !== this.d_value) { + this.d_value = val; + } + }, + subfield: function (val, oldVal) { + this.s_subfield = val; + }, + d_history_index() { + if (this.d_history_index > 20) { + this.d_history.shift(); + this.d_history_index = this.d_history_index - 1; + } + this.d_value = this.d_history[this.d_history_index]; + }, + language: function (val) { + this.initLanguage(); + }, + editable: function () { + this.editableTextarea(); + }, + defaultOpen: function (val) { + let default_open_ = val; + if (!default_open_) { + default_open_ = this.subfield ? "preview" : "edit"; + } + this.s_preview_switch = default_open_ === "preview" ? true : false; + return this.s_preview_switch; + }, + codeStyle: function (val) { + this.codeStyleChange(val); + } + }, + + components: { + "v-autoTextarea": autoTextarea, + "v-md-toolbar-left": md_toolbar_left, + "v-md-toolbar-right": md_toolbar_right + } +}; +</script> +<style lang="stylus" rel="stylesheet/stylus"> +@import "lib/css/scroll.styl" +@import "lib/css/mavon-editor.styl" +</style> +<style lang="css" scoped> +.auto-textarea-wrapper { + height: 100%; +} +</style> diff --git a/node_modules/xss/LICENSE b/node_modules/xss/LICENSE new file mode 100644 index 0000000..f840eb4 --- /dev/null +++ b/node_modules/xss/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com> +http://ucdok.com + +The MIT License + +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. \ No newline at end of file diff --git a/node_modules/xss/README.md b/node_modules/xss/README.md new file mode 100644 index 0000000..b40bdaf --- /dev/null +++ b/node_modules/xss/README.md @@ -0,0 +1,508 @@ +[![NPM version][npm-image]][npm-url] +[](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml) +[![Test coverage][coveralls-image]][coveralls-url] +[![David deps][david-image]][david-url] +[![node version][node-image]][node-url] +[![npm download][download-image]][download-url] +[![npm license][license-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/xss.svg?style=flat-square +[npm-url]: https://npmjs.org/package/xss +[coveralls-image]: https://img.shields.io/coveralls/leizongmin/js-xss.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/leizongmin/js-xss?branch=master +[david-image]: https://img.shields.io/david/leizongmin/js-xss.svg?style=flat-square +[david-url]: https://david-dm.org/leizongmin/js-xss +[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square +[node-url]: http://nodejs.org/download/ +[download-image]: https://img.shields.io/npm/dm/xss.svg?style=flat-square +[download-url]: https://npmjs.org/package/xss +[license-image]: https://img.shields.io/npm/l/xss.svg + +# Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist. + +[](https://greenkeeper.io/) + + + +--- + +`xss` is a module used to filter input from users to prevent XSS attacks. +([What is XSS attack?](http://en.wikipedia.org/wiki/Cross-site_scripting)) + +**Project Homepage:** http://jsxss.com + +**Try Online:** http://jsxss.com/en/try.html + +**[中文版文档](https://github.com/leizongmin/js-xss/blob/master/README.zh.md)** + +--- + +## Features + +- Specifies HTML tags and their attributes allowed with whitelist +- Handle any tags or attributes using custom function. + +## Reference + +- [XSS Filter Evasion Cheat Sheet](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet) +- [Data URI scheme](http://en.wikipedia.org/wiki/Data_URI_scheme) +- [XSS with Data URI Scheme](http://hi.baidu.com/badzzzz/item/bdbafe83144619c199255f7b) + +## Benchmark (for references only) + +- the xss module: 22.53 MB/s +- `xss()` function from module `validator@0.3.7`: 6.9 MB/s + +For test code please refer to `benchmark` directory. + +## They are using xss module + +- **nodeclub** - A Node.js bbs using MongoDB - https://github.com/cnodejs/nodeclub +- **cnpmjs.org** - Private npm registry and web for Enterprise - https://github.com/cnpm/cnpmjs.org +- **cocalc.com** - Collaborative Calculation and Data Science - https://cocalc.com + +## Install + +### NPM + +```bash +npm install xss +``` + +### Bower + +```bash +bower install xss +``` + +Or + +```bash +bower install https://github.com/leizongmin/js-xss.git +``` + +## Usages + +### On Node.js + +```javascript +var xss = require("xss"); +var html = xss('<script>alert("xss");</script>'); +console.log(html); +``` + +### On Browser + +Shim mode (reference file `test/test.html`): + +```html +<script src="https://rawgit.com/leizongmin/js-xss/master/dist/xss.js"></script> +<script> + // apply function filterXSS in the same way + var html = filterXSS('<script>alert("xss");</scr' + "ipt>"); + alert(html); +</script> +``` + +AMD mode - shim: + +```html +<script> + require.config({ + baseUrl: "./", + paths: { + xss: "https://rawgit.com/leizongmin/js-xss/master/dist/xss.js", + }, + shim: { + xss: { exports: "filterXSS" }, + }, + }); + require(["xss"], function (xss) { + var html = xss('<script>alert("xss");</scr' + "ipt>"); + alert(html); + }); +</script> +``` + +**Notes: please don't use the URL https://rawgit.com/leizongmin/js-xss/master/dist/xss.js in production environment.** + +## Command Line Tool + +### Process File + +You can use the xss command line tool to process a file. Usage: + +```bash +xss -i <input_file> -o <output_file> +``` + +Example: + +```bash +xss -i origin.html -o target.html +``` + +### Active Test + +Run the following command, them you can type HTML +code in the command-line, and check the filtered output: + +```bash +xss -t +``` + +For more details, please run `$ xss -h` to see it. + +## Custom filter rules + +When using the `xss()` function, the second parameter could be used to specify +custom rules: + +```javascript +options = {}; // Custom rules +html = xss('<script>alert("xss");</script>', options); +``` + +To avoid passing `options` every time, you can also do it in a faster way by +creating a `FilterXSS` instance: + +```javascript +options = {}; // Custom rules +myxss = new xss.FilterXSS(options); +// then apply myxss.process() +html = myxss.process('<script>alert("xss");</script>'); +``` + +Details of parameters in `options` would be described below. + +### Whitelist + +By specifying a `whiteList`, e.g. `{ 'tagName': [ 'attr-1', 'attr-2' ] }`. Tags +and attributes not in the whitelist would be filter out. For example: + +```javascript +// only tag a and its attributes href, title, target are allowed +var options = { + whiteList: { + a: ["href", "title", "target"], + }, +}; +// With the configuration specified above, the following HTML: +// <a href="#" onclick="hello()"><i>Hello</i></a> +// would become: +// <a href="#"><i>Hello</i></a> +``` + +For the default whitelist, please refer `xss.whiteList`. + +`allowList` is also supported, and has the same function as `whiteList`. + +### Customize the handler function for matched tags + +By specifying the handler function with `onTag`: + +```javascript +function onTag(tag, html, options) { + // tag is the name of current tag, e.g. 'a' for tag <a> + // html is the HTML of this tag, e.g. '<a>' for tag <a> + // options is some addition informations: + // isWhite boolean, whether the tag is in whitelist + // isClosing boolean, whether the tag is a closing tag, e.g. true for </a> + // position integer, the position of the tag in output result + // sourcePosition integer, the position of the tag in input HTML source + // If a string is returned, the current tag would be replaced with the string + // If return nothing, the default measure would be taken: + // If in whitelist: filter attributes using onTagAttr, as described below + // If not in whitelist: handle by onIgnoreTag, as described below +} +``` + +### Customize the handler function for attributes of matched tags + +By specifying the handler function with `onTagAttr`: + +```javascript +function onTagAttr(tag, name, value, isWhiteAttr) { + // tag is the name of current tag, e.g. 'a' for tag <a> + // name is the name of current attribute, e.g. 'href' for href="#" + // isWhiteAttr whether the attribute is in whitelist + // If a string is returned, the attribute would be replaced with the string + // If return nothing, the default measure would be taken: + // If in whitelist: filter the value using safeAttrValue as described below + // If not in whitelist: handle by onIgnoreTagAttr, as described below +} +``` + +### Customize the handler function for tags not in the whitelist + +By specifying the handler function with `onIgnoreTag`: + +```javascript +function onIgnoreTag(tag, html, options) { + // Parameters are the same with onTag + // If a string is returned, the tag would be replaced with the string + // If return nothing, the default measure would be taken (specifies using + // escape, as described below) +} +``` + +### Customize the handler function for attributes not in the whitelist + +By specifying the handler function with `onIgnoreTagAttr`: + +```javascript +function onIgnoreTagAttr(tag, name, value, isWhiteAttr) { + // Parameters are the same with onTagAttr + // If a string is returned, the value would be replaced with this string + // If return nothing, then keep default (remove the attribute) +} +``` + +### Customize escaping function for HTML + +By specifying the handler function with `escapeHtml`. Following is the default +function **(Modification is not recommended)**: + +```javascript +function escapeHtml(html) { + return html.replace(/</g, "<").replace(/>/g, ">"); +} +``` + +### Customize escaping function for value of attributes + +By specifying the handler function with `safeAttrValue`: + +```javascript +function safeAttrValue(tag, name, value) { + // Parameters are the same with onTagAttr (without options) + // Return the value as a string +} +``` + +### Customize CSS filter + +If you allow the attribute `style`, the value will be processed by [cssfilter](https://github.com/leizongmin/js-css-filter) module. The cssfilter module includes a default css whitelist. You can specify the options for cssfilter module like this: + +```javascript +myxss = new xss.FilterXSS({ + css: { + whiteList: { + position: /^fixed|relative$/, + top: true, + left: true, + }, + }, +}); +html = myxss.process('<script>alert("xss");</script>'); +``` + +If you don't want to filter out the `style` content, just specify `false` to the `css` option: + +```javascript +myxss = new xss.FilterXSS({ + css: false, +}); +``` + +For more help, please see https://github.com/leizongmin/js-css-filter + +### Quick Start + +#### Filter out tags not in the whitelist + +By using `stripIgnoreTag` parameter: + +- `true` filter out tags not in the whitelist +- `false`: by default: escape the tag using configured `escape` function + +Example: + +If `stripIgnoreTag = true` is set, the following code: + +```html +code: +<script> + alert(/xss/); +</script> +``` + +would output filtered: + +```html +code:alert(/xss/); +``` + +#### Filter out tags and tag bodies not in the whitelist + +By using `stripIgnoreTagBody` parameter: + +- `false|null|undefined` by default: do nothing +- `'*'|true`: filter out all tags not in the whitelist +- `['tag1', 'tag2']`: filter out only specified tags not in the whitelist + +Example: + +If `stripIgnoreTagBody = ['script']` is set, the following code: + +```html +code: +<script> + alert(/xss/); +</script> +``` + +would output filtered: + +```html +code: +``` + +#### Filter out HTML comments + +By using `allowCommentTag` parameter: + +- `true`: do nothing +- `false` by default: filter out HTML comments + +Example: + +If `allowCommentTag = false` is set, the following code: + +```html +code:<!-- something --> +END +``` + +would output filtered: + +```html +code: END +``` + +## Examples + +### Allow attributes of whitelist tags start with `data-` + +```javascript +var source = '<div a="1" b="2" data-a="3" data-b="4">hello</div>'; +var html = xss(source, { + onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) { + if (name.substr(0, 5) === "data-") { + // escape its value using built-in escapeAttrValue function + return name + '="' + xss.escapeAttrValue(value) + '"'; + } + }, +}); + +console.log("%s\nconvert to:\n%s", source, html); +``` + +Result: + +```html +<div a="1" b="2" data-a="3" data-b="4">hello</div> +convert to: +<div data-a="3" data-b="4">hello</div> +``` + +### Allow tags start with `x-` + +```javascript +var source = "<x><x-1>he<x-2 checked></x-2>wwww</x-1><a>"; +var html = xss(source, { + onIgnoreTag: function (tag, html, options) { + if (tag.substr(0, 2) === "x-") { + // do not filter its attributes + return html; + } + }, +}); + +console.log("%s\nconvert to:\n%s", source, html); +``` + +Result: + +```html +<x + ><x-1>he<x-2 checked></x-2>wwww</x-1 + ><a> + convert to: <x><x-1>he<x-2 checked></x-2>wwww</x-1><a></a></a +></x> +``` + +### Parse images in HTML + +```javascript +var source = + '<img src="img1">a<img src="img2">b<img src="img3">c<img src="img4">d'; +var list = []; +var html = xss(source, { + onTagAttr: function (tag, name, value, isWhiteAttr) { + if (tag === "img" && name === "src") { + // Use the built-in friendlyAttrValue function to escape attribute + // values. It supports converting entity tags such as < to printable + // characters such as < + list.push(xss.friendlyAttrValue(value)); + } + // Return nothing, means keep the default handling measure + }, +}); + +console.log("image list:\n%s", list.join(", ")); +``` + +Result: + +```html +image list: img1, img2, img3, img4 +``` + +### Filter out HTML tags (keeps only plain text) + +```javascript +var source = "<strong>hello</strong><script>alert(/xss/);</script>end"; +var html = xss(source, { + whiteList: {}, // empty, means filter out all tags + stripIgnoreTag: true, // filter out all HTML not in the whitelist + stripIgnoreTagBody: ["script"], // the script tag is a special case, we need + // to filter out its content +}); + +console.log("text: %s", html); +``` + +Result: + +```html +text: helloend +``` + +## License + +```text +Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com> +http://ucdok.com + +The MIT License + +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/node_modules/xss/README.zh.md b/node_modules/xss/README.zh.md new file mode 100644 index 0000000..3bdb4b8 --- /dev/null +++ b/node_modules/xss/README.zh.md @@ -0,0 +1,491 @@ +[![NPM version][npm-image]][npm-url] +[](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml) +[![Test coverage][coveralls-image]][coveralls-url] +[![David deps][david-image]][david-url] +[![node version][node-image]][node-url] +[![npm download][download-image]][download-url] +[![npm license][license-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/xss.svg?style=flat-square +[npm-url]: https://npmjs.org/package/xss +[coveralls-image]: https://img.shields.io/coveralls/leizongmin/js-xss.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/leizongmin/js-xss?branch=master +[david-image]: https://img.shields.io/david/leizongmin/js-xss.svg?style=flat-square +[david-url]: https://david-dm.org/leizongmin/js-xss +[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square +[node-url]: http://nodejs.org/download/ +[download-image]: https://img.shields.io/npm/dm/xss.svg?style=flat-square +[download-url]: https://npmjs.org/package/xss +[license-image]: https://img.shields.io/npm/l/xss.svg + +# 根据白名单过滤 HTML(防止 XSS 攻击) + + + +--- + +`xss`是一个用于对用户输入的内容进行过滤,以避免遭受 XSS 攻击的模块([什么是 XSS 攻击?](http://baike.baidu.com/view/2161269.htm))。主要用于论坛、博客、网上商店等等一些可允许用户录入页面排版、格式控制相关的 HTML 的场景,`xss`模块通过白名单来控制允许的标签及相关的标签属性,另外还提供了一系列的接口以便用户扩展,比其他同类模块更为灵活。 + +**项目主页:** http://jsxss.com + +**在线测试:** http://jsxss.com/zh/try.html + +--- + +## 特性 + +- 白名单控制允许的 HTML 标签及各标签的属性 +- 通过自定义处理函数,可对任意标签及其属性进行处理 + +## 参考资料 + +- [XSS 与字符编码的那些事儿 ---科普文](http://drops.wooyun.org/tips/689) +- [腾讯实例教程:那些年我们一起学 XSS](http://www.wooyun.org/whitehats/%E5%BF%83%E4%BC%A4%E7%9A%84%E7%98%A6%E5%AD%90) +- [mXSS 攻击的成因及常见种类](http://drops.wooyun.org/tips/956) +- [XSS Filter Evasion Cheat Sheet](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet) +- [Data URI scheme](http://en.wikipedia.org/wiki/Data_URI_scheme) +- [XSS with Data URI Scheme](http://hi.baidu.com/badzzzz/item/bdbafe83144619c199255f7b) + +## 性能(仅作参考) + +- xss 模块:22.53 MB/s +- validator@0.3.7 模块的 xss()函数:6.9 MB/s + +测试代码参考 benchmark 目录 + +## 安装 + +### NPM + +```bash +npm install xss +``` + +### Bower + +```bash +bower install xss +``` + +或者 + +```bash +bower install https://github.com/leizongmin/js-xss.git +``` + +## 使用方法 + +### 在 Node.js 中使用 + +```javascript +var xss = require("xss"); +var html = xss('<script>alert("xss");</script>'); +console.log(html); +``` + +### 在浏览器端使用 + +Shim 模式(参考文件 `test/test.html`): + +```html +<script src="https://rawgit.com/leizongmin/js-xss/master/dist/xss.js"></script> +<script> + // 使用函数名 filterXSS,用法一样 + var html = filterXSS('<script>alert("xss");</scr' + "ipt>"); + alert(html); +</script> +``` + +AMD 模式(参考文件 `test/test_amd.html`): + +```html +<script> + require.config({ + baseUrl: "./", + paths: { + xss: "https://rawgit.com/leizongmin/js-xss/master/dist/xss.js", + }, + shim: { + xss: { exports: "filterXSS" }, + }, + }); + require(["xss"], function (xss) { + var html = xss('<script>alert("xss");</scr' + "ipt>"); + alert(html); + }); +</script> +``` + +**说明:请勿将 URL https://rawgit.com/leizongmin/js-xss/master/dist/xss.js 用于生产环境。** + +### 使用命令行工具来对文件进行 XSS 处理 + +### 处理文件 + +可通过内置的 `xss` 命令来对输入的文件进行 XSS 处理。使用方法: + +```bash +xss -i <源文件> -o <目标文件> +``` + +例: + +```bash +xss -i origin.html -o target.html +``` + +### 在线测试 + +执行以下命令,可在命令行中输入 HTML 代码,并看到过滤后的代码: + +```bash +xss -t +``` + +详细命令行参数说明,请输入 `$ xss -h` 来查看。 + +## 自定义过滤规则 + +在调用 `xss()` 函数进行过滤时,可通过第二个参数来设置自定义规则: + +```javascript +options = {}; // 自定义规则 +html = xss('<script>alert("xss");</script>', options); +``` + +如果不想每次都传入一个 `options` 参数,可以创建一个 `FilterXSS` 实例(使用这种方法速度更快): + +``` +options = {}; // 自定义规则 +myxss = new xss.FilterXSS(options); +// 以后直接调用 myxss.process() 来处理即可 +html = myxss.process('<script>alert("xss");</script>'); +``` + +`options` 参数的详细说明见下文。 + +### 白名单 + +通过 `whiteList` 来指定,格式为:`{'标签名': ['属性1', '属性2']}`。不在白名单上的标签将被过滤,不在白名单上的属性也会被过滤。以下是示例: + +```javascript +// 只允许a标签,该标签只允许href, title, target这三个属性 +var options = { + whiteList: { + a: ["href", "title", "target"], + }, +}; +// 使用以上配置后,下面的HTML +// <a href="#" onclick="hello()"><i>大家好</i></a> +// 将被过滤为 +// <a href="#">大家好</a> +``` + +默认白名单参考 `xss.whiteList`。 + +### 自定义匹配到标签时的处理方法 + +通过 `onTag` 来指定相应的处理函数。以下是详细说明: + +```javascript +function onTag(tag, html, options) { + // tag是当前的标签名称,比如<a>标签,则tag的值是'a' + // html是该标签的HTML,比如<a>标签,则html的值是'<a>' + // options是一些附加的信息,具体如下: + // isWhite boolean类型,表示该标签是否在白名单上 + // isClosing boolean类型,表示该标签是否为闭合标签,比如</a>时为true + // position integer类型,表示当前标签在输出的结果中的起始位置 + // sourcePosition integer类型,表示当前标签在原HTML中的起始位置 + // 如果返回一个字符串,则当前标签将被替换为该字符串 + // 如果不返回任何值,则使用默认的处理方法: + // 在白名单上: 通过onTagAttr来过滤属性,详见下文 + // 不在白名单上:通过onIgnoreTag指定,详见下文 +} +``` + +### 自定义匹配到标签的属性时的处理方法 + +通过 `onTagAttr` 来指定相应的处理函数。以下是详细说明: + +```javascript +function onTagAttr(tag, name, value, isWhiteAttr) { + // tag是当前的标签名称,比如<a>标签,则tag的值是'a' + // name是当前属性的名称,比如href="#",则name的值是'href' + // value是当前属性的值,比如href="#",则value的值是'#' + // isWhiteAttr是否为白名单上的属性 + // 如果返回一个字符串,则当前属性值将被替换为该字符串 + // 如果不返回任何值,则使用默认的处理方法 + // 在白名单上: 调用safeAttrValue来过滤属性值,并输出该属性,详见下文 + // 不在白名单上:通过onIgnoreTagAttr指定,详见下文 +} +``` + +### 自定义匹配到不在白名单上的标签时的处理方法 + +通过 `onIgnoreTag` 来指定相应的处理函数。以下是详细说明: + +```javascript +function onIgnoreTag(tag, html, options) { + // 参数说明与onTag相同 + // 如果返回一个字符串,则当前标签将被替换为该字符串 + // 如果不返回任何值,则使用默认的处理方法(通过escape指定,详见下文) +} +``` + +### 自定义匹配到不在白名单上的属性时的处理方法 + +通过 `onIgnoreTagAttr` 来指定相应的处理函数。以下是详细说明: + +```javascript +function onIgnoreTagAttr(tag, name, value, isWhiteAttr) { + // 参数说明与onTagAttr相同 + // 如果返回一个字符串,则当前属性值将被替换为该字符串 + // 如果不返回任何值,则使用默认的处理方法(删除该属) +} +``` + +### 自定义 HTML 转义函数 + +通过 `escapeHtml` 来指定相应的处理函数。以下是默认代码 **(不建议修改)** : + +```javascript +function escapeHtml(html) { + return html.replace(/</g, "<").replace(/>/g, ">"); +} +``` + +### 自定义标签属性值的转义函数 + +通过 `safeAttrValue` 来指定相应的处理函数。以下是详细说明: + +```javascript +function safeAttrValue(tag, name, value) { + // 参数说明与onTagAttr相同(没有options参数) + // 返回一个字符串表示该属性值 +} +``` + +### 自定义 CSS 过滤器 + +如果配置中允许了标签的 `style` 属性,则它的值会通过[cssfilter](https://github.com/leizongmin/js-css-filter) 模块处理。 +`cssfilter` 模块包含了一个默认的 CSS 白名单,你可以通过以下的方式配置: + +```javascript +myxss = new xss.FilterXSS({ + css: { + whiteList: { + position: /^fixed|relative$/, + top: true, + left: true, + }, + }, +}); +html = myxss.process('<script>alert("xss");</script>'); +``` + +如果不想使用 CSS 过滤器来处理 `style` 属性的内容,可指定 `css` 选项的值为 `false`: + +```javascript +myxss = new xss.FilterXSS({ + css: false, +}); +``` + +要获取更多的帮助信息可看这里:https://github.com/leizongmin/js-css-filter + +### 快捷配置 + +#### 去掉不在白名单上的标签 + +通过 `stripIgnoreTag` 来设置: + +- `true`:去掉不在白名单上的标签 +- `false`:(默认),使用配置的`escape`函数对该标签进行转义 + +示例: + +当设置 `stripIgnoreTag = true`时,以下代码 + +```html +code: +<script> + alert(/xss/); +</script> +``` + +过滤后将输出 + +```html +code:alert(/xss/); +``` + +#### 去掉不在白名单上的标签及标签体 + +通过 `stripIgnoreTagBody` 来设置: + +- `false|null|undefined`:(默认),不特殊处理 +- `'*'|true`:去掉所有不在白名单上的标签 +- `['tag1', 'tag2']`:仅去掉指定的不在白名单上的标签 + +示例: + +当设置 `stripIgnoreTagBody = ['script']`时,以下代码 + +```html +code: +<script> + alert(/xss/); +</script> +``` + +过滤后将输出 + +```html +code: +``` + +#### 去掉 HTML 备注 + +通过 `allowCommentTag` 来设置: + +- `true`:不处理 +- `false`:(默认),自动去掉 HTML 中的备注 + +示例: + +当设置 `allowCommentTag = false` 时,以下代码 + +```html +code:<!-- something --> +END +``` + +过滤后将输出 + +```html +code: END +``` + +## 应用实例 + +### 允许标签以 data-开头的属性 + +```javascript +var source = '<div a="1" b="2" data-a="3" data-b="4">hello</div>'; +var html = xss(source, { + onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) { + if (name.substr(0, 5) === "data-") { + // 通过内置的escapeAttrValue函数来对属性值进行转义 + return name + '="' + xss.escapeAttrValue(value) + '"'; + } + }, +}); + +console.log("%s\nconvert to:\n%s", source, html); +``` + +运行结果: + +```html +<div a="1" b="2" data-a="3" data-b="4">hello</div> +convert to: +<div data-a="3" data-b="4">hello</div> +``` + +### 允许名称以 x-开头的标签 + +```javascript +var source = "<x><x-1>he<x-2 checked></x-2>wwww</x-1><a>"; +var html = xss(source, { + onIgnoreTag: function (tag, html, options) { + if (tag.substr(0, 2) === "x-") { + // 不对其属性列表进行过滤 + return html; + } + }, +}); + +console.log("%s\nconvert to:\n%s", source, html); +``` + +运行结果: + +```html +<x + ><x-1>he<x-2 checked></x-2>wwww</x-1 + ><a> + convert to: <x><x-1>he<x-2 checked></x-2>wwww</x-1><a></a></a +></x> +``` + +### 分析 HTML 代码中的图片列表 + +```javascript +var source = + '<img src="img1">a<img src="img2">b<img src="img3">c<img src="img4">d'; +var list = []; +var html = xss(source, { + onTagAttr: function (tag, name, value, isWhiteAttr) { + if (tag === "img" && name === "src") { + // 使用内置的friendlyAttrValue函数来对属性值进行转义,可将<这类的实体标记转换成打印字符< + list.push(xss.friendlyAttrValue(value)); + } + // 不返回任何值,表示还是按照默认的方法处理 + }, +}); + +console.log("image list:\n%s", list.join(", ")); +``` + +运行结果: + +```html +image list: img1, img2, img3, img4 +``` + +### 去除 HTML 标签(只保留文本内容) + +```javascript +var source = "<strong>hello</strong><script>alert(/xss/);</script>end"; +var html = xss(source, { + whiteList: {}, // 白名单为空,表示过滤所有标签 + stripIgnoreTag: true, // 过滤所有非白名单标签的HTML + stripIgnoreTagBody: ["script"], // script标签较特殊,需要过滤标签中间的内容 +}); + +console.log("text: %s", html); +``` + +运行结果: + +```html +text: helloend +``` + +## 授权协议 + +```text +Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com> +http://ucdok.com + +The MIT License + +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/node_modules/xss/bin/xss b/node_modules/xss/bin/xss new file mode 100644 index 0000000..35e902f --- /dev/null +++ b/node_modules/xss/bin/xss @@ -0,0 +1,67 @@ +#!/usr/bin/env node + +/** + * 命令行工具 + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var fs = require('fs'); +var path = require('path'); +var program = require('commander'); +var xss = require('../'); +var packageInfo = require('../package.json'); + +program + .version(packageInfo.version) + .option('-t, --test', 'active test') + .option('-i, --input <input_file>', 'input file name') + .option('-o, --output <output_file>', 'output filename') + .option('-c, --config <config_file>', 'load custom config') + .option('-s, --strip-ignore-tag', 'set stripIgnoreTag=true') + .option('-b, --strip-ignore-tag-body', 'set stripIgnoreTagBody=true'); + +program.on('--help', function () { + console.log(' Examples:'); + console.log(''); + console.log(' $ xss -t'); + console.log(' $ xss -i origin.html'); + console.log(' $ xss -i origin.html -o targer.html'); + console.log(' $ xss -i origin.html -c config.js'); + console.log(' $ xss -i origin.html -s'); + console.log(' $ xss -i origin.html -s -b'); + console.log(''); + console.log(' For more details, please see: https://npmjs.org/package/xss') +}); + +program.parse(process.argv); + +if (program.test) { + require('../lib/cli'); + return; +} + +var config = {}; +if (program.config) { + config = require(path.resolve(program.config)); +} +if (program.input) { + var input = fs.readFileSync(program.input, 'utf8'); +} else { + program.help(); +} + +if (program['strip-ignore-tag']) { + config.stripIgnoreTag = true; +} +if (program['strip-ignore-tag-body']) { + config.stripIgnoreTagBody = true; +} + +var output = xss(input, config); + +if (program.output) { + fs.writeFileSync(program.output, output); +} else { + console.log(output); +} diff --git a/node_modules/xss/dist/test.html b/node_modules/xss/dist/test.html new file mode 100644 index 0000000..cae361e --- /dev/null +++ b/node_modules/xss/dist/test.html @@ -0,0 +1,15 @@ +<!doctype html> +<html> +<head> + <title>测试</title> + <meta charset="utf8"> +</head> +<body> + <pre id="result"></pre> +</body> +</html> +<script src="xss.js"></script> +<script> +var code = '<script>alert("xss");</' + 'script>'; +document.querySelector('#result').innerText = code + '\n被转换成了\n' + filterXSS(code); +</script> \ No newline at end of file diff --git a/node_modules/xss/dist/xss.js b/node_modules/xss/dist/xss.js new file mode 100644 index 0000000..d18a8d6 --- /dev/null +++ b/node_modules/xss/dist/xss.js @@ -0,0 +1,1700 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ +/** + * default settings + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var FilterCSS = require("cssfilter").FilterCSS; +var getDefaultCSSWhiteList = require("cssfilter").getDefaultWhiteList; +var _ = require("./util"); + +function getDefaultWhiteList() { + return { + a: ["target", "href", "title"], + abbr: ["title"], + address: [], + area: ["shape", "coords", "href", "alt"], + article: [], + aside: [], + audio: [ + "autoplay", + "controls", + "crossorigin", + "loop", + "muted", + "preload", + "src", + ], + b: [], + bdi: ["dir"], + bdo: ["dir"], + big: [], + blockquote: ["cite"], + br: [], + caption: [], + center: [], + cite: [], + code: [], + col: ["align", "valign", "span", "width"], + colgroup: ["align", "valign", "span", "width"], + dd: [], + del: ["datetime"], + details: ["open"], + div: [], + dl: [], + dt: [], + em: [], + figcaption: [], + figure: [], + font: ["color", "size", "face"], + footer: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + header: [], + hr: [], + i: [], + img: ["src", "alt", "title", "width", "height"], + ins: ["datetime"], + li: [], + mark: [], + nav: [], + ol: [], + p: [], + pre: [], + s: [], + section: [], + small: [], + span: [], + sub: [], + summary: [], + sup: [], + strong: [], + strike: [], + table: ["width", "border", "align", "valign"], + tbody: ["align", "valign"], + td: ["width", "rowspan", "colspan", "align", "valign"], + tfoot: ["align", "valign"], + th: ["width", "rowspan", "colspan", "align", "valign"], + thead: ["align", "valign"], + tr: ["rowspan", "align", "valign"], + tt: [], + u: [], + ul: [], + video: [ + "autoplay", + "controls", + "crossorigin", + "loop", + "muted", + "playsinline", + "poster", + "preload", + "src", + "height", + "width", + ], + }; +} + +var defaultCSSFilter = new FilterCSS(); + +/** + * default onTag function + * + * @param {String} tag + * @param {String} html + * @param {Object} options + * @return {String} + */ +function onTag(tag, html, options) { + // do nothing +} + +/** + * default onIgnoreTag function + * + * @param {String} tag + * @param {String} html + * @param {Object} options + * @return {String} + */ +function onIgnoreTag(tag, html, options) { + // do nothing +} + +/** + * default onTagAttr function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @return {String} + */ +function onTagAttr(tag, name, value) { + // do nothing +} + +/** + * default onIgnoreTagAttr function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @return {String} + */ +function onIgnoreTagAttr(tag, name, value) { + // do nothing +} + +/** + * default escapeHtml function + * + * @param {String} html + */ +function escapeHtml(html) { + return html.replace(REGEXP_LT, "<").replace(REGEXP_GT, ">"); +} + +/** + * default safeAttrValue function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @param {Object} cssFilter + * @return {String} + */ +function safeAttrValue(tag, name, value, cssFilter) { + // unescape attribute value firstly + value = friendlyAttrValue(value); + + if (name === "href" || name === "src") { + // filter `href` and `src` attribute + // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#` + value = _.trim(value); + if (value === "#") return "#"; + if ( + !( + value.substr(0, 7) === "http://" || + value.substr(0, 8) === "https://" || + value.substr(0, 7) === "mailto:" || + value.substr(0, 4) === "tel:" || + value.substr(0, 11) === "data:image/" || + value.substr(0, 6) === "ftp://" || + value.substr(0, 2) === "./" || + value.substr(0, 3) === "../" || + value[0] === "#" || + value[0] === "/" + ) + ) { + return ""; + } + } else if (name === "background") { + // filter `background` attribute (maybe no use) + // `javascript:` + REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) { + return ""; + } + } else if (name === "style") { + // `expression()` + REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) { + return ""; + } + // `url()` + REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) { + REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) { + return ""; + } + } + if (cssFilter !== false) { + cssFilter = cssFilter || defaultCSSFilter; + value = cssFilter.process(value); + } + } + + // escape `<>"` before returns + value = escapeAttrValue(value); + return value; +} + +// RegExp list +var REGEXP_LT = /</g; +var REGEXP_GT = />/g; +var REGEXP_QUOTE = /"/g; +var REGEXP_QUOTE_2 = /"/g; +var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim; +var REGEXP_ATTR_VALUE_COLON = /:?/gim; +var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim; +// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\/\*|\*\//gm; +var REGEXP_DEFAULT_ON_TAG_ATTR_4 = + /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi; +// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi; +// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi; +var REGEXP_DEFAULT_ON_TAG_ATTR_7 = + /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi; +var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi; + +/** + * escape double quote + * + * @param {String} str + * @return {String} str + */ +function escapeQuote(str) { + return str.replace(REGEXP_QUOTE, """); +} + +/** + * unescape double quote + * + * @param {String} str + * @return {String} str + */ +function unescapeQuote(str) { + return str.replace(REGEXP_QUOTE_2, '"'); +} + +/** + * escape html entities + * + * @param {String} str + * @return {String} + */ +function escapeHtmlEntities(str) { + return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) { + return code[0] === "x" || code[0] === "X" + ? String.fromCharCode(parseInt(code.substr(1), 16)) + : String.fromCharCode(parseInt(code, 10)); + }); +} + +/** + * escape html5 new danger entities + * + * @param {String} str + * @return {String} + */ +function escapeDangerHtml5Entities(str) { + return str + .replace(REGEXP_ATTR_VALUE_COLON, ":") + .replace(REGEXP_ATTR_VALUE_NEWLINE, " "); +} + +/** + * clear nonprintable characters + * + * @param {String} str + * @return {String} + */ +function clearNonPrintableCharacter(str) { + var str2 = ""; + for (var i = 0, len = str.length; i < len; i++) { + str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i); + } + return _.trim(str2); +} + +/** + * get friendly attribute value + * + * @param {String} str + * @return {String} + */ +function friendlyAttrValue(str) { + str = unescapeQuote(str); + str = escapeHtmlEntities(str); + str = escapeDangerHtml5Entities(str); + str = clearNonPrintableCharacter(str); + return str; +} + +/** + * unescape attribute value + * + * @param {String} str + * @return {String} + */ +function escapeAttrValue(str) { + str = escapeQuote(str); + str = escapeHtml(str); + return str; +} + +/** + * `onIgnoreTag` function for removing all the tags that are not in whitelist + */ +function onIgnoreTagStripAll() { + return ""; +} + +/** + * remove tag body + * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional) + * + * @param {array} tags + * @param {function} next + */ +function StripTagBody(tags, next) { + if (typeof next !== "function") { + next = function () {}; + } + + var isRemoveAllTag = !Array.isArray(tags); + function isRemoveTag(tag) { + if (isRemoveAllTag) return true; + return _.indexOf(tags, tag) !== -1; + } + + var removeList = []; + var posStart = false; + + return { + onIgnoreTag: function (tag, html, options) { + if (isRemoveTag(tag)) { + if (options.isClosing) { + var ret = "[/removed]"; + var end = options.position + ret.length; + removeList.push([ + posStart !== false ? posStart : options.position, + end, + ]); + posStart = false; + return ret; + } else { + if (!posStart) { + posStart = options.position; + } + return "[removed]"; + } + } else { + return next(tag, html, options); + } + }, + remove: function (html) { + var rethtml = ""; + var lastPos = 0; + _.forEach(removeList, function (pos) { + rethtml += html.slice(lastPos, pos[0]); + lastPos = pos[1]; + }); + rethtml += html.slice(lastPos); + return rethtml; + }, + }; +} + +/** + * remove html comments + * + * @param {String} html + * @return {String} + */ +function stripCommentTag(html) { + var retHtml = ""; + var lastPos = 0; + while (lastPos < html.length) { + var i = html.indexOf("<!--", lastPos); + if (i === -1) { + retHtml += html.slice(lastPos); + break; + } + retHtml += html.slice(lastPos, i); + var j = html.indexOf("-->", i); + if (j === -1) { + break; + } + lastPos = j + 3; + } + return retHtml; +} + +/** + * remove invisible characters + * + * @param {String} html + * @return {String} + */ +function stripBlankChar(html) { + var chars = html.split(""); + chars = chars.filter(function (char) { + var c = char.charCodeAt(0); + if (c === 127) return false; + if (c <= 31) { + if (c === 10 || c === 13) return true; + return false; + } + return true; + }); + return chars.join(""); +} + +exports.whiteList = getDefaultWhiteList(); +exports.getDefaultWhiteList = getDefaultWhiteList; +exports.onTag = onTag; +exports.onIgnoreTag = onIgnoreTag; +exports.onTagAttr = onTagAttr; +exports.onIgnoreTagAttr = onIgnoreTagAttr; +exports.safeAttrValue = safeAttrValue; +exports.escapeHtml = escapeHtml; +exports.escapeQuote = escapeQuote; +exports.unescapeQuote = unescapeQuote; +exports.escapeHtmlEntities = escapeHtmlEntities; +exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities; +exports.clearNonPrintableCharacter = clearNonPrintableCharacter; +exports.friendlyAttrValue = friendlyAttrValue; +exports.escapeAttrValue = escapeAttrValue; +exports.onIgnoreTagStripAll = onIgnoreTagStripAll; +exports.StripTagBody = StripTagBody; +exports.stripCommentTag = stripCommentTag; +exports.stripBlankChar = stripBlankChar; +exports.cssFilter = defaultCSSFilter; +exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList; + +},{"./util":4,"cssfilter":8}],2:[function(require,module,exports){ +/** + * xss + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var DEFAULT = require("./default"); +var parser = require("./parser"); +var FilterXSS = require("./xss"); + +/** + * filter xss function + * + * @param {String} html + * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml } + * @return {String} + */ +function filterXSS(html, options) { + var xss = new FilterXSS(options); + return xss.process(html); +} + +exports = module.exports = filterXSS; +exports.filterXSS = filterXSS; +exports.FilterXSS = FilterXSS; + +(function () { + for (var i in DEFAULT) { + exports[i] = DEFAULT[i]; + } + for (var j in parser) { + exports[j] = parser[j]; + } +})(); + +// using `xss` on the browser, output `filterXSS` to the globals +if (typeof window !== "undefined") { + window.filterXSS = module.exports; +} + +// using `xss` on the WebWorker, output `filterXSS` to the globals +function isWorkerEnv() { + return ( + typeof self !== "undefined" && + typeof DedicatedWorkerGlobalScope !== "undefined" && + self instanceof DedicatedWorkerGlobalScope + ); +} +if (isWorkerEnv()) { + self.filterXSS = module.exports; +} + +},{"./default":1,"./parser":3,"./xss":5}],3:[function(require,module,exports){ +/** + * Simple HTML Parser + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var _ = require("./util"); + +/** + * get tag name + * + * @param {String} html e.g. '<a hef="#">' + * @return {String} + */ +function getTagName(html) { + var i = _.spaceIndex(html); + var tagName; + if (i === -1) { + tagName = html.slice(1, -1); + } else { + tagName = html.slice(1, i + 1); + } + tagName = _.trim(tagName).toLowerCase(); + if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1); + if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1); + return tagName; +} + +/** + * is close tag? + * + * @param {String} html 如:'<a hef="#">' + * @return {Boolean} + */ +function isClosing(html) { + return html.slice(0, 2) === "</"; +} + +/** + * parse input html and returns processed html + * + * @param {String} html + * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing) + * @param {Function} escapeHtml + * @return {String} + */ +function parseTag(html, onTag, escapeHtml) { + "use strict"; + + var rethtml = ""; + var lastPos = 0; + var tagStart = false; + var quoteStart = false; + var currentPos = 0; + var len = html.length; + var currentTagName = ""; + var currentHtml = ""; + + chariterator: for (currentPos = 0; currentPos < len; currentPos++) { + var c = html.charAt(currentPos); + if (tagStart === false) { + if (c === "<") { + tagStart = currentPos; + continue; + } + } else { + if (quoteStart === false) { + if (c === "<") { + rethtml += escapeHtml(html.slice(lastPos, currentPos)); + tagStart = currentPos; + lastPos = currentPos; + continue; + } + if (c === ">" || currentPos === len - 1) { + rethtml += escapeHtml(html.slice(lastPos, tagStart)); + currentHtml = html.slice(tagStart, currentPos + 1); + currentTagName = getTagName(currentHtml); + rethtml += onTag( + tagStart, + rethtml.length, + currentTagName, + currentHtml, + isClosing(currentHtml) + ); + lastPos = currentPos + 1; + tagStart = false; + continue; + } + if (c === '"' || c === "'") { + var i = 1; + var ic = html.charAt(currentPos - i); + + while (ic.trim() === "" || ic === "=") { + if (ic === "=") { + quoteStart = c; + continue chariterator; + } + ic = html.charAt(currentPos - ++i); + } + } + } else { + if (c === quoteStart) { + quoteStart = false; + continue; + } + } + } + } + if (lastPos < len) { + rethtml += escapeHtml(html.substr(lastPos)); + } + + return rethtml; +} + +var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim; + +/** + * parse input attributes and returns processed attributes + * + * @param {String} html e.g. `href="#" target="_blank"` + * @param {Function} onAttr e.g. `function (name, value)` + * @return {String} + */ +function parseAttr(html, onAttr) { + "use strict"; + + var lastPos = 0; + var lastMarkPos = 0; + var retAttrs = []; + var tmpName = false; + var len = html.length; + + function addAttr(name, value) { + name = _.trim(name); + name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase(); + if (name.length < 1) return; + var ret = onAttr(name, value || ""); + if (ret) retAttrs.push(ret); + } + + // 逐个分析字符 + for (var i = 0; i < len; i++) { + var c = html.charAt(i); + var v, j; + if (tmpName === false && c === "=") { + tmpName = html.slice(lastPos, i); + lastPos = i + 1; + lastMarkPos = html.charAt(lastPos) === '"' || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i + 1); + continue; + } + if (tmpName !== false) { + if ( + i === lastMarkPos + ) { + j = html.indexOf(c, i + 1); + if (j === -1) { + break; + } else { + v = _.trim(html.slice(lastMarkPos + 1, j)); + addAttr(tmpName, v); + tmpName = false; + i = j; + lastPos = i + 1; + continue; + } + } + } + if (/\s|\n|\t/.test(c)) { + html = html.replace(/\s|\n|\t/g, " "); + if (tmpName === false) { + j = findNextEqual(html, i); + if (j === -1) { + v = _.trim(html.slice(lastPos, i)); + addAttr(v); + tmpName = false; + lastPos = i + 1; + continue; + } else { + i = j - 1; + continue; + } + } else { + j = findBeforeEqual(html, i - 1); + if (j === -1) { + v = _.trim(html.slice(lastPos, i)); + v = stripQuoteWrap(v); + addAttr(tmpName, v); + tmpName = false; + lastPos = i + 1; + continue; + } else { + continue; + } + } + } + } + + if (lastPos < html.length) { + if (tmpName === false) { + addAttr(html.slice(lastPos)); + } else { + addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos)))); + } + } + + return _.trim(retAttrs.join(" ")); +} + +function findNextEqual(str, i) { + for (; i < str.length; i++) { + var c = str[i]; + if (c === " ") continue; + if (c === "=") return i; + return -1; + } +} + +function findNextQuotationMark(str, i) { + for (; i < str.length; i++) { + var c = str[i]; + if (c === " ") continue; + if (c === "'" || c === '"') return i; + return -1; + } +} + +function findBeforeEqual(str, i) { + for (; i > 0; i--) { + var c = str[i]; + if (c === " ") continue; + if (c === "=") return i; + return -1; + } +} + +function isQuoteWrapString(text) { + if ( + (text[0] === '"' && text[text.length - 1] === '"') || + (text[0] === "'" && text[text.length - 1] === "'") + ) { + return true; + } else { + return false; + } +} + +function stripQuoteWrap(text) { + if (isQuoteWrapString(text)) { + return text.substr(1, text.length - 2); + } else { + return text; + } +} + +exports.parseTag = parseTag; +exports.parseAttr = parseAttr; + +},{"./util":4}],4:[function(require,module,exports){ +module.exports = { + indexOf: function (arr, item) { + var i, j; + if (Array.prototype.indexOf) { + return arr.indexOf(item); + } + for (i = 0, j = arr.length; i < j; i++) { + if (arr[i] === item) { + return i; + } + } + return -1; + }, + forEach: function (arr, fn, scope) { + var i, j; + if (Array.prototype.forEach) { + return arr.forEach(fn, scope); + } + for (i = 0, j = arr.length; i < j; i++) { + fn.call(scope, arr[i], i, arr); + } + }, + trim: function (str) { + if (String.prototype.trim) { + return str.trim(); + } + return str.replace(/(^\s*)|(\s*$)/g, ""); + }, + spaceIndex: function (str) { + var reg = /\s|\n|\t/; + var match = reg.exec(str); + return match ? match.index : -1; + }, +}; + +},{}],5:[function(require,module,exports){ +/** + * filter xss + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var FilterCSS = require("cssfilter").FilterCSS; +var DEFAULT = require("./default"); +var parser = require("./parser"); +var parseTag = parser.parseTag; +var parseAttr = parser.parseAttr; +var _ = require("./util"); + +/** + * returns `true` if the input value is `undefined` or `null` + * + * @param {Object} obj + * @return {Boolean} + */ +function isNull(obj) { + return obj === undefined || obj === null; +} + +/** + * get attributes for a tag + * + * @param {String} html + * @return {Object} + * - {String} html + * - {Boolean} closing + */ +function getAttrs(html) { + var i = _.spaceIndex(html); + if (i === -1) { + return { + html: "", + closing: html[html.length - 2] === "/", + }; + } + html = _.trim(html.slice(i + 1, -1)); + var isClosing = html[html.length - 1] === "/"; + if (isClosing) html = _.trim(html.slice(0, -1)); + return { + html: html, + closing: isClosing, + }; +} + +/** + * shallow copy + * + * @param {Object} obj + * @return {Object} + */ +function shallowCopyObject(obj) { + var ret = {}; + for (var i in obj) { + ret[i] = obj[i]; + } + return ret; +} + +function keysToLowerCase(obj) { + var ret = {}; + for (var i in obj) { + if (Array.isArray(obj[i])) { + ret[i.toLowerCase()] = obj[i].map(function (item) { + return item.toLowerCase(); + }); + } else { + ret[i.toLowerCase()] = obj[i]; + } + } + return ret; +} + +/** + * FilterXSS class + * + * @param {Object} options + * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag, + * onIgnoreTagAttr, safeAttrValue, escapeHtml + * stripIgnoreTagBody, allowCommentTag, stripBlankChar + * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter` + */ +function FilterXSS(options) { + options = shallowCopyObject(options || {}); + + if (options.stripIgnoreTag) { + if (options.onIgnoreTag) { + console.error( + 'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time' + ); + } + options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll; + } + if (options.whiteList || options.allowList) { + options.whiteList = keysToLowerCase(options.whiteList || options.allowList); + } else { + options.whiteList = DEFAULT.whiteList; + } + + options.onTag = options.onTag || DEFAULT.onTag; + options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr; + options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag; + options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr; + options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue; + options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml; + this.options = options; + + if (options.css === false) { + this.cssFilter = false; + } else { + options.css = options.css || {}; + this.cssFilter = new FilterCSS(options.css); + } +} + +/** + * start process and returns result + * + * @param {String} html + * @return {String} + */ +FilterXSS.prototype.process = function (html) { + // compatible with the input + html = html || ""; + html = html.toString(); + if (!html) return ""; + + var me = this; + var options = me.options; + var whiteList = options.whiteList; + var onTag = options.onTag; + var onIgnoreTag = options.onIgnoreTag; + var onTagAttr = options.onTagAttr; + var onIgnoreTagAttr = options.onIgnoreTagAttr; + var safeAttrValue = options.safeAttrValue; + var escapeHtml = options.escapeHtml; + var cssFilter = me.cssFilter; + + // remove invisible characters + if (options.stripBlankChar) { + html = DEFAULT.stripBlankChar(html); + } + + // remove html comments + if (!options.allowCommentTag) { + html = DEFAULT.stripCommentTag(html); + } + + // if enable stripIgnoreTagBody + var stripIgnoreTagBody = false; + if (options.stripIgnoreTagBody) { + stripIgnoreTagBody = DEFAULT.StripTagBody( + options.stripIgnoreTagBody, + onIgnoreTag + ); + onIgnoreTag = stripIgnoreTagBody.onIgnoreTag; + } + + var retHtml = parseTag( + html, + function (sourcePosition, position, tag, html, isClosing) { + var info = { + sourcePosition: sourcePosition, + position: position, + isClosing: isClosing, + isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag), + }; + + // call `onTag()` + var ret = onTag(tag, html, info); + if (!isNull(ret)) return ret; + + if (info.isWhite) { + if (info.isClosing) { + return "</" + tag + ">"; + } + + var attrs = getAttrs(html); + var whiteAttrList = whiteList[tag]; + var attrsHtml = parseAttr(attrs.html, function (name, value) { + // call `onTagAttr()` + var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1; + var ret = onTagAttr(tag, name, value, isWhiteAttr); + if (!isNull(ret)) return ret; + + if (isWhiteAttr) { + // call `safeAttrValue()` + value = safeAttrValue(tag, name, value, cssFilter); + if (value) { + return name + '="' + value + '"'; + } else { + return name; + } + } else { + // call `onIgnoreTagAttr()` + ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr); + if (!isNull(ret)) return ret; + return; + } + }); + + // build new tag html + html = "<" + tag; + if (attrsHtml) html += " " + attrsHtml; + if (attrs.closing) html += " /"; + html += ">"; + return html; + } else { + // call `onIgnoreTag()` + ret = onIgnoreTag(tag, html, info); + if (!isNull(ret)) return ret; + return escapeHtml(html); + } + }, + escapeHtml + ); + + // if enable stripIgnoreTagBody + if (stripIgnoreTagBody) { + retHtml = stripIgnoreTagBody.remove(retHtml); + } + + return retHtml; +}; + +module.exports = FilterXSS; + +},{"./default":1,"./parser":3,"./util":4,"cssfilter":8}],6:[function(require,module,exports){ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var DEFAULT = require('./default'); +var parseStyle = require('./parser'); +var _ = require('./util'); + + +/** + * 返回值是否为空 + * + * @param {Object} obj + * @return {Boolean} + */ +function isNull (obj) { + return (obj === undefined || obj === null); +} + +/** + * 浅拷贝对象 + * + * @param {Object} obj + * @return {Object} + */ +function shallowCopyObject (obj) { + var ret = {}; + for (var i in obj) { + ret[i] = obj[i]; + } + return ret; +} + +/** + * 创建CSS过滤器 + * + * @param {Object} options + * - {Object} whiteList + * - {Function} onAttr + * - {Function} onIgnoreAttr + * - {Function} safeAttrValue + */ +function FilterCSS (options) { + options = shallowCopyObject(options || {}); + options.whiteList = options.whiteList || DEFAULT.whiteList; + options.onAttr = options.onAttr || DEFAULT.onAttr; + options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr; + options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue; + this.options = options; +} + +FilterCSS.prototype.process = function (css) { + // 兼容各种奇葩输入 + css = css || ''; + css = css.toString(); + if (!css) return ''; + + var me = this; + var options = me.options; + var whiteList = options.whiteList; + var onAttr = options.onAttr; + var onIgnoreAttr = options.onIgnoreAttr; + var safeAttrValue = options.safeAttrValue; + + var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) { + + var check = whiteList[name]; + var isWhite = false; + if (check === true) isWhite = check; + else if (typeof check === 'function') isWhite = check(value); + else if (check instanceof RegExp) isWhite = check.test(value); + if (isWhite !== true) isWhite = false; + + // 如果过滤后 value 为空则直接忽略 + value = safeAttrValue(name, value); + if (!value) return; + + var opts = { + position: position, + sourcePosition: sourcePosition, + source: source, + isWhite: isWhite + }; + + if (isWhite) { + + var ret = onAttr(name, value, opts); + if (isNull(ret)) { + return name + ':' + value; + } else { + return ret; + } + + } else { + + var ret = onIgnoreAttr(name, value, opts); + if (!isNull(ret)) { + return ret; + } + + } + }); + + return retCSS; +}; + + +module.exports = FilterCSS; + +},{"./default":7,"./parser":9,"./util":10}],7:[function(require,module,exports){ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +function getDefaultWhiteList () { + // 白名单值说明: + // true: 允许该属性 + // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许 + // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许 + // 除上面列出的值外均表示不允许 + var whiteList = {}; + + whiteList['align-content'] = false; // default: auto + whiteList['align-items'] = false; // default: auto + whiteList['align-self'] = false; // default: auto + whiteList['alignment-adjust'] = false; // default: auto + whiteList['alignment-baseline'] = false; // default: baseline + whiteList['all'] = false; // default: depending on individual properties + whiteList['anchor-point'] = false; // default: none + whiteList['animation'] = false; // default: depending on individual properties + whiteList['animation-delay'] = false; // default: 0 + whiteList['animation-direction'] = false; // default: normal + whiteList['animation-duration'] = false; // default: 0 + whiteList['animation-fill-mode'] = false; // default: none + whiteList['animation-iteration-count'] = false; // default: 1 + whiteList['animation-name'] = false; // default: none + whiteList['animation-play-state'] = false; // default: running + whiteList['animation-timing-function'] = false; // default: ease + whiteList['azimuth'] = false; // default: center + whiteList['backface-visibility'] = false; // default: visible + whiteList['background'] = true; // default: depending on individual properties + whiteList['background-attachment'] = true; // default: scroll + whiteList['background-clip'] = true; // default: border-box + whiteList['background-color'] = true; // default: transparent + whiteList['background-image'] = true; // default: none + whiteList['background-origin'] = true; // default: padding-box + whiteList['background-position'] = true; // default: 0% 0% + whiteList['background-repeat'] = true; // default: repeat + whiteList['background-size'] = true; // default: auto + whiteList['baseline-shift'] = false; // default: baseline + whiteList['binding'] = false; // default: none + whiteList['bleed'] = false; // default: 6pt + whiteList['bookmark-label'] = false; // default: content() + whiteList['bookmark-level'] = false; // default: none + whiteList['bookmark-state'] = false; // default: open + whiteList['border'] = true; // default: depending on individual properties + whiteList['border-bottom'] = true; // default: depending on individual properties + whiteList['border-bottom-color'] = true; // default: current color + whiteList['border-bottom-left-radius'] = true; // default: 0 + whiteList['border-bottom-right-radius'] = true; // default: 0 + whiteList['border-bottom-style'] = true; // default: none + whiteList['border-bottom-width'] = true; // default: medium + whiteList['border-collapse'] = true; // default: separate + whiteList['border-color'] = true; // default: depending on individual properties + whiteList['border-image'] = true; // default: none + whiteList['border-image-outset'] = true; // default: 0 + whiteList['border-image-repeat'] = true; // default: stretch + whiteList['border-image-slice'] = true; // default: 100% + whiteList['border-image-source'] = true; // default: none + whiteList['border-image-width'] = true; // default: 1 + whiteList['border-left'] = true; // default: depending on individual properties + whiteList['border-left-color'] = true; // default: current color + whiteList['border-left-style'] = true; // default: none + whiteList['border-left-width'] = true; // default: medium + whiteList['border-radius'] = true; // default: 0 + whiteList['border-right'] = true; // default: depending on individual properties + whiteList['border-right-color'] = true; // default: current color + whiteList['border-right-style'] = true; // default: none + whiteList['border-right-width'] = true; // default: medium + whiteList['border-spacing'] = true; // default: 0 + whiteList['border-style'] = true; // default: depending on individual properties + whiteList['border-top'] = true; // default: depending on individual properties + whiteList['border-top-color'] = true; // default: current color + whiteList['border-top-left-radius'] = true; // default: 0 + whiteList['border-top-right-radius'] = true; // default: 0 + whiteList['border-top-style'] = true; // default: none + whiteList['border-top-width'] = true; // default: medium + whiteList['border-width'] = true; // default: depending on individual properties + whiteList['bottom'] = false; // default: auto + whiteList['box-decoration-break'] = true; // default: slice + whiteList['box-shadow'] = true; // default: none + whiteList['box-sizing'] = true; // default: content-box + whiteList['box-snap'] = true; // default: none + whiteList['box-suppress'] = true; // default: show + whiteList['break-after'] = true; // default: auto + whiteList['break-before'] = true; // default: auto + whiteList['break-inside'] = true; // default: auto + whiteList['caption-side'] = false; // default: top + whiteList['chains'] = false; // default: none + whiteList['clear'] = true; // default: none + whiteList['clip'] = false; // default: auto + whiteList['clip-path'] = false; // default: none + whiteList['clip-rule'] = false; // default: nonzero + whiteList['color'] = true; // default: implementation dependent + whiteList['color-interpolation-filters'] = true; // default: auto + whiteList['column-count'] = false; // default: auto + whiteList['column-fill'] = false; // default: balance + whiteList['column-gap'] = false; // default: normal + whiteList['column-rule'] = false; // default: depending on individual properties + whiteList['column-rule-color'] = false; // default: current color + whiteList['column-rule-style'] = false; // default: medium + whiteList['column-rule-width'] = false; // default: medium + whiteList['column-span'] = false; // default: none + whiteList['column-width'] = false; // default: auto + whiteList['columns'] = false; // default: depending on individual properties + whiteList['contain'] = false; // default: none + whiteList['content'] = false; // default: normal + whiteList['counter-increment'] = false; // default: none + whiteList['counter-reset'] = false; // default: none + whiteList['counter-set'] = false; // default: none + whiteList['crop'] = false; // default: auto + whiteList['cue'] = false; // default: depending on individual properties + whiteList['cue-after'] = false; // default: none + whiteList['cue-before'] = false; // default: none + whiteList['cursor'] = false; // default: auto + whiteList['direction'] = false; // default: ltr + whiteList['display'] = true; // default: depending on individual properties + whiteList['display-inside'] = true; // default: auto + whiteList['display-list'] = true; // default: none + whiteList['display-outside'] = true; // default: inline-level + whiteList['dominant-baseline'] = false; // default: auto + whiteList['elevation'] = false; // default: level + whiteList['empty-cells'] = false; // default: show + whiteList['filter'] = false; // default: none + whiteList['flex'] = false; // default: depending on individual properties + whiteList['flex-basis'] = false; // default: auto + whiteList['flex-direction'] = false; // default: row + whiteList['flex-flow'] = false; // default: depending on individual properties + whiteList['flex-grow'] = false; // default: 0 + whiteList['flex-shrink'] = false; // default: 1 + whiteList['flex-wrap'] = false; // default: nowrap + whiteList['float'] = false; // default: none + whiteList['float-offset'] = false; // default: 0 0 + whiteList['flood-color'] = false; // default: black + whiteList['flood-opacity'] = false; // default: 1 + whiteList['flow-from'] = false; // default: none + whiteList['flow-into'] = false; // default: none + whiteList['font'] = true; // default: depending on individual properties + whiteList['font-family'] = true; // default: implementation dependent + whiteList['font-feature-settings'] = true; // default: normal + whiteList['font-kerning'] = true; // default: auto + whiteList['font-language-override'] = true; // default: normal + whiteList['font-size'] = true; // default: medium + whiteList['font-size-adjust'] = true; // default: none + whiteList['font-stretch'] = true; // default: normal + whiteList['font-style'] = true; // default: normal + whiteList['font-synthesis'] = true; // default: weight style + whiteList['font-variant'] = true; // default: normal + whiteList['font-variant-alternates'] = true; // default: normal + whiteList['font-variant-caps'] = true; // default: normal + whiteList['font-variant-east-asian'] = true; // default: normal + whiteList['font-variant-ligatures'] = true; // default: normal + whiteList['font-variant-numeric'] = true; // default: normal + whiteList['font-variant-position'] = true; // default: normal + whiteList['font-weight'] = true; // default: normal + whiteList['grid'] = false; // default: depending on individual properties + whiteList['grid-area'] = false; // default: depending on individual properties + whiteList['grid-auto-columns'] = false; // default: auto + whiteList['grid-auto-flow'] = false; // default: none + whiteList['grid-auto-rows'] = false; // default: auto + whiteList['grid-column'] = false; // default: depending on individual properties + whiteList['grid-column-end'] = false; // default: auto + whiteList['grid-column-start'] = false; // default: auto + whiteList['grid-row'] = false; // default: depending on individual properties + whiteList['grid-row-end'] = false; // default: auto + whiteList['grid-row-start'] = false; // default: auto + whiteList['grid-template'] = false; // default: depending on individual properties + whiteList['grid-template-areas'] = false; // default: none + whiteList['grid-template-columns'] = false; // default: none + whiteList['grid-template-rows'] = false; // default: none + whiteList['hanging-punctuation'] = false; // default: none + whiteList['height'] = true; // default: auto + whiteList['hyphens'] = false; // default: manual + whiteList['icon'] = false; // default: auto + whiteList['image-orientation'] = false; // default: auto + whiteList['image-resolution'] = false; // default: normal + whiteList['ime-mode'] = false; // default: auto + whiteList['initial-letters'] = false; // default: normal + whiteList['inline-box-align'] = false; // default: last + whiteList['justify-content'] = false; // default: auto + whiteList['justify-items'] = false; // default: auto + whiteList['justify-self'] = false; // default: auto + whiteList['left'] = false; // default: auto + whiteList['letter-spacing'] = true; // default: normal + whiteList['lighting-color'] = true; // default: white + whiteList['line-box-contain'] = false; // default: block inline replaced + whiteList['line-break'] = false; // default: auto + whiteList['line-grid'] = false; // default: match-parent + whiteList['line-height'] = false; // default: normal + whiteList['line-snap'] = false; // default: none + whiteList['line-stacking'] = false; // default: depending on individual properties + whiteList['line-stacking-ruby'] = false; // default: exclude-ruby + whiteList['line-stacking-shift'] = false; // default: consider-shifts + whiteList['line-stacking-strategy'] = false; // default: inline-line-height + whiteList['list-style'] = true; // default: depending on individual properties + whiteList['list-style-image'] = true; // default: none + whiteList['list-style-position'] = true; // default: outside + whiteList['list-style-type'] = true; // default: disc + whiteList['margin'] = true; // default: depending on individual properties + whiteList['margin-bottom'] = true; // default: 0 + whiteList['margin-left'] = true; // default: 0 + whiteList['margin-right'] = true; // default: 0 + whiteList['margin-top'] = true; // default: 0 + whiteList['marker-offset'] = false; // default: auto + whiteList['marker-side'] = false; // default: list-item + whiteList['marks'] = false; // default: none + whiteList['mask'] = false; // default: border-box + whiteList['mask-box'] = false; // default: see individual properties + whiteList['mask-box-outset'] = false; // default: 0 + whiteList['mask-box-repeat'] = false; // default: stretch + whiteList['mask-box-slice'] = false; // default: 0 fill + whiteList['mask-box-source'] = false; // default: none + whiteList['mask-box-width'] = false; // default: auto + whiteList['mask-clip'] = false; // default: border-box + whiteList['mask-image'] = false; // default: none + whiteList['mask-origin'] = false; // default: border-box + whiteList['mask-position'] = false; // default: center + whiteList['mask-repeat'] = false; // default: no-repeat + whiteList['mask-size'] = false; // default: border-box + whiteList['mask-source-type'] = false; // default: auto + whiteList['mask-type'] = false; // default: luminance + whiteList['max-height'] = true; // default: none + whiteList['max-lines'] = false; // default: none + whiteList['max-width'] = true; // default: none + whiteList['min-height'] = true; // default: 0 + whiteList['min-width'] = true; // default: 0 + whiteList['move-to'] = false; // default: normal + whiteList['nav-down'] = false; // default: auto + whiteList['nav-index'] = false; // default: auto + whiteList['nav-left'] = false; // default: auto + whiteList['nav-right'] = false; // default: auto + whiteList['nav-up'] = false; // default: auto + whiteList['object-fit'] = false; // default: fill + whiteList['object-position'] = false; // default: 50% 50% + whiteList['opacity'] = false; // default: 1 + whiteList['order'] = false; // default: 0 + whiteList['orphans'] = false; // default: 2 + whiteList['outline'] = false; // default: depending on individual properties + whiteList['outline-color'] = false; // default: invert + whiteList['outline-offset'] = false; // default: 0 + whiteList['outline-style'] = false; // default: none + whiteList['outline-width'] = false; // default: medium + whiteList['overflow'] = false; // default: depending on individual properties + whiteList['overflow-wrap'] = false; // default: normal + whiteList['overflow-x'] = false; // default: visible + whiteList['overflow-y'] = false; // default: visible + whiteList['padding'] = true; // default: depending on individual properties + whiteList['padding-bottom'] = true; // default: 0 + whiteList['padding-left'] = true; // default: 0 + whiteList['padding-right'] = true; // default: 0 + whiteList['padding-top'] = true; // default: 0 + whiteList['page'] = false; // default: auto + whiteList['page-break-after'] = false; // default: auto + whiteList['page-break-before'] = false; // default: auto + whiteList['page-break-inside'] = false; // default: auto + whiteList['page-policy'] = false; // default: start + whiteList['pause'] = false; // default: implementation dependent + whiteList['pause-after'] = false; // default: implementation dependent + whiteList['pause-before'] = false; // default: implementation dependent + whiteList['perspective'] = false; // default: none + whiteList['perspective-origin'] = false; // default: 50% 50% + whiteList['pitch'] = false; // default: medium + whiteList['pitch-range'] = false; // default: 50 + whiteList['play-during'] = false; // default: auto + whiteList['position'] = false; // default: static + whiteList['presentation-level'] = false; // default: 0 + whiteList['quotes'] = false; // default: text + whiteList['region-fragment'] = false; // default: auto + whiteList['resize'] = false; // default: none + whiteList['rest'] = false; // default: depending on individual properties + whiteList['rest-after'] = false; // default: none + whiteList['rest-before'] = false; // default: none + whiteList['richness'] = false; // default: 50 + whiteList['right'] = false; // default: auto + whiteList['rotation'] = false; // default: 0 + whiteList['rotation-point'] = false; // default: 50% 50% + whiteList['ruby-align'] = false; // default: auto + whiteList['ruby-merge'] = false; // default: separate + whiteList['ruby-position'] = false; // default: before + whiteList['shape-image-threshold'] = false; // default: 0.0 + whiteList['shape-outside'] = false; // default: none + whiteList['shape-margin'] = false; // default: 0 + whiteList['size'] = false; // default: auto + whiteList['speak'] = false; // default: auto + whiteList['speak-as'] = false; // default: normal + whiteList['speak-header'] = false; // default: once + whiteList['speak-numeral'] = false; // default: continuous + whiteList['speak-punctuation'] = false; // default: none + whiteList['speech-rate'] = false; // default: medium + whiteList['stress'] = false; // default: 50 + whiteList['string-set'] = false; // default: none + whiteList['tab-size'] = false; // default: 8 + whiteList['table-layout'] = false; // default: auto + whiteList['text-align'] = true; // default: start + whiteList['text-align-last'] = true; // default: auto + whiteList['text-combine-upright'] = true; // default: none + whiteList['text-decoration'] = true; // default: none + whiteList['text-decoration-color'] = true; // default: currentColor + whiteList['text-decoration-line'] = true; // default: none + whiteList['text-decoration-skip'] = true; // default: objects + whiteList['text-decoration-style'] = true; // default: solid + whiteList['text-emphasis'] = true; // default: depending on individual properties + whiteList['text-emphasis-color'] = true; // default: currentColor + whiteList['text-emphasis-position'] = true; // default: over right + whiteList['text-emphasis-style'] = true; // default: none + whiteList['text-height'] = true; // default: auto + whiteList['text-indent'] = true; // default: 0 + whiteList['text-justify'] = true; // default: auto + whiteList['text-orientation'] = true; // default: mixed + whiteList['text-overflow'] = true; // default: clip + whiteList['text-shadow'] = true; // default: none + whiteList['text-space-collapse'] = true; // default: collapse + whiteList['text-transform'] = true; // default: none + whiteList['text-underline-position'] = true; // default: auto + whiteList['text-wrap'] = true; // default: normal + whiteList['top'] = false; // default: auto + whiteList['transform'] = false; // default: none + whiteList['transform-origin'] = false; // default: 50% 50% 0 + whiteList['transform-style'] = false; // default: flat + whiteList['transition'] = false; // default: depending on individual properties + whiteList['transition-delay'] = false; // default: 0s + whiteList['transition-duration'] = false; // default: 0s + whiteList['transition-property'] = false; // default: all + whiteList['transition-timing-function'] = false; // default: ease + whiteList['unicode-bidi'] = false; // default: normal + whiteList['vertical-align'] = false; // default: baseline + whiteList['visibility'] = false; // default: visible + whiteList['voice-balance'] = false; // default: center + whiteList['voice-duration'] = false; // default: auto + whiteList['voice-family'] = false; // default: implementation dependent + whiteList['voice-pitch'] = false; // default: medium + whiteList['voice-range'] = false; // default: medium + whiteList['voice-rate'] = false; // default: normal + whiteList['voice-stress'] = false; // default: normal + whiteList['voice-volume'] = false; // default: medium + whiteList['volume'] = false; // default: medium + whiteList['white-space'] = false; // default: normal + whiteList['widows'] = false; // default: 2 + whiteList['width'] = true; // default: auto + whiteList['will-change'] = false; // default: auto + whiteList['word-break'] = true; // default: normal + whiteList['word-spacing'] = true; // default: normal + whiteList['word-wrap'] = true; // default: normal + whiteList['wrap-flow'] = false; // default: auto + whiteList['wrap-through'] = false; // default: wrap + whiteList['writing-mode'] = false; // default: horizontal-tb + whiteList['z-index'] = false; // default: auto + + return whiteList; +} + + +/** + * 匹配到白名单上的一个属性时 + * + * @param {String} name + * @param {String} value + * @param {Object} options + * @return {String} + */ +function onAttr (name, value, options) { + // do nothing +} + +/** + * 匹配到不在白名单上的一个属性时 + * + * @param {String} name + * @param {String} value + * @param {Object} options + * @return {String} + */ +function onIgnoreAttr (name, value, options) { + // do nothing +} + +var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/img; + +/** + * 过滤属性值 + * + * @param {String} name + * @param {String} value + * @return {String} + */ +function safeAttrValue(name, value) { + if (REGEXP_URL_JAVASCRIPT.test(value)) return ''; + return value; +} + + +exports.whiteList = getDefaultWhiteList(); +exports.getDefaultWhiteList = getDefaultWhiteList; +exports.onAttr = onAttr; +exports.onIgnoreAttr = onIgnoreAttr; +exports.safeAttrValue = safeAttrValue; + +},{}],8:[function(require,module,exports){ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var DEFAULT = require('./default'); +var FilterCSS = require('./css'); + + +/** + * XSS过滤 + * + * @param {String} css 要过滤的CSS代码 + * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr + * @return {String} + */ +function filterCSS (html, options) { + var xss = new FilterCSS(options); + return xss.process(html); +} + + +// 输出 +exports = module.exports = filterCSS; +exports.FilterCSS = FilterCSS; +for (var i in DEFAULT) exports[i] = DEFAULT[i]; + +// 在浏览器端使用 +if (typeof window !== 'undefined') { + window.filterCSS = module.exports; +} + +},{"./css":6,"./default":7}],9:[function(require,module,exports){ +/** + * cssfilter + * + * @author 老雷<leizongmin@gmail.com> + */ + +var _ = require('./util'); + + +/** + * 解析style + * + * @param {String} css + * @param {Function} onAttr 处理属性的函数 + * 参数格式: function (sourcePosition, position, name, value, source) + * @return {String} + */ +function parseStyle (css, onAttr) { + css = _.trimRight(css); + if (css[css.length - 1] !== ';') css += ';'; + var cssLength = css.length; + var isParenthesisOpen = false; + var lastPos = 0; + var i = 0; + var retCSS = ''; + + function addNewAttr () { + // 如果没有正常的闭合圆括号,则直接忽略当前属性 + if (!isParenthesisOpen) { + var source = _.trim(css.slice(lastPos, i)); + var j = source.indexOf(':'); + if (j !== -1) { + var name = _.trim(source.slice(0, j)); + var value = _.trim(source.slice(j + 1)); + // 必须有属性名称 + if (name) { + var ret = onAttr(lastPos, retCSS.length, name, value, source); + if (ret) retCSS += ret + '; '; + } + } + } + lastPos = i + 1; + } + + for (; i < cssLength; i++) { + var c = css[i]; + if (c === '/' && css[i + 1] === '*') { + // 备注开始 + var j = css.indexOf('*/', i + 2); + // 如果没有正常的备注结束,则后面的部分全部跳过 + if (j === -1) break; + // 直接将当前位置调到备注结尾,并且初始化状态 + i = j + 1; + lastPos = i + 1; + isParenthesisOpen = false; + } else if (c === '(') { + isParenthesisOpen = true; + } else if (c === ')') { + isParenthesisOpen = false; + } else if (c === ';') { + if (isParenthesisOpen) { + // 在圆括号里面,忽略 + } else { + addNewAttr(); + } + } else if (c === '\n') { + addNewAttr(); + } + } + + return _.trim(retCSS); +} + +module.exports = parseStyle; + +},{"./util":10}],10:[function(require,module,exports){ +module.exports = { + indexOf: function (arr, item) { + var i, j; + if (Array.prototype.indexOf) { + return arr.indexOf(item); + } + for (i = 0, j = arr.length; i < j; i++) { + if (arr[i] === item) { + return i; + } + } + return -1; + }, + forEach: function (arr, fn, scope) { + var i, j; + if (Array.prototype.forEach) { + return arr.forEach(fn, scope); + } + for (i = 0, j = arr.length; i < j; i++) { + fn.call(scope, arr[i], i, arr); + } + }, + trim: function (str) { + if (String.prototype.trim) { + return str.trim(); + } + return str.replace(/(^\s*)|(\s*$)/g, ''); + }, + trimRight: function (str) { + if (String.prototype.trimRight) { + return str.trimRight(); + } + return str.replace(/(\s*$)/g, ''); + } +}; + +},{}]},{},[2]); diff --git a/node_modules/xss/dist/xss.min.js b/node_modules/xss/dist/xss.min.js new file mode 100644 index 0000000..848bd4e --- /dev/null +++ b/node_modules/xss/dist/xss.min.js @@ -0,0 +1 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){var FilterCSS=require("cssfilter").FilterCSS;var getDefaultCSSWhiteList=require("cssfilter").getDefaultWhiteList;var _=require("./util");function getDefaultWhiteList(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var defaultCSSFilter=new FilterCSS;function onTag(tag,html,options){}function onIgnoreTag(tag,html,options){}function onTagAttr(tag,name,value){}function onIgnoreTagAttr(tag,name,value){}function escapeHtml(html){return html.replace(REGEXP_LT,"<").replace(REGEXP_GT,">")}function safeAttrValue(tag,name,value,cssFilter){value=friendlyAttrValue(value);if(name==="href"||name==="src"){value=_.trim(value);if(value==="#")return"#";if(!(value.substr(0,7)==="http://"||value.substr(0,8)==="https://"||value.substr(0,7)==="mailto:"||value.substr(0,4)==="tel:"||value.substr(0,11)==="data:image/"||value.substr(0,6)==="ftp://"||value.substr(0,2)==="./"||value.substr(0,3)==="../"||value[0]==="#"||value[0]==="/")){return""}}else if(name==="background"){REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)){return""}}else if(name==="style"){REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)){return""}REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)){REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)){return""}}if(cssFilter!==false){cssFilter=cssFilter||defaultCSSFilter;value=cssFilter.process(value)}}value=escapeAttrValue(value);return value}var REGEXP_LT=/</g;var REGEXP_GT=/>/g;var REGEXP_QUOTE=/"/g;var REGEXP_QUOTE_2=/"/g;var REGEXP_ATTR_VALUE_1=/&#([a-zA-Z0-9]*);?/gim;var REGEXP_ATTR_VALUE_COLON=/:?/gim;var REGEXP_ATTR_VALUE_NEWLINE=/&newline;?/gim;var REGEXP_DEFAULT_ON_TAG_ATTR_4=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_7=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_8=/u\s*r\s*l\s*\(.*/gi;function escapeQuote(str){return str.replace(REGEXP_QUOTE,""")}function unescapeQuote(str){return str.replace(REGEXP_QUOTE_2,'"')}function escapeHtmlEntities(str){return str.replace(REGEXP_ATTR_VALUE_1,function replaceUnicode(str,code){return code[0]==="x"||code[0]==="X"?String.fromCharCode(parseInt(code.substr(1),16)):String.fromCharCode(parseInt(code,10))})}function escapeDangerHtml5Entities(str){return str.replace(REGEXP_ATTR_VALUE_COLON,":").replace(REGEXP_ATTR_VALUE_NEWLINE," ")}function clearNonPrintableCharacter(str){var str2="";for(var i=0,len=str.length;i<len;i++){str2+=str.charCodeAt(i)<32?" ":str.charAt(i)}return _.trim(str2)}function friendlyAttrValue(str){str=unescapeQuote(str);str=escapeHtmlEntities(str);str=escapeDangerHtml5Entities(str);str=clearNonPrintableCharacter(str);return str}function escapeAttrValue(str){str=escapeQuote(str);str=escapeHtml(str);return str}function onIgnoreTagStripAll(){return""}function StripTagBody(tags,next){if(typeof next!=="function"){next=function(){}}var isRemoveAllTag=!Array.isArray(tags);function isRemoveTag(tag){if(isRemoveAllTag)return true;return _.indexOf(tags,tag)!==-1}var removeList=[];var posStart=false;return{onIgnoreTag:function(tag,html,options){if(isRemoveTag(tag)){if(options.isClosing){var ret="[/removed]";var end=options.position+ret.length;removeList.push([posStart!==false?posStart:options.position,end]);posStart=false;return ret}else{if(!posStart){posStart=options.position}return"[removed]"}}else{return next(tag,html,options)}},remove:function(html){var rethtml="";var lastPos=0;_.forEach(removeList,function(pos){rethtml+=html.slice(lastPos,pos[0]);lastPos=pos[1]});rethtml+=html.slice(lastPos);return rethtml}}}function stripCommentTag(html){var retHtml="";var lastPos=0;while(lastPos<html.length){var i=html.indexOf("\x3c!--",lastPos);if(i===-1){retHtml+=html.slice(lastPos);break}retHtml+=html.slice(lastPos,i);var j=html.indexOf("--\x3e",i);if(j===-1){break}lastPos=j+3}return retHtml}function stripBlankChar(html){var chars=html.split("");chars=chars.filter(function(char){var c=char.charCodeAt(0);if(c===127)return false;if(c<=31){if(c===10||c===13)return true;return false}return true});return chars.join("")}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onTag=onTag;exports.onIgnoreTag=onIgnoreTag;exports.onTagAttr=onTagAttr;exports.onIgnoreTagAttr=onIgnoreTagAttr;exports.safeAttrValue=safeAttrValue;exports.escapeHtml=escapeHtml;exports.escapeQuote=escapeQuote;exports.unescapeQuote=unescapeQuote;exports.escapeHtmlEntities=escapeHtmlEntities;exports.escapeDangerHtml5Entities=escapeDangerHtml5Entities;exports.clearNonPrintableCharacter=clearNonPrintableCharacter;exports.friendlyAttrValue=friendlyAttrValue;exports.escapeAttrValue=escapeAttrValue;exports.onIgnoreTagStripAll=onIgnoreTagStripAll;exports.StripTagBody=StripTagBody;exports.stripCommentTag=stripCommentTag;exports.stripBlankChar=stripBlankChar;exports.cssFilter=defaultCSSFilter;exports.getDefaultCSSWhiteList=getDefaultCSSWhiteList},{"./util":4,cssfilter:8}],2:[function(require,module,exports){var DEFAULT=require("./default");var parser=require("./parser");var FilterXSS=require("./xss");function filterXSS(html,options){var xss=new FilterXSS(options);return xss.process(html)}exports=module.exports=filterXSS;exports.filterXSS=filterXSS;exports.FilterXSS=FilterXSS;(function(){for(var i in DEFAULT){exports[i]=DEFAULT[i]}for(var j in parser){exports[j]=parser[j]}})();if(typeof window!=="undefined"){window.filterXSS=module.exports}function isWorkerEnv(){return typeof self!=="undefined"&&typeof DedicatedWorkerGlobalScope!=="undefined"&&self instanceof DedicatedWorkerGlobalScope}if(isWorkerEnv()){self.filterXSS=module.exports}},{"./default":1,"./parser":3,"./xss":5}],3:[function(require,module,exports){var _=require("./util");function getTagName(html){var i=_.spaceIndex(html);var tagName;if(i===-1){tagName=html.slice(1,-1)}else{tagName=html.slice(1,i+1)}tagName=_.trim(tagName).toLowerCase();if(tagName.slice(0,1)==="/")tagName=tagName.slice(1);if(tagName.slice(-1)==="/")tagName=tagName.slice(0,-1);return tagName}function isClosing(html){return html.slice(0,2)==="</"}function parseTag(html,onTag,escapeHtml){"use strict";var rethtml="";var lastPos=0;var tagStart=false;var quoteStart=false;var currentPos=0;var len=html.length;var currentTagName="";var currentHtml="";chariterator:for(currentPos=0;currentPos<len;currentPos++){var c=html.charAt(currentPos);if(tagStart===false){if(c==="<"){tagStart=currentPos;continue}}else{if(quoteStart===false){if(c==="<"){rethtml+=escapeHtml(html.slice(lastPos,currentPos));tagStart=currentPos;lastPos=currentPos;continue}if(c===">"||currentPos===len-1){rethtml+=escapeHtml(html.slice(lastPos,tagStart));currentHtml=html.slice(tagStart,currentPos+1);currentTagName=getTagName(currentHtml);rethtml+=onTag(tagStart,rethtml.length,currentTagName,currentHtml,isClosing(currentHtml));lastPos=currentPos+1;tagStart=false;continue}if(c==='"'||c==="'"){var i=1;var ic=html.charAt(currentPos-i);while(ic.trim()===""||ic==="="){if(ic==="="){quoteStart=c;continue chariterator}ic=html.charAt(currentPos-++i)}}}else{if(c===quoteStart){quoteStart=false;continue}}}}if(lastPos<len){rethtml+=escapeHtml(html.substr(lastPos))}return rethtml}var REGEXP_ILLEGAL_ATTR_NAME=/[^a-zA-Z0-9\\_:.-]/gim;function parseAttr(html,onAttr){"use strict";var lastPos=0;var lastMarkPos=0;var retAttrs=[];var tmpName=false;var len=html.length;function addAttr(name,value){name=_.trim(name);name=name.replace(REGEXP_ILLEGAL_ATTR_NAME,"").toLowerCase();if(name.length<1)return;var ret=onAttr(name,value||"");if(ret)retAttrs.push(ret)}for(var i=0;i<len;i++){var c=html.charAt(i);var v,j;if(tmpName===false&&c==="="){tmpName=html.slice(lastPos,i);lastPos=i+1;lastMarkPos=html.charAt(lastPos)==='"'||html.charAt(lastPos)==="'"?lastPos:findNextQuotationMark(html,i+1);continue}if(tmpName!==false){if(i===lastMarkPos){j=html.indexOf(c,i+1);if(j===-1){break}else{v=_.trim(html.slice(lastMarkPos+1,j));addAttr(tmpName,v);tmpName=false;i=j;lastPos=i+1;continue}}}if(/\s|\n|\t/.test(c)){html=html.replace(/\s|\n|\t/g," ");if(tmpName===false){j=findNextEqual(html,i);if(j===-1){v=_.trim(html.slice(lastPos,i));addAttr(v);tmpName=false;lastPos=i+1;continue}else{i=j-1;continue}}else{j=findBeforeEqual(html,i-1);if(j===-1){v=_.trim(html.slice(lastPos,i));v=stripQuoteWrap(v);addAttr(tmpName,v);tmpName=false;lastPos=i+1;continue}else{continue}}}}if(lastPos<html.length){if(tmpName===false){addAttr(html.slice(lastPos))}else{addAttr(tmpName,stripQuoteWrap(_.trim(html.slice(lastPos))))}}return _.trim(retAttrs.join(" "))}function findNextEqual(str,i){for(;i<str.length;i++){var c=str[i];if(c===" ")continue;if(c==="=")return i;return-1}}function findNextQuotationMark(str,i){for(;i<str.length;i++){var c=str[i];if(c===" ")continue;if(c==="'"||c==='"')return i;return-1}}function findBeforeEqual(str,i){for(;i>0;i--){var c=str[i];if(c===" ")continue;if(c==="=")return i;return-1}}function isQuoteWrapString(text){if(text[0]==='"'&&text[text.length-1]==='"'||text[0]==="'"&&text[text.length-1]==="'"){return true}else{return false}}function stripQuoteWrap(text){if(isQuoteWrapString(text)){return text.substr(1,text.length-2)}else{return text}}exports.parseTag=parseTag;exports.parseAttr=parseAttr},{"./util":4}],4:[function(require,module,exports){module.exports={indexOf:function(arr,item){var i,j;if(Array.prototype.indexOf){return arr.indexOf(item)}for(i=0,j=arr.length;i<j;i++){if(arr[i]===item){return i}}return-1},forEach:function(arr,fn,scope){var i,j;if(Array.prototype.forEach){return arr.forEach(fn,scope)}for(i=0,j=arr.length;i<j;i++){fn.call(scope,arr[i],i,arr)}},trim:function(str){if(String.prototype.trim){return str.trim()}return str.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(str){var reg=/\s|\n|\t/;var match=reg.exec(str);return match?match.index:-1}}},{}],5:[function(require,module,exports){var FilterCSS=require("cssfilter").FilterCSS;var DEFAULT=require("./default");var parser=require("./parser");var parseTag=parser.parseTag;var parseAttr=parser.parseAttr;var _=require("./util");function isNull(obj){return obj===undefined||obj===null}function getAttrs(html){var i=_.spaceIndex(html);if(i===-1){return{html:"",closing:html[html.length-2]==="/"}}html=_.trim(html.slice(i+1,-1));var isClosing=html[html.length-1]==="/";if(isClosing)html=_.trim(html.slice(0,-1));return{html:html,closing:isClosing}}function shallowCopyObject(obj){var ret={};for(var i in obj){ret[i]=obj[i]}return ret}function keysToLowerCase(obj){var ret={};for(var i in obj){if(Array.isArray(obj[i])){ret[i.toLowerCase()]=obj[i].map(function(item){return item.toLowerCase()})}else{ret[i.toLowerCase()]=obj[i]}}return ret}function FilterXSS(options){options=shallowCopyObject(options||{});if(options.stripIgnoreTag){if(options.onIgnoreTag){console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time')}options.onIgnoreTag=DEFAULT.onIgnoreTagStripAll}if(options.whiteList||options.allowList){options.whiteList=keysToLowerCase(options.whiteList||options.allowList)}else{options.whiteList=DEFAULT.whiteList}options.onTag=options.onTag||DEFAULT.onTag;options.onTagAttr=options.onTagAttr||DEFAULT.onTagAttr;options.onIgnoreTag=options.onIgnoreTag||DEFAULT.onIgnoreTag;options.onIgnoreTagAttr=options.onIgnoreTagAttr||DEFAULT.onIgnoreTagAttr;options.safeAttrValue=options.safeAttrValue||DEFAULT.safeAttrValue;options.escapeHtml=options.escapeHtml||DEFAULT.escapeHtml;this.options=options;if(options.css===false){this.cssFilter=false}else{options.css=options.css||{};this.cssFilter=new FilterCSS(options.css)}}FilterXSS.prototype.process=function(html){html=html||"";html=html.toString();if(!html)return"";var me=this;var options=me.options;var whiteList=options.whiteList;var onTag=options.onTag;var onIgnoreTag=options.onIgnoreTag;var onTagAttr=options.onTagAttr;var onIgnoreTagAttr=options.onIgnoreTagAttr;var safeAttrValue=options.safeAttrValue;var escapeHtml=options.escapeHtml;var cssFilter=me.cssFilter;if(options.stripBlankChar){html=DEFAULT.stripBlankChar(html)}if(!options.allowCommentTag){html=DEFAULT.stripCommentTag(html)}var stripIgnoreTagBody=false;if(options.stripIgnoreTagBody){stripIgnoreTagBody=DEFAULT.StripTagBody(options.stripIgnoreTagBody,onIgnoreTag);onIgnoreTag=stripIgnoreTagBody.onIgnoreTag}var retHtml=parseTag(html,function(sourcePosition,position,tag,html,isClosing){var info={sourcePosition:sourcePosition,position:position,isClosing:isClosing,isWhite:Object.prototype.hasOwnProperty.call(whiteList,tag)};var ret=onTag(tag,html,info);if(!isNull(ret))return ret;if(info.isWhite){if(info.isClosing){return"</"+tag+">"}var attrs=getAttrs(html);var whiteAttrList=whiteList[tag];var attrsHtml=parseAttr(attrs.html,function(name,value){var isWhiteAttr=_.indexOf(whiteAttrList,name)!==-1;var ret=onTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;if(isWhiteAttr){value=safeAttrValue(tag,name,value,cssFilter);if(value){return name+'="'+value+'"'}else{return name}}else{ret=onIgnoreTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;return}});html="<"+tag;if(attrsHtml)html+=" "+attrsHtml;if(attrs.closing)html+=" /";html+=">";return html}else{ret=onIgnoreTag(tag,html,info);if(!isNull(ret))return ret;return escapeHtml(html)}},escapeHtml);if(stripIgnoreTagBody){retHtml=stripIgnoreTagBody.remove(retHtml)}return retHtml};module.exports=FilterXSS},{"./default":1,"./parser":3,"./util":4,cssfilter:8}],6:[function(require,module,exports){var DEFAULT=require("./default");var parseStyle=require("./parser");var _=require("./util");function isNull(obj){return obj===undefined||obj===null}function shallowCopyObject(obj){var ret={};for(var i in obj){ret[i]=obj[i]}return ret}function FilterCSS(options){options=shallowCopyObject(options||{});options.whiteList=options.whiteList||DEFAULT.whiteList;options.onAttr=options.onAttr||DEFAULT.onAttr;options.onIgnoreAttr=options.onIgnoreAttr||DEFAULT.onIgnoreAttr;options.safeAttrValue=options.safeAttrValue||DEFAULT.safeAttrValue;this.options=options}FilterCSS.prototype.process=function(css){css=css||"";css=css.toString();if(!css)return"";var me=this;var options=me.options;var whiteList=options.whiteList;var onAttr=options.onAttr;var onIgnoreAttr=options.onIgnoreAttr;var safeAttrValue=options.safeAttrValue;var retCSS=parseStyle(css,function(sourcePosition,position,name,value,source){var check=whiteList[name];var isWhite=false;if(check===true)isWhite=check;else if(typeof check==="function")isWhite=check(value);else if(check instanceof RegExp)isWhite=check.test(value);if(isWhite!==true)isWhite=false;value=safeAttrValue(name,value);if(!value)return;var opts={position:position,sourcePosition:sourcePosition,source:source,isWhite:isWhite};if(isWhite){var ret=onAttr(name,value,opts);if(isNull(ret)){return name+":"+value}else{return ret}}else{var ret=onIgnoreAttr(name,value,opts);if(!isNull(ret)){return ret}}});return retCSS};module.exports=FilterCSS},{"./default":7,"./parser":9,"./util":10}],7:[function(require,module,exports){function getDefaultWhiteList(){var whiteList={};whiteList["align-content"]=false;whiteList["align-items"]=false;whiteList["align-self"]=false;whiteList["alignment-adjust"]=false;whiteList["alignment-baseline"]=false;whiteList["all"]=false;whiteList["anchor-point"]=false;whiteList["animation"]=false;whiteList["animation-delay"]=false;whiteList["animation-direction"]=false;whiteList["animation-duration"]=false;whiteList["animation-fill-mode"]=false;whiteList["animation-iteration-count"]=false;whiteList["animation-name"]=false;whiteList["animation-play-state"]=false;whiteList["animation-timing-function"]=false;whiteList["azimuth"]=false;whiteList["backface-visibility"]=false;whiteList["background"]=true;whiteList["background-attachment"]=true;whiteList["background-clip"]=true;whiteList["background-color"]=true;whiteList["background-image"]=true;whiteList["background-origin"]=true;whiteList["background-position"]=true;whiteList["background-repeat"]=true;whiteList["background-size"]=true;whiteList["baseline-shift"]=false;whiteList["binding"]=false;whiteList["bleed"]=false;whiteList["bookmark-label"]=false;whiteList["bookmark-level"]=false;whiteList["bookmark-state"]=false;whiteList["border"]=true;whiteList["border-bottom"]=true;whiteList["border-bottom-color"]=true;whiteList["border-bottom-left-radius"]=true;whiteList["border-bottom-right-radius"]=true;whiteList["border-bottom-style"]=true;whiteList["border-bottom-width"]=true;whiteList["border-collapse"]=true;whiteList["border-color"]=true;whiteList["border-image"]=true;whiteList["border-image-outset"]=true;whiteList["border-image-repeat"]=true;whiteList["border-image-slice"]=true;whiteList["border-image-source"]=true;whiteList["border-image-width"]=true;whiteList["border-left"]=true;whiteList["border-left-color"]=true;whiteList["border-left-style"]=true;whiteList["border-left-width"]=true;whiteList["border-radius"]=true;whiteList["border-right"]=true;whiteList["border-right-color"]=true;whiteList["border-right-style"]=true;whiteList["border-right-width"]=true;whiteList["border-spacing"]=true;whiteList["border-style"]=true;whiteList["border-top"]=true;whiteList["border-top-color"]=true;whiteList["border-top-left-radius"]=true;whiteList["border-top-right-radius"]=true;whiteList["border-top-style"]=true;whiteList["border-top-width"]=true;whiteList["border-width"]=true;whiteList["bottom"]=false;whiteList["box-decoration-break"]=true;whiteList["box-shadow"]=true;whiteList["box-sizing"]=true;whiteList["box-snap"]=true;whiteList["box-suppress"]=true;whiteList["break-after"]=true;whiteList["break-before"]=true;whiteList["break-inside"]=true;whiteList["caption-side"]=false;whiteList["chains"]=false;whiteList["clear"]=true;whiteList["clip"]=false;whiteList["clip-path"]=false;whiteList["clip-rule"]=false;whiteList["color"]=true;whiteList["color-interpolation-filters"]=true;whiteList["column-count"]=false;whiteList["column-fill"]=false;whiteList["column-gap"]=false;whiteList["column-rule"]=false;whiteList["column-rule-color"]=false;whiteList["column-rule-style"]=false;whiteList["column-rule-width"]=false;whiteList["column-span"]=false;whiteList["column-width"]=false;whiteList["columns"]=false;whiteList["contain"]=false;whiteList["content"]=false;whiteList["counter-increment"]=false;whiteList["counter-reset"]=false;whiteList["counter-set"]=false;whiteList["crop"]=false;whiteList["cue"]=false;whiteList["cue-after"]=false;whiteList["cue-before"]=false;whiteList["cursor"]=false;whiteList["direction"]=false;whiteList["display"]=true;whiteList["display-inside"]=true;whiteList["display-list"]=true;whiteList["display-outside"]=true;whiteList["dominant-baseline"]=false;whiteList["elevation"]=false;whiteList["empty-cells"]=false;whiteList["filter"]=false;whiteList["flex"]=false;whiteList["flex-basis"]=false;whiteList["flex-direction"]=false;whiteList["flex-flow"]=false;whiteList["flex-grow"]=false;whiteList["flex-shrink"]=false;whiteList["flex-wrap"]=false;whiteList["float"]=false;whiteList["float-offset"]=false;whiteList["flood-color"]=false;whiteList["flood-opacity"]=false;whiteList["flow-from"]=false;whiteList["flow-into"]=false;whiteList["font"]=true;whiteList["font-family"]=true;whiteList["font-feature-settings"]=true;whiteList["font-kerning"]=true;whiteList["font-language-override"]=true;whiteList["font-size"]=true;whiteList["font-size-adjust"]=true;whiteList["font-stretch"]=true;whiteList["font-style"]=true;whiteList["font-synthesis"]=true;whiteList["font-variant"]=true;whiteList["font-variant-alternates"]=true;whiteList["font-variant-caps"]=true;whiteList["font-variant-east-asian"]=true;whiteList["font-variant-ligatures"]=true;whiteList["font-variant-numeric"]=true;whiteList["font-variant-position"]=true;whiteList["font-weight"]=true;whiteList["grid"]=false;whiteList["grid-area"]=false;whiteList["grid-auto-columns"]=false;whiteList["grid-auto-flow"]=false;whiteList["grid-auto-rows"]=false;whiteList["grid-column"]=false;whiteList["grid-column-end"]=false;whiteList["grid-column-start"]=false;whiteList["grid-row"]=false;whiteList["grid-row-end"]=false;whiteList["grid-row-start"]=false;whiteList["grid-template"]=false;whiteList["grid-template-areas"]=false;whiteList["grid-template-columns"]=false;whiteList["grid-template-rows"]=false;whiteList["hanging-punctuation"]=false;whiteList["height"]=true;whiteList["hyphens"]=false;whiteList["icon"]=false;whiteList["image-orientation"]=false;whiteList["image-resolution"]=false;whiteList["ime-mode"]=false;whiteList["initial-letters"]=false;whiteList["inline-box-align"]=false;whiteList["justify-content"]=false;whiteList["justify-items"]=false;whiteList["justify-self"]=false;whiteList["left"]=false;whiteList["letter-spacing"]=true;whiteList["lighting-color"]=true;whiteList["line-box-contain"]=false;whiteList["line-break"]=false;whiteList["line-grid"]=false;whiteList["line-height"]=false;whiteList["line-snap"]=false;whiteList["line-stacking"]=false;whiteList["line-stacking-ruby"]=false;whiteList["line-stacking-shift"]=false;whiteList["line-stacking-strategy"]=false;whiteList["list-style"]=true;whiteList["list-style-image"]=true;whiteList["list-style-position"]=true;whiteList["list-style-type"]=true;whiteList["margin"]=true;whiteList["margin-bottom"]=true;whiteList["margin-left"]=true;whiteList["margin-right"]=true;whiteList["margin-top"]=true;whiteList["marker-offset"]=false;whiteList["marker-side"]=false;whiteList["marks"]=false;whiteList["mask"]=false;whiteList["mask-box"]=false;whiteList["mask-box-outset"]=false;whiteList["mask-box-repeat"]=false;whiteList["mask-box-slice"]=false;whiteList["mask-box-source"]=false;whiteList["mask-box-width"]=false;whiteList["mask-clip"]=false;whiteList["mask-image"]=false;whiteList["mask-origin"]=false;whiteList["mask-position"]=false;whiteList["mask-repeat"]=false;whiteList["mask-size"]=false;whiteList["mask-source-type"]=false;whiteList["mask-type"]=false;whiteList["max-height"]=true;whiteList["max-lines"]=false;whiteList["max-width"]=true;whiteList["min-height"]=true;whiteList["min-width"]=true;whiteList["move-to"]=false;whiteList["nav-down"]=false;whiteList["nav-index"]=false;whiteList["nav-left"]=false;whiteList["nav-right"]=false;whiteList["nav-up"]=false;whiteList["object-fit"]=false;whiteList["object-position"]=false;whiteList["opacity"]=false;whiteList["order"]=false;whiteList["orphans"]=false;whiteList["outline"]=false;whiteList["outline-color"]=false;whiteList["outline-offset"]=false;whiteList["outline-style"]=false;whiteList["outline-width"]=false;whiteList["overflow"]=false;whiteList["overflow-wrap"]=false;whiteList["overflow-x"]=false;whiteList["overflow-y"]=false;whiteList["padding"]=true;whiteList["padding-bottom"]=true;whiteList["padding-left"]=true;whiteList["padding-right"]=true;whiteList["padding-top"]=true;whiteList["page"]=false;whiteList["page-break-after"]=false;whiteList["page-break-before"]=false;whiteList["page-break-inside"]=false;whiteList["page-policy"]=false;whiteList["pause"]=false;whiteList["pause-after"]=false;whiteList["pause-before"]=false;whiteList["perspective"]=false;whiteList["perspective-origin"]=false;whiteList["pitch"]=false;whiteList["pitch-range"]=false;whiteList["play-during"]=false;whiteList["position"]=false;whiteList["presentation-level"]=false;whiteList["quotes"]=false;whiteList["region-fragment"]=false;whiteList["resize"]=false;whiteList["rest"]=false;whiteList["rest-after"]=false;whiteList["rest-before"]=false;whiteList["richness"]=false;whiteList["right"]=false;whiteList["rotation"]=false;whiteList["rotation-point"]=false;whiteList["ruby-align"]=false;whiteList["ruby-merge"]=false;whiteList["ruby-position"]=false;whiteList["shape-image-threshold"]=false;whiteList["shape-outside"]=false;whiteList["shape-margin"]=false;whiteList["size"]=false;whiteList["speak"]=false;whiteList["speak-as"]=false;whiteList["speak-header"]=false;whiteList["speak-numeral"]=false;whiteList["speak-punctuation"]=false;whiteList["speech-rate"]=false;whiteList["stress"]=false;whiteList["string-set"]=false;whiteList["tab-size"]=false;whiteList["table-layout"]=false;whiteList["text-align"]=true;whiteList["text-align-last"]=true;whiteList["text-combine-upright"]=true;whiteList["text-decoration"]=true;whiteList["text-decoration-color"]=true;whiteList["text-decoration-line"]=true;whiteList["text-decoration-skip"]=true;whiteList["text-decoration-style"]=true;whiteList["text-emphasis"]=true;whiteList["text-emphasis-color"]=true;whiteList["text-emphasis-position"]=true;whiteList["text-emphasis-style"]=true;whiteList["text-height"]=true;whiteList["text-indent"]=true;whiteList["text-justify"]=true;whiteList["text-orientation"]=true;whiteList["text-overflow"]=true;whiteList["text-shadow"]=true;whiteList["text-space-collapse"]=true;whiteList["text-transform"]=true;whiteList["text-underline-position"]=true;whiteList["text-wrap"]=true;whiteList["top"]=false;whiteList["transform"]=false;whiteList["transform-origin"]=false;whiteList["transform-style"]=false;whiteList["transition"]=false;whiteList["transition-delay"]=false;whiteList["transition-duration"]=false;whiteList["transition-property"]=false;whiteList["transition-timing-function"]=false;whiteList["unicode-bidi"]=false;whiteList["vertical-align"]=false;whiteList["visibility"]=false;whiteList["voice-balance"]=false;whiteList["voice-duration"]=false;whiteList["voice-family"]=false;whiteList["voice-pitch"]=false;whiteList["voice-range"]=false;whiteList["voice-rate"]=false;whiteList["voice-stress"]=false;whiteList["voice-volume"]=false;whiteList["volume"]=false;whiteList["white-space"]=false;whiteList["widows"]=false;whiteList["width"]=true;whiteList["will-change"]=false;whiteList["word-break"]=true;whiteList["word-spacing"]=true;whiteList["word-wrap"]=true;whiteList["wrap-flow"]=false;whiteList["wrap-through"]=false;whiteList["writing-mode"]=false;whiteList["z-index"]=false;return whiteList}function onAttr(name,value,options){}function onIgnoreAttr(name,value,options){}var REGEXP_URL_JAVASCRIPT=/javascript\s*\:/gim;function safeAttrValue(name,value){if(REGEXP_URL_JAVASCRIPT.test(value))return"";return value}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onAttr=onAttr;exports.onIgnoreAttr=onIgnoreAttr;exports.safeAttrValue=safeAttrValue},{}],8:[function(require,module,exports){var DEFAULT=require("./default");var FilterCSS=require("./css");function filterCSS(html,options){var xss=new FilterCSS(options);return xss.process(html)}exports=module.exports=filterCSS;exports.FilterCSS=FilterCSS;for(var i in DEFAULT)exports[i]=DEFAULT[i];if(typeof window!=="undefined"){window.filterCSS=module.exports}},{"./css":6,"./default":7}],9:[function(require,module,exports){var _=require("./util");function parseStyle(css,onAttr){css=_.trimRight(css);if(css[css.length-1]!==";")css+=";";var cssLength=css.length;var isParenthesisOpen=false;var lastPos=0;var i=0;var retCSS="";function addNewAttr(){if(!isParenthesisOpen){var source=_.trim(css.slice(lastPos,i));var j=source.indexOf(":");if(j!==-1){var name=_.trim(source.slice(0,j));var value=_.trim(source.slice(j+1));if(name){var ret=onAttr(lastPos,retCSS.length,name,value,source);if(ret)retCSS+=ret+"; "}}}lastPos=i+1}for(;i<cssLength;i++){var c=css[i];if(c==="/"&&css[i+1]==="*"){var j=css.indexOf("*/",i+2);if(j===-1)break;i=j+1;lastPos=i+1;isParenthesisOpen=false}else if(c==="("){isParenthesisOpen=true}else if(c===")"){isParenthesisOpen=false}else if(c===";"){if(isParenthesisOpen){}else{addNewAttr()}}else if(c==="\n"){addNewAttr()}}return _.trim(retCSS)}module.exports=parseStyle},{"./util":10}],10:[function(require,module,exports){module.exports={indexOf:function(arr,item){var i,j;if(Array.prototype.indexOf){return arr.indexOf(item)}for(i=0,j=arr.length;i<j;i++){if(arr[i]===item){return i}}return-1},forEach:function(arr,fn,scope){var i,j;if(Array.prototype.forEach){return arr.forEach(fn,scope)}for(i=0,j=arr.length;i<j;i++){fn.call(scope,arr[i],i,arr)}},trim:function(str){if(String.prototype.trim){return str.trim()}return str.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(str){if(String.prototype.trimRight){return str.trimRight()}return str.replace(/(\s*$)/g,"")}}},{}]},{},[2]); \ No newline at end of file diff --git a/node_modules/xss/lib/cli.js b/node_modules/xss/lib/cli.js new file mode 100644 index 0000000..0f3b062 --- /dev/null +++ b/node_modules/xss/lib/cli.js @@ -0,0 +1,45 @@ +/** + * command line tool + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var xss = require("./"); +var readline = require("readline"); + +var rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +console.log('Enter a blank line to do xss(), enter "@quit" to exit.\n'); + +function take(c, n) { + var ret = ""; + for (var i = 0; i < n; i++) { + ret += c; + } + return ret; +} + +function setPrompt(line) { + line = line.toString(); + rl.setPrompt("[" + line + "]" + take(" ", 5 - line.length)); + rl.prompt(); +} + +setPrompt(1); + +var html = []; +rl.on("line", function (line) { + if (line === "@quit") return process.exit(); + if (line === "") { + console.log(""); + console.log(xss(html.join("\r\n"))); + console.log(""); + html = []; + } else { + html.push(line); + } + setPrompt(html.length + 1); +}); diff --git a/node_modules/xss/lib/default.js b/node_modules/xss/lib/default.js new file mode 100644 index 0000000..6495a99 --- /dev/null +++ b/node_modules/xss/lib/default.js @@ -0,0 +1,459 @@ +/** + * default settings + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var FilterCSS = require("cssfilter").FilterCSS; +var getDefaultCSSWhiteList = require("cssfilter").getDefaultWhiteList; +var _ = require("./util"); + +function getDefaultWhiteList() { + return { + a: ["target", "href", "title"], + abbr: ["title"], + address: [], + area: ["shape", "coords", "href", "alt"], + article: [], + aside: [], + audio: [ + "autoplay", + "controls", + "crossorigin", + "loop", + "muted", + "preload", + "src", + ], + b: [], + bdi: ["dir"], + bdo: ["dir"], + big: [], + blockquote: ["cite"], + br: [], + caption: [], + center: [], + cite: [], + code: [], + col: ["align", "valign", "span", "width"], + colgroup: ["align", "valign", "span", "width"], + dd: [], + del: ["datetime"], + details: ["open"], + div: [], + dl: [], + dt: [], + em: [], + figcaption: [], + figure: [], + font: ["color", "size", "face"], + footer: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + header: [], + hr: [], + i: [], + img: ["src", "alt", "title", "width", "height"], + ins: ["datetime"], + li: [], + mark: [], + nav: [], + ol: [], + p: [], + pre: [], + s: [], + section: [], + small: [], + span: [], + sub: [], + summary: [], + sup: [], + strong: [], + strike: [], + table: ["width", "border", "align", "valign"], + tbody: ["align", "valign"], + td: ["width", "rowspan", "colspan", "align", "valign"], + tfoot: ["align", "valign"], + th: ["width", "rowspan", "colspan", "align", "valign"], + thead: ["align", "valign"], + tr: ["rowspan", "align", "valign"], + tt: [], + u: [], + ul: [], + video: [ + "autoplay", + "controls", + "crossorigin", + "loop", + "muted", + "playsinline", + "poster", + "preload", + "src", + "height", + "width", + ], + }; +} + +var defaultCSSFilter = new FilterCSS(); + +/** + * default onTag function + * + * @param {String} tag + * @param {String} html + * @param {Object} options + * @return {String} + */ +function onTag(tag, html, options) { + // do nothing +} + +/** + * default onIgnoreTag function + * + * @param {String} tag + * @param {String} html + * @param {Object} options + * @return {String} + */ +function onIgnoreTag(tag, html, options) { + // do nothing +} + +/** + * default onTagAttr function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @return {String} + */ +function onTagAttr(tag, name, value) { + // do nothing +} + +/** + * default onIgnoreTagAttr function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @return {String} + */ +function onIgnoreTagAttr(tag, name, value) { + // do nothing +} + +/** + * default escapeHtml function + * + * @param {String} html + */ +function escapeHtml(html) { + return html.replace(REGEXP_LT, "<").replace(REGEXP_GT, ">"); +} + +/** + * default safeAttrValue function + * + * @param {String} tag + * @param {String} name + * @param {String} value + * @param {Object} cssFilter + * @return {String} + */ +function safeAttrValue(tag, name, value, cssFilter) { + // unescape attribute value firstly + value = friendlyAttrValue(value); + + if (name === "href" || name === "src") { + // filter `href` and `src` attribute + // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#` + value = _.trim(value); + if (value === "#") return "#"; + if ( + !( + value.substr(0, 7) === "http://" || + value.substr(0, 8) === "https://" || + value.substr(0, 7) === "mailto:" || + value.substr(0, 4) === "tel:" || + value.substr(0, 11) === "data:image/" || + value.substr(0, 6) === "ftp://" || + value.substr(0, 2) === "./" || + value.substr(0, 3) === "../" || + value[0] === "#" || + value[0] === "/" + ) + ) { + return ""; + } + } else if (name === "background") { + // filter `background` attribute (maybe no use) + // `javascript:` + REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) { + return ""; + } + } else if (name === "style") { + // `expression()` + REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) { + return ""; + } + // `url()` + REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) { + REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0; + if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) { + return ""; + } + } + if (cssFilter !== false) { + cssFilter = cssFilter || defaultCSSFilter; + value = cssFilter.process(value); + } + } + + // escape `<>"` before returns + value = escapeAttrValue(value); + return value; +} + +// RegExp list +var REGEXP_LT = /</g; +var REGEXP_GT = />/g; +var REGEXP_QUOTE = /"/g; +var REGEXP_QUOTE_2 = /"/g; +var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim; +var REGEXP_ATTR_VALUE_COLON = /:?/gim; +var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim; +// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\/\*|\*\//gm; +var REGEXP_DEFAULT_ON_TAG_ATTR_4 = + /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi; +// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi; +// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi; +var REGEXP_DEFAULT_ON_TAG_ATTR_7 = + /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi; +var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi; + +/** + * escape double quote + * + * @param {String} str + * @return {String} str + */ +function escapeQuote(str) { + return str.replace(REGEXP_QUOTE, """); +} + +/** + * unescape double quote + * + * @param {String} str + * @return {String} str + */ +function unescapeQuote(str) { + return str.replace(REGEXP_QUOTE_2, '"'); +} + +/** + * escape html entities + * + * @param {String} str + * @return {String} + */ +function escapeHtmlEntities(str) { + return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) { + return code[0] === "x" || code[0] === "X" + ? String.fromCharCode(parseInt(code.substr(1), 16)) + : String.fromCharCode(parseInt(code, 10)); + }); +} + +/** + * escape html5 new danger entities + * + * @param {String} str + * @return {String} + */ +function escapeDangerHtml5Entities(str) { + return str + .replace(REGEXP_ATTR_VALUE_COLON, ":") + .replace(REGEXP_ATTR_VALUE_NEWLINE, " "); +} + +/** + * clear nonprintable characters + * + * @param {String} str + * @return {String} + */ +function clearNonPrintableCharacter(str) { + var str2 = ""; + for (var i = 0, len = str.length; i < len; i++) { + str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i); + } + return _.trim(str2); +} + +/** + * get friendly attribute value + * + * @param {String} str + * @return {String} + */ +function friendlyAttrValue(str) { + str = unescapeQuote(str); + str = escapeHtmlEntities(str); + str = escapeDangerHtml5Entities(str); + str = clearNonPrintableCharacter(str); + return str; +} + +/** + * unescape attribute value + * + * @param {String} str + * @return {String} + */ +function escapeAttrValue(str) { + str = escapeQuote(str); + str = escapeHtml(str); + return str; +} + +/** + * `onIgnoreTag` function for removing all the tags that are not in whitelist + */ +function onIgnoreTagStripAll() { + return ""; +} + +/** + * remove tag body + * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional) + * + * @param {array} tags + * @param {function} next + */ +function StripTagBody(tags, next) { + if (typeof next !== "function") { + next = function () {}; + } + + var isRemoveAllTag = !Array.isArray(tags); + function isRemoveTag(tag) { + if (isRemoveAllTag) return true; + return _.indexOf(tags, tag) !== -1; + } + + var removeList = []; + var posStart = false; + + return { + onIgnoreTag: function (tag, html, options) { + if (isRemoveTag(tag)) { + if (options.isClosing) { + var ret = "[/removed]"; + var end = options.position + ret.length; + removeList.push([ + posStart !== false ? posStart : options.position, + end, + ]); + posStart = false; + return ret; + } else { + if (!posStart) { + posStart = options.position; + } + return "[removed]"; + } + } else { + return next(tag, html, options); + } + }, + remove: function (html) { + var rethtml = ""; + var lastPos = 0; + _.forEach(removeList, function (pos) { + rethtml += html.slice(lastPos, pos[0]); + lastPos = pos[1]; + }); + rethtml += html.slice(lastPos); + return rethtml; + }, + }; +} + +/** + * remove html comments + * + * @param {String} html + * @return {String} + */ +function stripCommentTag(html) { + var retHtml = ""; + var lastPos = 0; + while (lastPos < html.length) { + var i = html.indexOf("<!--", lastPos); + if (i === -1) { + retHtml += html.slice(lastPos); + break; + } + retHtml += html.slice(lastPos, i); + var j = html.indexOf("-->", i); + if (j === -1) { + break; + } + lastPos = j + 3; + } + return retHtml; +} + +/** + * remove invisible characters + * + * @param {String} html + * @return {String} + */ +function stripBlankChar(html) { + var chars = html.split(""); + chars = chars.filter(function (char) { + var c = char.charCodeAt(0); + if (c === 127) return false; + if (c <= 31) { + if (c === 10 || c === 13) return true; + return false; + } + return true; + }); + return chars.join(""); +} + +exports.whiteList = getDefaultWhiteList(); +exports.getDefaultWhiteList = getDefaultWhiteList; +exports.onTag = onTag; +exports.onIgnoreTag = onIgnoreTag; +exports.onTagAttr = onTagAttr; +exports.onIgnoreTagAttr = onIgnoreTagAttr; +exports.safeAttrValue = safeAttrValue; +exports.escapeHtml = escapeHtml; +exports.escapeQuote = escapeQuote; +exports.unescapeQuote = unescapeQuote; +exports.escapeHtmlEntities = escapeHtmlEntities; +exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities; +exports.clearNonPrintableCharacter = clearNonPrintableCharacter; +exports.friendlyAttrValue = friendlyAttrValue; +exports.escapeAttrValue = escapeAttrValue; +exports.onIgnoreTagStripAll = onIgnoreTagStripAll; +exports.StripTagBody = StripTagBody; +exports.stripCommentTag = stripCommentTag; +exports.stripBlankChar = stripBlankChar; +exports.cssFilter = defaultCSSFilter; +exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList; diff --git a/node_modules/xss/lib/index.js b/node_modules/xss/lib/index.js new file mode 100644 index 0000000..1861a4d --- /dev/null +++ b/node_modules/xss/lib/index.js @@ -0,0 +1,51 @@ +/** + * xss + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var DEFAULT = require("./default"); +var parser = require("./parser"); +var FilterXSS = require("./xss"); + +/** + * filter xss function + * + * @param {String} html + * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml } + * @return {String} + */ +function filterXSS(html, options) { + var xss = new FilterXSS(options); + return xss.process(html); +} + +exports = module.exports = filterXSS; +exports.filterXSS = filterXSS; +exports.FilterXSS = FilterXSS; + +(function () { + for (var i in DEFAULT) { + exports[i] = DEFAULT[i]; + } + for (var j in parser) { + exports[j] = parser[j]; + } +})(); + +// using `xss` on the browser, output `filterXSS` to the globals +if (typeof window !== "undefined") { + window.filterXSS = module.exports; +} + +// using `xss` on the WebWorker, output `filterXSS` to the globals +function isWorkerEnv() { + return ( + typeof self !== "undefined" && + typeof DedicatedWorkerGlobalScope !== "undefined" && + self instanceof DedicatedWorkerGlobalScope + ); +} +if (isWorkerEnv()) { + self.filterXSS = module.exports; +} diff --git a/node_modules/xss/lib/parser.js b/node_modules/xss/lib/parser.js new file mode 100644 index 0000000..8d147b5 --- /dev/null +++ b/node_modules/xss/lib/parser.js @@ -0,0 +1,257 @@ +/** + * Simple HTML Parser + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var _ = require("./util"); + +/** + * get tag name + * + * @param {String} html e.g. '<a hef="#">' + * @return {String} + */ +function getTagName(html) { + var i = _.spaceIndex(html); + var tagName; + if (i === -1) { + tagName = html.slice(1, -1); + } else { + tagName = html.slice(1, i + 1); + } + tagName = _.trim(tagName).toLowerCase(); + if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1); + if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1); + return tagName; +} + +/** + * is close tag? + * + * @param {String} html 如:'<a hef="#">' + * @return {Boolean} + */ +function isClosing(html) { + return html.slice(0, 2) === "</"; +} + +/** + * parse input html and returns processed html + * + * @param {String} html + * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing) + * @param {Function} escapeHtml + * @return {String} + */ +function parseTag(html, onTag, escapeHtml) { + "use strict"; + + var rethtml = ""; + var lastPos = 0; + var tagStart = false; + var quoteStart = false; + var currentPos = 0; + var len = html.length; + var currentTagName = ""; + var currentHtml = ""; + + chariterator: for (currentPos = 0; currentPos < len; currentPos++) { + var c = html.charAt(currentPos); + if (tagStart === false) { + if (c === "<") { + tagStart = currentPos; + continue; + } + } else { + if (quoteStart === false) { + if (c === "<") { + rethtml += escapeHtml(html.slice(lastPos, currentPos)); + tagStart = currentPos; + lastPos = currentPos; + continue; + } + if (c === ">" || currentPos === len - 1) { + rethtml += escapeHtml(html.slice(lastPos, tagStart)); + currentHtml = html.slice(tagStart, currentPos + 1); + currentTagName = getTagName(currentHtml); + rethtml += onTag( + tagStart, + rethtml.length, + currentTagName, + currentHtml, + isClosing(currentHtml) + ); + lastPos = currentPos + 1; + tagStart = false; + continue; + } + if (c === '"' || c === "'") { + var i = 1; + var ic = html.charAt(currentPos - i); + + while (ic.trim() === "" || ic === "=") { + if (ic === "=") { + quoteStart = c; + continue chariterator; + } + ic = html.charAt(currentPos - ++i); + } + } + } else { + if (c === quoteStart) { + quoteStart = false; + continue; + } + } + } + } + if (lastPos < len) { + rethtml += escapeHtml(html.substr(lastPos)); + } + + return rethtml; +} + +var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim; + +/** + * parse input attributes and returns processed attributes + * + * @param {String} html e.g. `href="#" target="_blank"` + * @param {Function} onAttr e.g. `function (name, value)` + * @return {String} + */ +function parseAttr(html, onAttr) { + "use strict"; + + var lastPos = 0; + var lastMarkPos = 0; + var retAttrs = []; + var tmpName = false; + var len = html.length; + + function addAttr(name, value) { + name = _.trim(name); + name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase(); + if (name.length < 1) return; + var ret = onAttr(name, value || ""); + if (ret) retAttrs.push(ret); + } + + // 逐个分析字符 + for (var i = 0; i < len; i++) { + var c = html.charAt(i); + var v, j; + if (tmpName === false && c === "=") { + tmpName = html.slice(lastPos, i); + lastPos = i + 1; + lastMarkPos = html.charAt(lastPos) === '"' || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i + 1); + continue; + } + if (tmpName !== false) { + if ( + i === lastMarkPos + ) { + j = html.indexOf(c, i + 1); + if (j === -1) { + break; + } else { + v = _.trim(html.slice(lastMarkPos + 1, j)); + addAttr(tmpName, v); + tmpName = false; + i = j; + lastPos = i + 1; + continue; + } + } + } + if (/\s|\n|\t/.test(c)) { + html = html.replace(/\s|\n|\t/g, " "); + if (tmpName === false) { + j = findNextEqual(html, i); + if (j === -1) { + v = _.trim(html.slice(lastPos, i)); + addAttr(v); + tmpName = false; + lastPos = i + 1; + continue; + } else { + i = j - 1; + continue; + } + } else { + j = findBeforeEqual(html, i - 1); + if (j === -1) { + v = _.trim(html.slice(lastPos, i)); + v = stripQuoteWrap(v); + addAttr(tmpName, v); + tmpName = false; + lastPos = i + 1; + continue; + } else { + continue; + } + } + } + } + + if (lastPos < html.length) { + if (tmpName === false) { + addAttr(html.slice(lastPos)); + } else { + addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos)))); + } + } + + return _.trim(retAttrs.join(" ")); +} + +function findNextEqual(str, i) { + for (; i < str.length; i++) { + var c = str[i]; + if (c === " ") continue; + if (c === "=") return i; + return -1; + } +} + +function findNextQuotationMark(str, i) { + for (; i < str.length; i++) { + var c = str[i]; + if (c === " ") continue; + if (c === "'" || c === '"') return i; + return -1; + } +} + +function findBeforeEqual(str, i) { + for (; i > 0; i--) { + var c = str[i]; + if (c === " ") continue; + if (c === "=") return i; + return -1; + } +} + +function isQuoteWrapString(text) { + if ( + (text[0] === '"' && text[text.length - 1] === '"') || + (text[0] === "'" && text[text.length - 1] === "'") + ) { + return true; + } else { + return false; + } +} + +function stripQuoteWrap(text) { + if (isQuoteWrapString(text)) { + return text.substr(1, text.length - 2); + } else { + return text; + } +} + +exports.parseTag = parseTag; +exports.parseAttr = parseAttr; diff --git a/node_modules/xss/lib/util.js b/node_modules/xss/lib/util.js new file mode 100644 index 0000000..8f4b35e --- /dev/null +++ b/node_modules/xss/lib/util.js @@ -0,0 +1,34 @@ +module.exports = { + indexOf: function (arr, item) { + var i, j; + if (Array.prototype.indexOf) { + return arr.indexOf(item); + } + for (i = 0, j = arr.length; i < j; i++) { + if (arr[i] === item) { + return i; + } + } + return -1; + }, + forEach: function (arr, fn, scope) { + var i, j; + if (Array.prototype.forEach) { + return arr.forEach(fn, scope); + } + for (i = 0, j = arr.length; i < j; i++) { + fn.call(scope, arr[i], i, arr); + } + }, + trim: function (str) { + if (String.prototype.trim) { + return str.trim(); + } + return str.replace(/(^\s*)|(\s*$)/g, ""); + }, + spaceIndex: function (str) { + var reg = /\s|\n|\t/; + var match = reg.exec(str); + return match ? match.index : -1; + }, +}; diff --git a/node_modules/xss/lib/xss.js b/node_modules/xss/lib/xss.js new file mode 100644 index 0000000..ed81049 --- /dev/null +++ b/node_modules/xss/lib/xss.js @@ -0,0 +1,229 @@ +/** + * filter xss + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +var FilterCSS = require("cssfilter").FilterCSS; +var DEFAULT = require("./default"); +var parser = require("./parser"); +var parseTag = parser.parseTag; +var parseAttr = parser.parseAttr; +var _ = require("./util"); + +/** + * returns `true` if the input value is `undefined` or `null` + * + * @param {Object} obj + * @return {Boolean} + */ +function isNull(obj) { + return obj === undefined || obj === null; +} + +/** + * get attributes for a tag + * + * @param {String} html + * @return {Object} + * - {String} html + * - {Boolean} closing + */ +function getAttrs(html) { + var i = _.spaceIndex(html); + if (i === -1) { + return { + html: "", + closing: html[html.length - 2] === "/", + }; + } + html = _.trim(html.slice(i + 1, -1)); + var isClosing = html[html.length - 1] === "/"; + if (isClosing) html = _.trim(html.slice(0, -1)); + return { + html: html, + closing: isClosing, + }; +} + +/** + * shallow copy + * + * @param {Object} obj + * @return {Object} + */ +function shallowCopyObject(obj) { + var ret = {}; + for (var i in obj) { + ret[i] = obj[i]; + } + return ret; +} + +function keysToLowerCase(obj) { + var ret = {}; + for (var i in obj) { + if (Array.isArray(obj[i])) { + ret[i.toLowerCase()] = obj[i].map(function (item) { + return item.toLowerCase(); + }); + } else { + ret[i.toLowerCase()] = obj[i]; + } + } + return ret; +} + +/** + * FilterXSS class + * + * @param {Object} options + * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag, + * onIgnoreTagAttr, safeAttrValue, escapeHtml + * stripIgnoreTagBody, allowCommentTag, stripBlankChar + * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter` + */ +function FilterXSS(options) { + options = shallowCopyObject(options || {}); + + if (options.stripIgnoreTag) { + if (options.onIgnoreTag) { + console.error( + 'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time' + ); + } + options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll; + } + if (options.whiteList || options.allowList) { + options.whiteList = keysToLowerCase(options.whiteList || options.allowList); + } else { + options.whiteList = DEFAULT.whiteList; + } + + options.onTag = options.onTag || DEFAULT.onTag; + options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr; + options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag; + options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr; + options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue; + options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml; + this.options = options; + + if (options.css === false) { + this.cssFilter = false; + } else { + options.css = options.css || {}; + this.cssFilter = new FilterCSS(options.css); + } +} + +/** + * start process and returns result + * + * @param {String} html + * @return {String} + */ +FilterXSS.prototype.process = function (html) { + // compatible with the input + html = html || ""; + html = html.toString(); + if (!html) return ""; + + var me = this; + var options = me.options; + var whiteList = options.whiteList; + var onTag = options.onTag; + var onIgnoreTag = options.onIgnoreTag; + var onTagAttr = options.onTagAttr; + var onIgnoreTagAttr = options.onIgnoreTagAttr; + var safeAttrValue = options.safeAttrValue; + var escapeHtml = options.escapeHtml; + var cssFilter = me.cssFilter; + + // remove invisible characters + if (options.stripBlankChar) { + html = DEFAULT.stripBlankChar(html); + } + + // remove html comments + if (!options.allowCommentTag) { + html = DEFAULT.stripCommentTag(html); + } + + // if enable stripIgnoreTagBody + var stripIgnoreTagBody = false; + if (options.stripIgnoreTagBody) { + stripIgnoreTagBody = DEFAULT.StripTagBody( + options.stripIgnoreTagBody, + onIgnoreTag + ); + onIgnoreTag = stripIgnoreTagBody.onIgnoreTag; + } + + var retHtml = parseTag( + html, + function (sourcePosition, position, tag, html, isClosing) { + var info = { + sourcePosition: sourcePosition, + position: position, + isClosing: isClosing, + isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag), + }; + + // call `onTag()` + var ret = onTag(tag, html, info); + if (!isNull(ret)) return ret; + + if (info.isWhite) { + if (info.isClosing) { + return "</" + tag + ">"; + } + + var attrs = getAttrs(html); + var whiteAttrList = whiteList[tag]; + var attrsHtml = parseAttr(attrs.html, function (name, value) { + // call `onTagAttr()` + var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1; + var ret = onTagAttr(tag, name, value, isWhiteAttr); + if (!isNull(ret)) return ret; + + if (isWhiteAttr) { + // call `safeAttrValue()` + value = safeAttrValue(tag, name, value, cssFilter); + if (value) { + return name + '="' + value + '"'; + } else { + return name; + } + } else { + // call `onIgnoreTagAttr()` + ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr); + if (!isNull(ret)) return ret; + return; + } + }); + + // build new tag html + html = "<" + tag; + if (attrsHtml) html += " " + attrsHtml; + if (attrs.closing) html += " /"; + html += ">"; + return html; + } else { + // call `onIgnoreTag()` + ret = onIgnoreTag(tag, html, info); + if (!isNull(ret)) return ret; + return escapeHtml(html); + } + }, + escapeHtml + ); + + // if enable stripIgnoreTagBody + if (stripIgnoreTagBody) { + retHtml = stripIgnoreTagBody.remove(retHtml); + } + + return retHtml; +}; + +module.exports = FilterXSS; diff --git a/node_modules/xss/package.json b/node_modules/xss/package.json new file mode 100644 index 0000000..3201288 --- /dev/null +++ b/node_modules/xss/package.json @@ -0,0 +1,65 @@ +{ + "name": "xss", + "main": "./lib/index.js", + "typings": "./typings/xss.d.ts", + "version": "1.0.14", + "description": "Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist", + "author": "Zongmin Lei <leizongmin@gmail.com> (http://ucdok.com)", + "repository": { + "type": "git", + "url": "git://github.com/leizongmin/js-xss.git" + }, + "engines": { + "node": ">= 0.10.0" + }, + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "devDependencies": { + "browserify": "^17.0.0", + "coveralls": "^3.1.1", + "debug": "^4.3.4", + "eslint": "^8.16.0", + "mocha": "^8.4.0", + "nyc": "^15.1.0", + "uglify-js": "^3.15.5" + }, + "files": [ + "lib", + "bin/xss", + "dist", + "typings/*.d.ts" + ], + "bin": { + "xss": "./bin/xss" + }, + "scripts": { + "lint": "eslint lib/**", + "test": "export DEBUG=xss:* && mocha -t 5000", + "test-cov": "nyc --reporter=lcov mocha --exit \"test/*.js\" && nyc report", + "coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "build": "./bin/build", + "prepublish": "npm run test && npm run build" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/leizongmin/js-xss/issues" + }, + "homepage": "https://github.com/leizongmin/js-xss", + "keywords": [ + "sanitization", + "xss", + "sanitize", + "sanitisation", + "input", + "security", + "escape", + "encode", + "filter", + "validator", + "html", + "injection", + "whitelist" + ] +} diff --git a/node_modules/xss/typings/xss.d.ts b/node_modules/xss/typings/xss.d.ts new file mode 100644 index 0000000..f55d44a --- /dev/null +++ b/node_modules/xss/typings/xss.d.ts @@ -0,0 +1,203 @@ +/** + * xss + * + * @author Zongmin Lei<leizongmin@gmail.com> + */ + +declare module "xss" { + global { + function filterXSS(html: string, options?: IFilterXSSOptions): string; + + namespace XSS { + export interface IFilterXSSOptions { + allowList?: IWhiteList; + whiteList?: IWhiteList; + onTag?: OnTagHandler; + onTagAttr?: OnTagAttrHandler; + onIgnoreTag?: OnTagHandler; + onIgnoreTagAttr?: OnTagAttrHandler; + safeAttrValue?: SafeAttrValueHandler; + escapeHtml?: EscapeHandler; + stripIgnoreTag?: boolean; + stripIgnoreTagBody?: boolean | string[]; + allowCommentTag?: boolean; + stripBlankChar?: boolean; + css?: {} | boolean; + } + + interface IWhiteList extends Record<string, string[] | undefined> { + a?: string[]; + abbr?: string[]; + address?: string[]; + area?: string[]; + article?: string[]; + aside?: string[]; + audio?: string[]; + b?: string[]; + bdi?: string[]; + bdo?: string[]; + big?: string[]; + blockquote?: string[]; + br?: string[]; + caption?: string[]; + center?: string[]; + cite?: string[]; + code?: string[]; + col?: string[]; + colgroup?: string[]; + dd?: string[]; + del?: string[]; + details?: string[]; + div?: string[]; + dl?: string[]; + dt?: string[]; + em?: string[]; + figure?: string[]; + figcaption?: string[]; + font?: string[]; + footer?: string[]; + h1?: string[]; + h2?: string[]; + h3?: string[]; + h4?: string[]; + h5?: string[]; + h6?: string[]; + header?: string[]; + hr?: string[]; + i?: string[]; + img?: string[]; + ins?: string[]; + li?: string[]; + mark?: string[]; + nav?: string[]; + ol?: string[]; + p?: string[]; + pre?: string[]; + s?: string[]; + section?: string[]; + small?: string[]; + span?: string[]; + sub?: string[]; + sup?: string[]; + strong?: string[]; + strike?: string[]; + summary?: string[]; + table?: string[]; + tbody?: string[]; + td?: string[]; + tfoot?: string[]; + th?: string[]; + thead?: string[]; + tr?: string[]; + tt?: string[]; + u?: string[]; + ul?: string[]; + video?: string[]; + } + + type OnTagHandler = ( + tag: string, + html: string, + options: { + sourcePosition?: number; + position?: number; + isClosing?: boolean; + isWhite?: boolean; + } + ) => string | void; + + type OnTagAttrHandler = ( + tag: string, + name: string, + value: string, + isWhiteAttr: boolean + ) => string | void; + + type SafeAttrValueHandler = ( + tag: string, + name: string, + value: string, + cssFilter: ICSSFilter + ) => string; + + type EscapeHandler = (str: string) => string; + + interface ICSSFilter { + process(value: string): string; + } + } + } + export interface IFilterXSSOptions extends XSS.IFilterXSSOptions {} + + export interface IWhiteList extends XSS.IWhiteList {} + + export type OnTagHandler = XSS.OnTagHandler; + + export type OnTagAttrHandler = XSS.OnTagAttrHandler; + + export type SafeAttrValueHandler = XSS.SafeAttrValueHandler; + + export type EscapeHandler = XSS.EscapeHandler; + + export interface ICSSFilter extends XSS.ICSSFilter {} + + export function StripTagBody( + tags: string[], + next: () => void + ): { + onIgnoreTag( + tag: string, + html: string, + options: { + position: number; + isClosing: boolean; + } + ): string; + remove(html: string): string; + }; + + export class FilterXSS { + constructor(options?: IFilterXSSOptions); + process(html: string): string; + } + + export function filterXSS(html: string, options?: IFilterXSSOptions): string; + export function parseTag( + html: string, + onTag: ( + sourcePosition: number, + position: number, + tag: string, + html: string, + isClosing: boolean + ) => string, + escapeHtml: EscapeHandler + ): string; + export function parseAttr( + html: string, + onAttr: (name: string, value: string) => string + ): string; + export const whiteList: IWhiteList; + export function getDefaultWhiteList(): IWhiteList; + export const onTag: OnTagHandler; + export const onIgnoreTag: OnTagHandler; + export const onTagAttr: OnTagAttrHandler; + export const onIgnoreTagAttr: OnTagAttrHandler; + export const safeAttrValue: SafeAttrValueHandler; + export const escapeHtml: EscapeHandler; + export const escapeQuote: EscapeHandler; + export const unescapeQuote: EscapeHandler; + export const escapeHtmlEntities: EscapeHandler; + export const escapeDangerHtml5Entities: EscapeHandler; + export const clearNonPrintableCharacter: EscapeHandler; + export const friendlyAttrValue: EscapeHandler; + export const escapeAttrValue: EscapeHandler; + export function onIgnoreTagStripAll(): string; + export const stripCommentTag: EscapeHandler; + export const stripBlankChar: EscapeHandler; + export const cssFilter: ICSSFilter; + export function getDefaultCSSWhiteList(): ICSSFilter; + + const xss: (html: string, options?: IFilterXSSOptions) => string; + export default xss; +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2633e54 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,45 @@ +{ + "name": "PC问答", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "mavon-editor": "^3.0.1" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/mavon-editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz", + "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==", + "dependencies": { + "xss": "^1.0.10" + } + }, + "node_modules/xss": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", + "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..333f5f4 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "mavon-editor": "^3.0.1" + } +}