UNPKG

341 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.VueTemplateCompiler = {}));
5})(this, (function (exports) { 'use strict';
6
7 var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8
9 var splitRE$1 = /\r?\n/g;
10 var emptyRE = /^\s*$/;
11 var needFixRE = /^(\r?\n)*[\t\s]/;
12
13 var deIndent = function deindent (str) {
14 if (!needFixRE.test(str)) {
15 return str
16 }
17 var lines = str.split(splitRE$1);
18 var min = Infinity;
19 var type, cur, c;
20 for (var i = 0; i < lines.length; i++) {
21 var line = lines[i];
22 if (!emptyRE.test(line)) {
23 if (!type) {
24 c = line.charAt(0);
25 if (c === ' ' || c === '\t') {
26 type = c;
27 cur = count(line, type);
28 if (cur < min) {
29 min = cur;
30 }
31 } else {
32 return str
33 }
34 } else {
35 cur = count(line, type);
36 if (cur < min) {
37 min = cur;
38 }
39 }
40 }
41 }
42 return lines.map(function (line) {
43 return line.slice(min)
44 }).join('\n')
45 };
46
47 function count (line, type) {
48 var i = 0;
49 while (line.charAt(i) === type) {
50 i++;
51 }
52 return i
53 }
54
55 var emptyObject = Object.freeze({});
56 var isArray = Array.isArray;
57 // These helpers produce better VM code in JS engines due to their
58 // explicitness and function inlining.
59 function isUndef(v) {
60 return v === undefined || v === null;
61 }
62 function isDef(v) {
63 return v !== undefined && v !== null;
64 }
65 function isTrue(v) {
66 return v === true;
67 }
68 function isFalse(v) {
69 return v === false;
70 }
71 /**
72 * Check if value is primitive.
73 */
74 function isPrimitive(value) {
75 return (typeof value === 'string' ||
76 typeof value === 'number' ||
77 // $flow-disable-line
78 typeof value === 'symbol' ||
79 typeof value === 'boolean');
80 }
81 function isFunction(value) {
82 return typeof value === 'function';
83 }
84 /**
85 * Quick object check - this is primarily used to tell
86 * objects from primitive values when we know the value
87 * is a JSON-compliant type.
88 */
89 function isObject(obj) {
90 return obj !== null && typeof obj === 'object';
91 }
92 /**
93 * Get the raw type string of a value, e.g., [object Object].
94 */
95 var _toString = Object.prototype.toString;
96 function toRawType(value) {
97 return _toString.call(value).slice(8, -1);
98 }
99 /**
100 * Strict object type check. Only returns true
101 * for plain JavaScript objects.
102 */
103 function isPlainObject(obj) {
104 return _toString.call(obj) === '[object Object]';
105 }
106 /**
107 * Check if val is a valid array index.
108 */
109 function isValidArrayIndex(val) {
110 var n = parseFloat(String(val));
111 return n >= 0 && Math.floor(n) === n && isFinite(val);
112 }
113 function isPromise(val) {
114 return (isDef(val) &&
115 typeof val.then === 'function' &&
116 typeof val.catch === 'function');
117 }
118 /**
119 * Convert a value to a string that is actually rendered.
120 */
121 function toString(val) {
122 return val == null
123 ? ''
124 : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
125 ? JSON.stringify(val, replacer, 2)
126 : String(val);
127 }
128 function replacer(_key, val) {
129 // avoid circular deps from v3
130 if (val && val.__v_isRef) {
131 return val.value;
132 }
133 return val;
134 }
135 /**
136 * Convert an input value to a number for persistence.
137 * If the conversion fails, return original string.
138 */
139 function toNumber(val) {
140 var n = parseFloat(val);
141 return isNaN(n) ? val : n;
142 }
143 /**
144 * Make a map and return a function for checking if a key
145 * is in that map.
146 */
147 function makeMap(str, expectsLowerCase) {
148 var map = Object.create(null);
149 var list = str.split(',');
150 for (var i = 0; i < list.length; i++) {
151 map[list[i]] = true;
152 }
153 return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };
154 }
155 /**
156 * Check if a tag is a built-in tag.
157 */
158 var isBuiltInTag = makeMap('slot,component', true);
159 /**
160 * Check if an attribute is a reserved attribute.
161 */
162 var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
163 /**
164 * Check whether an object has the property.
165 */
166 var hasOwnProperty = Object.prototype.hasOwnProperty;
167 function hasOwn(obj, key) {
168 return hasOwnProperty.call(obj, key);
169 }
170 /**
171 * Create a cached version of a pure function.
172 */
173 function cached(fn) {
174 var cache = Object.create(null);
175 return function cachedFn(str) {
176 var hit = cache[str];
177 return hit || (cache[str] = fn(str));
178 };
179 }
180 /**
181 * Camelize a hyphen-delimited string.
182 */
183 var camelizeRE = /-(\w)/g;
184 var camelize = cached(function (str) {
185 return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });
186 });
187 /**
188 * Capitalize a string.
189 */
190 var capitalize = cached(function (str) {
191 return str.charAt(0).toUpperCase() + str.slice(1);
192 });
193 /**
194 * Hyphenate a camelCase string.
195 */
196 var hyphenateRE = /\B([A-Z])/g;
197 var hyphenate = cached(function (str) {
198 return str.replace(hyphenateRE, '-$1').toLowerCase();
199 });
200 /**
201 * Mix properties into target object.
202 */
203 function extend(to, _from) {
204 for (var key in _from) {
205 to[key] = _from[key];
206 }
207 return to;
208 }
209 /**
210 * Merge an Array of Objects into a single Object.
211 */
212 function toObject(arr) {
213 var res = {};
214 for (var i = 0; i < arr.length; i++) {
215 if (arr[i]) {
216 extend(res, arr[i]);
217 }
218 }
219 return res;
220 }
221 /* eslint-disable no-unused-vars */
222 /**
223 * Perform no operation.
224 * Stubbing args to make Flow happy without leaving useless transpiled code
225 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
226 */
227 function noop(a, b, c) { }
228 /**
229 * Always return false.
230 */
231 var no = function (a, b, c) { return false; };
232 /* eslint-enable no-unused-vars */
233 /**
234 * Return the same value.
235 */
236 var identity = function (_) { return _; };
237 /**
238 * Generate a string containing static keys from compiler modules.
239 */
240 function genStaticKeys$1(modules) {
241 return modules
242 .reduce(function (keys, m) { return keys.concat(m.staticKeys || []); }, [])
243 .join(',');
244 }
245 /**
246 * Check if two values are loosely equal - that is,
247 * if they are plain objects, do they have the same shape?
248 */
249 function looseEqual(a, b) {
250 if (a === b)
251 return true;
252 var isObjectA = isObject(a);
253 var isObjectB = isObject(b);
254 if (isObjectA && isObjectB) {
255 try {
256 var isArrayA = Array.isArray(a);
257 var isArrayB = Array.isArray(b);
258 if (isArrayA && isArrayB) {
259 return (a.length === b.length &&
260 a.every(function (e, i) {
261 return looseEqual(e, b[i]);
262 }));
263 }
264 else if (a instanceof Date && b instanceof Date) {
265 return a.getTime() === b.getTime();
266 }
267 else if (!isArrayA && !isArrayB) {
268 var keysA = Object.keys(a);
269 var keysB = Object.keys(b);
270 return (keysA.length === keysB.length &&
271 keysA.every(function (key) {
272 return looseEqual(a[key], b[key]);
273 }));
274 }
275 else {
276 /* istanbul ignore next */
277 return false;
278 }
279 }
280 catch (e) {
281 /* istanbul ignore next */
282 return false;
283 }
284 }
285 else if (!isObjectA && !isObjectB) {
286 return String(a) === String(b);
287 }
288 else {
289 return false;
290 }
291 }
292 /**
293 * Return the first index at which a loosely equal value can be
294 * found in the array (if value is a plain object, the array must
295 * contain an object of the same shape), or -1 if it is not present.
296 */
297 function looseIndexOf(arr, val) {
298 for (var i = 0; i < arr.length; i++) {
299 if (looseEqual(arr[i], val))
300 return i;
301 }
302 return -1;
303 }
304 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
305 function hasChanged(x, y) {
306 if (x === y) {
307 return x === 0 && 1 / x !== 1 / y;
308 }
309 else {
310 return x === x || y === y;
311 }
312 }
313
314 var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
315 'link,meta,param,source,track,wbr');
316 // Elements that you can, intentionally, leave open
317 // (and which close themselves)
318 var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');
319 // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
320 // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
321 var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
322 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
323 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
324 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
325 'title,tr,track');
326
327 /**
328 * unicode letters used for parsing html tags, component names and property paths.
329 * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
330 * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
331 */
332 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/;
333 /**
334 * Define a property.
335 */
336 function def(obj, key, val, enumerable) {
337 Object.defineProperty(obj, key, {
338 value: val,
339 enumerable: !!enumerable,
340 writable: true,
341 configurable: true
342 });
343 }
344
345 /**
346 * Not type-checking this file because it's mostly vendor code.
347 */
348 // Regular Expressions for parsing tags and attributes
349 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
350 var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
351 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(unicodeRegExp.source, "]*");
352 var qnameCapture = "((?:".concat(ncname, "\\:)?").concat(ncname, ")");
353 var startTagOpen = new RegExp("^<".concat(qnameCapture));
354 var startTagClose = /^\s*(\/?)>/;
355 var endTag = new RegExp("^<\\/".concat(qnameCapture, "[^>]*>"));
356 var doctype = /^<!DOCTYPE [^>]+>/i;
357 // #7298: escape - to avoid being passed as HTML comment when inlined in page
358 var comment = /^<!\--/;
359 var conditionalComment = /^<!\[/;
360 // Special Elements (can contain anything)
361 var isPlainTextElement = makeMap('script,style,textarea', true);
362 var reCache = {};
363 var decodingMap = {
364 '&lt;': '<',
365 '&gt;': '>',
366 '&quot;': '"',
367 '&amp;': '&',
368 '&#10;': '\n',
369 '&#9;': '\t',
370 '&#39;': "'"
371 };
372 var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;
373 var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;
374 // #5992
375 var isIgnoreNewlineTag = makeMap('pre,textarea', true);
376 var shouldIgnoreFirstNewline = function (tag, html) {
377 return tag && isIgnoreNewlineTag(tag) && html[0] === '\n';
378 };
379 function decodeAttr(value, shouldDecodeNewlines) {
380 var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
381 return value.replace(re, function (match) { return decodingMap[match]; });
382 }
383 function parseHTML(html, options) {
384 var stack = [];
385 var expectHTML = options.expectHTML;
386 var isUnaryTag = options.isUnaryTag || no;
387 var canBeLeftOpenTag = options.canBeLeftOpenTag || no;
388 var index = 0;
389 var last, lastTag;
390 var _loop_1 = function () {
391 last = html;
392 // Make sure we're not in a plaintext content element like script/style
393 if (!lastTag || !isPlainTextElement(lastTag)) {
394 var textEnd = html.indexOf('<');
395 if (textEnd === 0) {
396 // Comment:
397 if (comment.test(html)) {
398 var commentEnd = html.indexOf('-->');
399 if (commentEnd >= 0) {
400 if (options.shouldKeepComment && options.comment) {
401 options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);
402 }
403 advance(commentEnd + 3);
404 return "continue";
405 }
406 }
407 // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
408 if (conditionalComment.test(html)) {
409 var conditionalEnd = html.indexOf(']>');
410 if (conditionalEnd >= 0) {
411 advance(conditionalEnd + 2);
412 return "continue";
413 }
414 }
415 // Doctype:
416 var doctypeMatch = html.match(doctype);
417 if (doctypeMatch) {
418 advance(doctypeMatch[0].length);
419 return "continue";
420 }
421 // End tag:
422 var endTagMatch = html.match(endTag);
423 if (endTagMatch) {
424 var curIndex = index;
425 advance(endTagMatch[0].length);
426 parseEndTag(endTagMatch[1], curIndex, index);
427 return "continue";
428 }
429 // Start tag:
430 var startTagMatch = parseStartTag();
431 if (startTagMatch) {
432 handleStartTag(startTagMatch);
433 if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
434 advance(1);
435 }
436 return "continue";
437 }
438 }
439 var text = void 0, rest = void 0, next = void 0;
440 if (textEnd >= 0) {
441 rest = html.slice(textEnd);
442 while (!endTag.test(rest) &&
443 !startTagOpen.test(rest) &&
444 !comment.test(rest) &&
445 !conditionalComment.test(rest)) {
446 // < in plain text, be forgiving and treat it as text
447 next = rest.indexOf('<', 1);
448 if (next < 0)
449 break;
450 textEnd += next;
451 rest = html.slice(textEnd);
452 }
453 text = html.substring(0, textEnd);
454 }
455 if (textEnd < 0) {
456 text = html;
457 }
458 if (text) {
459 advance(text.length);
460 }
461 if (options.chars && text) {
462 options.chars(text, index - text.length, index);
463 }
464 }
465 else {
466 var endTagLength_1 = 0;
467 var stackedTag_1 = lastTag.toLowerCase();
468 var reStackedTag = reCache[stackedTag_1] ||
469 (reCache[stackedTag_1] = new RegExp('([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i'));
470 var rest = html.replace(reStackedTag, function (all, text, endTag) {
471 endTagLength_1 = endTag.length;
472 if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') {
473 text = text
474 .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
475 .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
476 }
477 if (shouldIgnoreFirstNewline(stackedTag_1, text)) {
478 text = text.slice(1);
479 }
480 if (options.chars) {
481 options.chars(text);
482 }
483 return '';
484 });
485 index += html.length - rest.length;
486 html = rest;
487 parseEndTag(stackedTag_1, index - endTagLength_1, index);
488 }
489 if (html === last) {
490 options.chars && options.chars(html);
491 if (!stack.length && options.warn) {
492 options.warn("Mal-formatted tag at end of template: \"".concat(html, "\""), {
493 start: index + html.length
494 });
495 }
496 return "break";
497 }
498 };
499 while (html) {
500 var state_1 = _loop_1();
501 if (state_1 === "break")
502 break;
503 }
504 // Clean up any remaining tags
505 parseEndTag();
506 function advance(n) {
507 index += n;
508 html = html.substring(n);
509 }
510 function parseStartTag() {
511 var start = html.match(startTagOpen);
512 if (start) {
513 var match = {
514 tagName: start[1],
515 attrs: [],
516 start: index
517 };
518 advance(start[0].length);
519 var end = void 0, attr = void 0;
520 while (!(end = html.match(startTagClose)) &&
521 (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
522 attr.start = index;
523 advance(attr[0].length);
524 attr.end = index;
525 match.attrs.push(attr);
526 }
527 if (end) {
528 match.unarySlash = end[1];
529 advance(end[0].length);
530 match.end = index;
531 return match;
532 }
533 }
534 }
535 function handleStartTag(match) {
536 var tagName = match.tagName;
537 var unarySlash = match.unarySlash;
538 if (expectHTML) {
539 if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
540 parseEndTag(lastTag);
541 }
542 if (canBeLeftOpenTag(tagName) && lastTag === tagName) {
543 parseEndTag(tagName);
544 }
545 }
546 var unary = isUnaryTag(tagName) || !!unarySlash;
547 var l = match.attrs.length;
548 var attrs = new Array(l);
549 for (var i = 0; i < l; i++) {
550 var args = match.attrs[i];
551 var value = args[3] || args[4] || args[5] || '';
552 var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
553 ? options.shouldDecodeNewlinesForHref
554 : options.shouldDecodeNewlines;
555 attrs[i] = {
556 name: args[1],
557 value: decodeAttr(value, shouldDecodeNewlines)
558 };
559 if (options.outputSourceRange) {
560 attrs[i].start = args.start + args[0].match(/^\s*/).length;
561 attrs[i].end = args.end;
562 }
563 }
564 if (!unary) {
565 stack.push({
566 tag: tagName,
567 lowerCasedTag: tagName.toLowerCase(),
568 attrs: attrs,
569 start: match.start,
570 end: match.end
571 });
572 lastTag = tagName;
573 }
574 if (options.start) {
575 options.start(tagName, attrs, unary, match.start, match.end);
576 }
577 }
578 function parseEndTag(tagName, start, end) {
579 var pos, lowerCasedTagName;
580 if (start == null)
581 start = index;
582 if (end == null)
583 end = index;
584 // Find the closest opened tag of the same type
585 if (tagName) {
586 lowerCasedTagName = tagName.toLowerCase();
587 for (pos = stack.length - 1; pos >= 0; pos--) {
588 if (stack[pos].lowerCasedTag === lowerCasedTagName) {
589 break;
590 }
591 }
592 }
593 else {
594 // If no tag name is provided, clean shop
595 pos = 0;
596 }
597 if (pos >= 0) {
598 // Close all the open elements, up the stack
599 for (var i = stack.length - 1; i >= pos; i--) {
600 if ((i > pos || !tagName) && options.warn) {
601 options.warn("tag <".concat(stack[i].tag, "> has no matching end tag."), {
602 start: stack[i].start,
603 end: stack[i].end
604 });
605 }
606 if (options.end) {
607 options.end(stack[i].tag, start, end);
608 }
609 }
610 // Remove the open elements from the stack
611 stack.length = pos;
612 lastTag = pos && stack[pos - 1].tag;
613 }
614 else if (lowerCasedTagName === 'br') {
615 if (options.start) {
616 options.start(tagName, [], true, start, end);
617 }
618 }
619 else if (lowerCasedTagName === 'p') {
620 if (options.start) {
621 options.start(tagName, [], false, start, end);
622 }
623 if (options.end) {
624 options.end(tagName, start, end);
625 }
626 }
627 }
628 }
629
630 var DEFAULT_FILENAME = 'anonymous.vue';
631 var splitRE = /\r?\n/g;
632 var replaceRE = /./g;
633 var isSpecialTag = makeMap('script,style,template', true);
634 /**
635 * Parse a single-file component (*.vue) file into an SFC Descriptor Object.
636 */
637 function parseComponent(source, options) {
638 if (options === void 0) { options = {}; }
639 var sfc = {
640 source: source,
641 filename: DEFAULT_FILENAME,
642 template: null,
643 script: null,
644 scriptSetup: null,
645 styles: [],
646 customBlocks: [],
647 cssVars: [],
648 errors: [],
649 shouldForceReload: null // attached in parse() by compiler-sfc
650 };
651 var depth = 0;
652 var currentBlock = null;
653 var warn = function (msg) {
654 sfc.errors.push(msg);
655 };
656 if (options.outputSourceRange) {
657 warn = function (msg, range) {
658 var data = { msg: msg };
659 if (range.start != null) {
660 data.start = range.start;
661 }
662 if (range.end != null) {
663 data.end = range.end;
664 }
665 sfc.errors.push(data);
666 };
667 }
668 function start(tag, attrs, unary, start, end) {
669 if (depth === 0) {
670 currentBlock = {
671 type: tag,
672 content: '',
673 start: end,
674 end: 0,
675 attrs: attrs.reduce(function (cumulated, _a) {
676 var name = _a.name, value = _a.value;
677 cumulated[name] = value || true;
678 return cumulated;
679 }, {})
680 };
681 if (typeof currentBlock.attrs.src === 'string') {
682 currentBlock.src = currentBlock.attrs.src;
683 }
684 if (isSpecialTag(tag)) {
685 checkAttrs(currentBlock, attrs);
686 if (tag === 'script') {
687 var block = currentBlock;
688 if (block.attrs.setup) {
689 block.setup = currentBlock.attrs.setup;
690 sfc.scriptSetup = block;
691 }
692 else {
693 sfc.script = block;
694 }
695 }
696 else if (tag === 'style') {
697 sfc.styles.push(currentBlock);
698 }
699 else {
700 sfc[tag] = currentBlock;
701 }
702 }
703 else {
704 // custom blocks
705 sfc.customBlocks.push(currentBlock);
706 }
707 }
708 if (!unary) {
709 depth++;
710 }
711 }
712 function checkAttrs(block, attrs) {
713 for (var i = 0; i < attrs.length; i++) {
714 var attr = attrs[i];
715 if (attr.name === 'lang') {
716 block.lang = attr.value;
717 }
718 if (attr.name === 'scoped') {
719 block.scoped = true;
720 }
721 if (attr.name === 'module') {
722 block.module = attr.value || true;
723 }
724 }
725 }
726 function end(tag, start) {
727 if (depth === 1 && currentBlock) {
728 currentBlock.end = start;
729 var text = source.slice(currentBlock.start, currentBlock.end);
730 if (options.deindent === true ||
731 // by default, deindent unless it's script with default lang or (j/t)sx?
732 (options.deindent !== false &&
733 !(currentBlock.type === 'script' &&
734 (!currentBlock.lang || /^(j|t)sx?$/.test(currentBlock.lang))))) {
735 text = deIndent(text);
736 }
737 // pad content so that linters and pre-processors can output correct
738 // line numbers in errors and warnings
739 if (currentBlock.type !== 'template' && options.pad) {
740 text = padContent(currentBlock, options.pad) + text;
741 }
742 currentBlock.content = text;
743 currentBlock = null;
744 }
745 depth--;
746 }
747 function padContent(block, pad) {
748 if (pad === 'space') {
749 return source.slice(0, block.start).replace(replaceRE, ' ');
750 }
751 else {
752 var offset = source.slice(0, block.start).split(splitRE).length;
753 var padChar = block.type === 'script' && !block.lang ? '//\n' : '\n';
754 return Array(offset).join(padChar);
755 }
756 }
757 parseHTML(source, {
758 warn: warn,
759 start: start,
760 end: end,
761 outputSourceRange: options.outputSourceRange
762 });
763 return sfc;
764 }
765
766 // can we use __proto__?
767 var hasProto = '__proto__' in {};
768 // Browser environment sniffing
769 var inBrowser = typeof window !== 'undefined';
770 var UA = inBrowser && window.navigator.userAgent.toLowerCase();
771 var isIE = UA && /msie|trident/.test(UA);
772 UA && UA.indexOf('msie 9.0') > 0;
773 var isEdge = UA && UA.indexOf('edge/') > 0;
774 UA && UA.indexOf('android') > 0;
775 UA && /iphone|ipad|ipod|ios/.test(UA);
776 UA && /chrome\/\d+/.test(UA) && !isEdge;
777 UA && /phantomjs/.test(UA);
778 UA && UA.match(/firefox\/(\d+)/);
779 // Firefox has a "watch" function on Object.prototype...
780 // @ts-expect-error firebox support
781 var nativeWatch = {}.watch;
782 var supportsPassive = false;
783 if (inBrowser) {
784 try {
785 var opts = {};
786 Object.defineProperty(opts, 'passive', {
787 get: function () {
788 /* istanbul ignore next */
789 supportsPassive = true;
790 }
791 }); // https://github.com/facebook/flow/issues/285
792 window.addEventListener('test-passive', null, opts);
793 }
794 catch (e) { }
795 }
796 // this needs to be lazy-evaled because vue may be required before
797 // vue-server-renderer can set VUE_ENV
798 var _isServer;
799 var isServerRendering = function () {
800 if (_isServer === undefined) {
801 /* istanbul ignore if */
802 if (!inBrowser && typeof global !== 'undefined') {
803 // detect presence of vue-server-renderer and avoid
804 // Webpack shimming the process
805 _isServer =
806 global['process'] && global['process'].env.VUE_ENV === 'server';
807 }
808 else {
809 _isServer = false;
810 }
811 }
812 return _isServer;
813 };
814 /* istanbul ignore next */
815 function isNative(Ctor) {
816 return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
817 }
818 var hasSymbol = typeof Symbol !== 'undefined' &&
819 isNative(Symbol) &&
820 typeof Reflect !== 'undefined' &&
821 isNative(Reflect.ownKeys);
822 var _Set; // $flow-disable-line
823 /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {
824 // use native Set when available.
825 _Set = Set;
826 }
827 else {
828 // a non-standard Set polyfill that only works with primitive keys.
829 _Set = /** @class */ (function () {
830 function Set() {
831 this.set = Object.create(null);
832 }
833 Set.prototype.has = function (key) {
834 return this.set[key] === true;
835 };
836 Set.prototype.add = function (key) {
837 this.set[key] = true;
838 };
839 Set.prototype.clear = function () {
840 this.set = Object.create(null);
841 };
842 return Set;
843 }());
844 }
845
846 var ASSET_TYPES = ['component', 'directive', 'filter'];
847 var LIFECYCLE_HOOKS = [
848 'beforeCreate',
849 'created',
850 'beforeMount',
851 'mounted',
852 'beforeUpdate',
853 'updated',
854 'beforeDestroy',
855 'destroyed',
856 'activated',
857 'deactivated',
858 'errorCaptured',
859 'serverPrefetch',
860 'renderTracked',
861 'renderTriggered'
862 ];
863
864 var config = {
865 /**
866 * Option merge strategies (used in core/util/options)
867 */
868 // $flow-disable-line
869 optionMergeStrategies: Object.create(null),
870 /**
871 * Whether to suppress warnings.
872 */
873 silent: false,
874 /**
875 * Show production mode tip message on boot?
876 */
877 productionTip: true,
878 /**
879 * Whether to enable devtools
880 */
881 devtools: true,
882 /**
883 * Whether to record perf
884 */
885 performance: false,
886 /**
887 * Error handler for watcher errors
888 */
889 errorHandler: null,
890 /**
891 * Warn handler for watcher warns
892 */
893 warnHandler: null,
894 /**
895 * Ignore certain custom elements
896 */
897 ignoredElements: [],
898 /**
899 * Custom user key aliases for v-on
900 */
901 // $flow-disable-line
902 keyCodes: Object.create(null),
903 /**
904 * Check if a tag is reserved so that it cannot be registered as a
905 * component. This is platform-dependent and may be overwritten.
906 */
907 isReservedTag: no,
908 /**
909 * Check if an attribute is reserved so that it cannot be used as a component
910 * prop. This is platform-dependent and may be overwritten.
911 */
912 isReservedAttr: no,
913 /**
914 * Check if a tag is an unknown element.
915 * Platform-dependent.
916 */
917 isUnknownElement: no,
918 /**
919 * Get the namespace of an element
920 */
921 getTagNamespace: noop,
922 /**
923 * Parse the real tag name for the specific platform.
924 */
925 parsePlatformTagName: identity,
926 /**
927 * Check if an attribute must be bound using property, e.g. value
928 * Platform-dependent.
929 */
930 mustUseProp: no,
931 /**
932 * Perform updates asynchronously. Intended to be used by Vue Test Utils
933 * This will significantly reduce performance if set to false.
934 */
935 async: true,
936 /**
937 * Exposed for legacy reasons
938 */
939 _lifecycleHooks: LIFECYCLE_HOOKS
940 };
941
942 var currentInstance = null;
943 /**
944 * @internal
945 */
946 function setCurrentInstance(vm) {
947 if (vm === void 0) { vm = null; }
948 if (!vm)
949 currentInstance && currentInstance._scope.off();
950 currentInstance = vm;
951 vm && vm._scope.on();
952 }
953
954 /**
955 * @internal
956 */
957 var VNode = /** @class */ (function () {
958 function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
959 this.tag = tag;
960 this.data = data;
961 this.children = children;
962 this.text = text;
963 this.elm = elm;
964 this.ns = undefined;
965 this.context = context;
966 this.fnContext = undefined;
967 this.fnOptions = undefined;
968 this.fnScopeId = undefined;
969 this.key = data && data.key;
970 this.componentOptions = componentOptions;
971 this.componentInstance = undefined;
972 this.parent = undefined;
973 this.raw = false;
974 this.isStatic = false;
975 this.isRootInsert = true;
976 this.isComment = false;
977 this.isCloned = false;
978 this.isOnce = false;
979 this.asyncFactory = asyncFactory;
980 this.asyncMeta = undefined;
981 this.isAsyncPlaceholder = false;
982 }
983 Object.defineProperty(VNode.prototype, "child", {
984 // DEPRECATED: alias for componentInstance for backwards compat.
985 /* istanbul ignore next */
986 get: function () {
987 return this.componentInstance;
988 },
989 enumerable: false,
990 configurable: true
991 });
992 return VNode;
993 }());
994 var createEmptyVNode = function (text) {
995 if (text === void 0) { text = ''; }
996 var node = new VNode();
997 node.text = text;
998 node.isComment = true;
999 return node;
1000 };
1001 function createTextVNode(val) {
1002 return new VNode(undefined, undefined, undefined, String(val));
1003 }
1004 // optimized shallow clone
1005 // used for static nodes and slot nodes because they may be reused across
1006 // multiple renders, cloning them avoids errors when DOM manipulations rely
1007 // on their elm reference.
1008 function cloneVNode(vnode) {
1009 var cloned = new VNode(vnode.tag, vnode.data,
1010 // #7975
1011 // clone children array to avoid mutating original in case of cloning
1012 // a child.
1013 vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
1014 cloned.ns = vnode.ns;
1015 cloned.isStatic = vnode.isStatic;
1016 cloned.key = vnode.key;
1017 cloned.isComment = vnode.isComment;
1018 cloned.fnContext = vnode.fnContext;
1019 cloned.fnOptions = vnode.fnOptions;
1020 cloned.fnScopeId = vnode.fnScopeId;
1021 cloned.asyncMeta = vnode.asyncMeta;
1022 cloned.isCloned = true;
1023 return cloned;
1024 }
1025
1026 /* not type checking this file because flow doesn't play well with Proxy */
1027 {
1028 makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +
1029 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
1030 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +
1031 'require' // for Webpack/Browserify
1032 );
1033 var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);
1034 if (hasProxy_1) {
1035 var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
1036 config.keyCodes = new Proxy(config.keyCodes, {
1037 set: function (target, key, value) {
1038 if (isBuiltInModifier_1(key)) {
1039 warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key));
1040 return false;
1041 }
1042 else {
1043 target[key] = value;
1044 return true;
1045 }
1046 }
1047 });
1048 }
1049 }
1050
1051 /******************************************************************************
1052 Copyright (c) Microsoft Corporation.
1053
1054 Permission to use, copy, modify, and/or distribute this software for any
1055 purpose with or without fee is hereby granted.
1056
1057 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1058 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1059 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1060 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1061 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1062 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1063 PERFORMANCE OF THIS SOFTWARE.
1064 ***************************************************************************** */
1065
1066 var __assign = function() {
1067 __assign = Object.assign || function __assign(t) {
1068 for (var s, i = 1, n = arguments.length; i < n; i++) {
1069 s = arguments[i];
1070 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1071 }
1072 return t;
1073 };
1074 return __assign.apply(this, arguments);
1075 };
1076
1077 typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1078 var e = new Error(message);
1079 return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1080 };
1081
1082 var uid = 0;
1083 /**
1084 * A dep is an observable that can have multiple
1085 * directives subscribing to it.
1086 * @internal
1087 */
1088 var Dep = /** @class */ (function () {
1089 function Dep() {
1090 // pending subs cleanup
1091 this._pending = false;
1092 this.id = uid++;
1093 this.subs = [];
1094 }
1095 Dep.prototype.addSub = function (sub) {
1096 this.subs.push(sub);
1097 };
1098 Dep.prototype.removeSub = function (sub) {
1099 // #12696 deps with massive amount of subscribers are extremely slow to
1100 // clean up in Chromium
1101 // to workaround this, we unset the sub for now, and clear them on
1102 // next scheduler flush.
1103 this.subs[this.subs.indexOf(sub)] = null;
1104 if (!this._pending) {
1105 this._pending = true;
1106 }
1107 };
1108 Dep.prototype.depend = function (info) {
1109 if (Dep.target) {
1110 Dep.target.addDep(this);
1111 if (info && Dep.target.onTrack) {
1112 Dep.target.onTrack(__assign({ effect: Dep.target }, info));
1113 }
1114 }
1115 };
1116 Dep.prototype.notify = function (info) {
1117 // stabilize the subscriber list first
1118 var subs = this.subs.filter(function (s) { return s; });
1119 for (var i = 0, l = subs.length; i < l; i++) {
1120 var sub = subs[i];
1121 if (info) {
1122 sub.onTrigger &&
1123 sub.onTrigger(__assign({ effect: subs[i] }, info));
1124 }
1125 sub.update();
1126 }
1127 };
1128 return Dep;
1129 }());
1130 // The current target watcher being evaluated.
1131 // This is globally unique because only one watcher
1132 // can be evaluated at a time.
1133 Dep.target = null;
1134 var targetStack = [];
1135 function pushTarget(target) {
1136 targetStack.push(target);
1137 Dep.target = target;
1138 }
1139 function popTarget() {
1140 targetStack.pop();
1141 Dep.target = targetStack[targetStack.length - 1];
1142 }
1143
1144 /*
1145 * not type checking this file because flow doesn't play well with
1146 * dynamically accessing methods on Array prototype
1147 */
1148 var arrayProto = Array.prototype;
1149 var arrayMethods = Object.create(arrayProto);
1150 var methodsToPatch = [
1151 'push',
1152 'pop',
1153 'shift',
1154 'unshift',
1155 'splice',
1156 'sort',
1157 'reverse'
1158 ];
1159 /**
1160 * Intercept mutating methods and emit events
1161 */
1162 methodsToPatch.forEach(function (method) {
1163 // cache original method
1164 var original = arrayProto[method];
1165 def(arrayMethods, method, function mutator() {
1166 var args = [];
1167 for (var _i = 0; _i < arguments.length; _i++) {
1168 args[_i] = arguments[_i];
1169 }
1170 var result = original.apply(this, args);
1171 var ob = this.__ob__;
1172 var inserted;
1173 switch (method) {
1174 case 'push':
1175 case 'unshift':
1176 inserted = args;
1177 break;
1178 case 'splice':
1179 inserted = args.slice(2);
1180 break;
1181 }
1182 if (inserted)
1183 ob.observeArray(inserted);
1184 // notify change
1185 {
1186 ob.dep.notify({
1187 type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */,
1188 target: this,
1189 key: method
1190 });
1191 }
1192 return result;
1193 });
1194 });
1195
1196 var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
1197 var NO_INITIAL_VALUE = {};
1198 /**
1199 * In some cases we may want to disable observation inside a component's
1200 * update computation.
1201 */
1202 var shouldObserve = true;
1203 function toggleObserving(value) {
1204 shouldObserve = value;
1205 }
1206 // ssr mock dep
1207 var mockDep = {
1208 notify: noop,
1209 depend: noop,
1210 addSub: noop,
1211 removeSub: noop
1212 };
1213 /**
1214 * Observer class that is attached to each observed
1215 * object. Once attached, the observer converts the target
1216 * object's property keys into getter/setters that
1217 * collect dependencies and dispatch updates.
1218 */
1219 var Observer = /** @class */ (function () {
1220 function Observer(value, shallow, mock) {
1221 if (shallow === void 0) { shallow = false; }
1222 if (mock === void 0) { mock = false; }
1223 this.value = value;
1224 this.shallow = shallow;
1225 this.mock = mock;
1226 // this.value = value
1227 this.dep = mock ? mockDep : new Dep();
1228 this.vmCount = 0;
1229 def(value, '__ob__', this);
1230 if (isArray(value)) {
1231 if (!mock) {
1232 if (hasProto) {
1233 value.__proto__ = arrayMethods;
1234 /* eslint-enable no-proto */
1235 }
1236 else {
1237 for (var i = 0, l = arrayKeys.length; i < l; i++) {
1238 var key = arrayKeys[i];
1239 def(value, key, arrayMethods[key]);
1240 }
1241 }
1242 }
1243 if (!shallow) {
1244 this.observeArray(value);
1245 }
1246 }
1247 else {
1248 /**
1249 * Walk through all properties and convert them into
1250 * getter/setters. This method should only be called when
1251 * value type is Object.
1252 */
1253 var keys = Object.keys(value);
1254 for (var i = 0; i < keys.length; i++) {
1255 var key = keys[i];
1256 defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);
1257 }
1258 }
1259 }
1260 /**
1261 * Observe a list of Array items.
1262 */
1263 Observer.prototype.observeArray = function (value) {
1264 for (var i = 0, l = value.length; i < l; i++) {
1265 observe(value[i], false, this.mock);
1266 }
1267 };
1268 return Observer;
1269 }());
1270 // helpers
1271 /**
1272 * Attempt to create an observer instance for a value,
1273 * returns the new observer if successfully observed,
1274 * or the existing observer if the value already has one.
1275 */
1276 function observe(value, shallow, ssrMockReactivity) {
1277 if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
1278 return value.__ob__;
1279 }
1280 if (shouldObserve &&
1281 (ssrMockReactivity || !isServerRendering()) &&
1282 (isArray(value) || isPlainObject(value)) &&
1283 Object.isExtensible(value) &&
1284 !value.__v_skip /* ReactiveFlags.SKIP */ &&
1285 !isRef(value) &&
1286 !(value instanceof VNode)) {
1287 return new Observer(value, shallow, ssrMockReactivity);
1288 }
1289 }
1290 /**
1291 * Define a reactive property on an Object.
1292 */
1293 function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {
1294 if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }
1295 var dep = new Dep();
1296 var property = Object.getOwnPropertyDescriptor(obj, key);
1297 if (property && property.configurable === false) {
1298 return;
1299 }
1300 // cater for pre-defined getter/setters
1301 var getter = property && property.get;
1302 var setter = property && property.set;
1303 if ((!getter || setter) &&
1304 (val === NO_INITIAL_VALUE || arguments.length === 2)) {
1305 val = obj[key];
1306 }
1307 var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);
1308 Object.defineProperty(obj, key, {
1309 enumerable: true,
1310 configurable: true,
1311 get: function reactiveGetter() {
1312 var value = getter ? getter.call(obj) : val;
1313 if (Dep.target) {
1314 {
1315 dep.depend({
1316 target: obj,
1317 type: "get" /* TrackOpTypes.GET */,
1318 key: key
1319 });
1320 }
1321 if (childOb) {
1322 childOb.dep.depend();
1323 if (isArray(value)) {
1324 dependArray(value);
1325 }
1326 }
1327 }
1328 return isRef(value) && !shallow ? value.value : value;
1329 },
1330 set: function reactiveSetter(newVal) {
1331 var value = getter ? getter.call(obj) : val;
1332 if (!hasChanged(value, newVal)) {
1333 return;
1334 }
1335 if (customSetter) {
1336 customSetter();
1337 }
1338 if (setter) {
1339 setter.call(obj, newVal);
1340 }
1341 else if (getter) {
1342 // #7981: for accessor properties without setter
1343 return;
1344 }
1345 else if (!shallow && isRef(value) && !isRef(newVal)) {
1346 value.value = newVal;
1347 return;
1348 }
1349 else {
1350 val = newVal;
1351 }
1352 childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);
1353 {
1354 dep.notify({
1355 type: "set" /* TriggerOpTypes.SET */,
1356 target: obj,
1357 key: key,
1358 newValue: newVal,
1359 oldValue: value
1360 });
1361 }
1362 }
1363 });
1364 return dep;
1365 }
1366 function set(target, key, val) {
1367 if ((isUndef(target) || isPrimitive(target))) {
1368 warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target));
1369 }
1370 if (isReadonly(target)) {
1371 warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
1372 return;
1373 }
1374 var ob = target.__ob__;
1375 if (isArray(target) && isValidArrayIndex(key)) {
1376 target.length = Math.max(target.length, key);
1377 target.splice(key, 1, val);
1378 // when mocking for SSR, array methods are not hijacked
1379 if (ob && !ob.shallow && ob.mock) {
1380 observe(val, false, true);
1381 }
1382 return val;
1383 }
1384 if (key in target && !(key in Object.prototype)) {
1385 target[key] = val;
1386 return val;
1387 }
1388 if (target._isVue || (ob && ob.vmCount)) {
1389 warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
1390 'at runtime - declare it upfront in the data option.');
1391 return val;
1392 }
1393 if (!ob) {
1394 target[key] = val;
1395 return val;
1396 }
1397 defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
1398 {
1399 ob.dep.notify({
1400 type: "add" /* TriggerOpTypes.ADD */,
1401 target: target,
1402 key: key,
1403 newValue: val,
1404 oldValue: undefined
1405 });
1406 }
1407 return val;
1408 }
1409 /**
1410 * Collect dependencies on array elements when the array is touched, since
1411 * we cannot intercept array element access like property getters.
1412 */
1413 function dependArray(value) {
1414 for (var e = void 0, i = 0, l = value.length; i < l; i++) {
1415 e = value[i];
1416 if (e && e.__ob__) {
1417 e.__ob__.dep.depend();
1418 }
1419 if (isArray(e)) {
1420 dependArray(e);
1421 }
1422 }
1423 }
1424
1425 function isReadonly(value) {
1426 return !!(value && value.__v_isReadonly);
1427 }
1428
1429 function isRef(r) {
1430 return !!(r && r.__v_isRef === true);
1431 }
1432
1433 {
1434 var perf_1 = inBrowser && window.performance;
1435 /* istanbul ignore if */
1436 if (perf_1 &&
1437 // @ts-ignore
1438 perf_1.mark &&
1439 // @ts-ignore
1440 perf_1.measure &&
1441 // @ts-ignore
1442 perf_1.clearMarks &&
1443 // @ts-ignore
1444 perf_1.clearMeasures) ;
1445 }
1446
1447 var normalizeEvent = cached(function (name) {
1448 var passive = name.charAt(0) === '&';
1449 name = passive ? name.slice(1) : name;
1450 var once = name.charAt(0) === '~'; // Prefixed last, checked first
1451 name = once ? name.slice(1) : name;
1452 var capture = name.charAt(0) === '!';
1453 name = capture ? name.slice(1) : name;
1454 return {
1455 name: name,
1456 once: once,
1457 capture: capture,
1458 passive: passive
1459 };
1460 });
1461 function createFnInvoker(fns, vm) {
1462 function invoker() {
1463 var fns = invoker.fns;
1464 if (isArray(fns)) {
1465 var cloned = fns.slice();
1466 for (var i = 0; i < cloned.length; i++) {
1467 invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler");
1468 }
1469 }
1470 else {
1471 // return handler return value for single handlers
1472 return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
1473 }
1474 }
1475 invoker.fns = fns;
1476 return invoker;
1477 }
1478 function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {
1479 var name, cur, old, event;
1480 for (name in on) {
1481 cur = on[name];
1482 old = oldOn[name];
1483 event = normalizeEvent(name);
1484 if (isUndef(cur)) {
1485 warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm);
1486 }
1487 else if (isUndef(old)) {
1488 if (isUndef(cur.fns)) {
1489 cur = on[name] = createFnInvoker(cur, vm);
1490 }
1491 if (isTrue(event.once)) {
1492 cur = on[name] = createOnceHandler(event.name, cur, event.capture);
1493 }
1494 add(event.name, cur, event.capture, event.passive, event.params);
1495 }
1496 else if (cur !== old) {
1497 old.fns = cur;
1498 on[name] = old;
1499 }
1500 }
1501 for (name in oldOn) {
1502 if (isUndef(on[name])) {
1503 event = normalizeEvent(name);
1504 remove(event.name, oldOn[name], event.capture);
1505 }
1506 }
1507 }
1508
1509 function extractPropsFromVNodeData(data, Ctor, tag) {
1510 // we are only extracting raw values here.
1511 // validation and default values are handled in the child
1512 // component itself.
1513 var propOptions = Ctor.options.props;
1514 if (isUndef(propOptions)) {
1515 return;
1516 }
1517 var res = {};
1518 var attrs = data.attrs, props = data.props;
1519 if (isDef(attrs) || isDef(props)) {
1520 for (var key in propOptions) {
1521 var altKey = hyphenate(key);
1522 {
1523 var keyInLowerCase = key.toLowerCase();
1524 if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {
1525 tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") +
1526 "".concat(formatComponentName(
1527 // @ts-expect-error tag is string
1528 tag || Ctor), ", but the declared prop name is") +
1529 " \"".concat(key, "\". ") +
1530 "Note that HTML attributes are case-insensitive and camelCased " +
1531 "props need to use their kebab-case equivalents when using in-DOM " +
1532 "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\"."));
1533 }
1534 }
1535 checkProp(res, props, key, altKey, true) ||
1536 checkProp(res, attrs, key, altKey, false);
1537 }
1538 }
1539 return res;
1540 }
1541 function checkProp(res, hash, key, altKey, preserve) {
1542 if (isDef(hash)) {
1543 if (hasOwn(hash, key)) {
1544 res[key] = hash[key];
1545 if (!preserve) {
1546 delete hash[key];
1547 }
1548 return true;
1549 }
1550 else if (hasOwn(hash, altKey)) {
1551 res[key] = hash[altKey];
1552 if (!preserve) {
1553 delete hash[altKey];
1554 }
1555 return true;
1556 }
1557 }
1558 return false;
1559 }
1560
1561 // The template compiler attempts to minimize the need for normalization by
1562 // statically analyzing the template at compile time.
1563 //
1564 // For plain HTML markup, normalization can be completely skipped because the
1565 // generated render function is guaranteed to return Array<VNode>. There are
1566 // two cases where extra normalization is needed:
1567 // 1. When the children contains components - because a functional component
1568 // may return an Array instead of a single root. In this case, just a simple
1569 // normalization is needed - if any child is an Array, we flatten the whole
1570 // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
1571 // because functional components already normalize their own children.
1572 function simpleNormalizeChildren(children) {
1573 for (var i = 0; i < children.length; i++) {
1574 if (isArray(children[i])) {
1575 return Array.prototype.concat.apply([], children);
1576 }
1577 }
1578 return children;
1579 }
1580 // 2. When the children contains constructs that always generated nested Arrays,
1581 // e.g. <template>, <slot>, v-for, or when the children is provided by user
1582 // with hand-written render functions / JSX. In such cases a full normalization
1583 // is needed to cater to all possible types of children values.
1584 function normalizeChildren(children) {
1585 return isPrimitive(children)
1586 ? [createTextVNode(children)]
1587 : isArray(children)
1588 ? normalizeArrayChildren(children)
1589 : undefined;
1590 }
1591 function isTextNode(node) {
1592 return isDef(node) && isDef(node.text) && isFalse(node.isComment);
1593 }
1594 function normalizeArrayChildren(children, nestedIndex) {
1595 var res = [];
1596 var i, c, lastIndex, last;
1597 for (i = 0; i < children.length; i++) {
1598 c = children[i];
1599 if (isUndef(c) || typeof c === 'boolean')
1600 continue;
1601 lastIndex = res.length - 1;
1602 last = res[lastIndex];
1603 // nested
1604 if (isArray(c)) {
1605 if (c.length > 0) {
1606 c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i));
1607 // merge adjacent text nodes
1608 if (isTextNode(c[0]) && isTextNode(last)) {
1609 res[lastIndex] = createTextVNode(last.text + c[0].text);
1610 c.shift();
1611 }
1612 res.push.apply(res, c);
1613 }
1614 }
1615 else if (isPrimitive(c)) {
1616 if (isTextNode(last)) {
1617 // merge adjacent text nodes
1618 // this is necessary for SSR hydration because text nodes are
1619 // essentially merged when rendered to HTML strings
1620 res[lastIndex] = createTextVNode(last.text + c);
1621 }
1622 else if (c !== '') {
1623 // convert primitive to vnode
1624 res.push(createTextVNode(c));
1625 }
1626 }
1627 else {
1628 if (isTextNode(c) && isTextNode(last)) {
1629 // merge adjacent text nodes
1630 res[lastIndex] = createTextVNode(last.text + c.text);
1631 }
1632 else {
1633 // default key for nested array children (likely generated by v-for)
1634 if (isTrue(children._isVList) &&
1635 isDef(c.tag) &&
1636 isUndef(c.key) &&
1637 isDef(nestedIndex)) {
1638 c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__");
1639 }
1640 res.push(c);
1641 }
1642 }
1643 }
1644 return res;
1645 }
1646
1647 var SIMPLE_NORMALIZE = 1;
1648 var ALWAYS_NORMALIZE = 2;
1649 // wrapper function for providing a more flexible interface
1650 // without getting yelled at by flow
1651 function createElement(context, tag, data, children, normalizationType, alwaysNormalize) {
1652 if (isArray(data) || isPrimitive(data)) {
1653 normalizationType = children;
1654 children = data;
1655 data = undefined;
1656 }
1657 if (isTrue(alwaysNormalize)) {
1658 normalizationType = ALWAYS_NORMALIZE;
1659 }
1660 return _createElement(context, tag, data, children, normalizationType);
1661 }
1662 function _createElement(context, tag, data, children, normalizationType) {
1663 if (isDef(data) && isDef(data.__ob__)) {
1664 warn$2("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context);
1665 return createEmptyVNode();
1666 }
1667 // object syntax in v-bind
1668 if (isDef(data) && isDef(data.is)) {
1669 tag = data.is;
1670 }
1671 if (!tag) {
1672 // in case of component :is set to falsy value
1673 return createEmptyVNode();
1674 }
1675 // warn against non-primitive key
1676 if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {
1677 warn$2('Avoid using non-primitive value as key, ' +
1678 'use string/number value instead.', context);
1679 }
1680 // support single function children as default scoped slot
1681 if (isArray(children) && isFunction(children[0])) {
1682 data = data || {};
1683 data.scopedSlots = { default: children[0] };
1684 children.length = 0;
1685 }
1686 if (normalizationType === ALWAYS_NORMALIZE) {
1687 children = normalizeChildren(children);
1688 }
1689 else if (normalizationType === SIMPLE_NORMALIZE) {
1690 children = simpleNormalizeChildren(children);
1691 }
1692 var vnode, ns;
1693 if (typeof tag === 'string') {
1694 var Ctor = void 0;
1695 ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
1696 if ((!data || !data.pre) &&
1697 isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {
1698 // component
1699 vnode = createComponent(Ctor, data, context, children, tag);
1700 }
1701 else {
1702 // unknown or unlisted namespaced elements
1703 // check at runtime because it may get assigned a namespace when its
1704 // parent normalizes children
1705 vnode = new VNode(tag, data, children, undefined, undefined, context);
1706 }
1707 }
1708 else {
1709 // direct component options / constructor
1710 vnode = createComponent(tag, data, context, children);
1711 }
1712 if (isArray(vnode)) {
1713 return vnode;
1714 }
1715 else if (isDef(vnode)) {
1716 if (isDef(ns))
1717 applyNS(vnode, ns);
1718 if (isDef(data))
1719 registerDeepBindings(data);
1720 return vnode;
1721 }
1722 else {
1723 return createEmptyVNode();
1724 }
1725 }
1726 function applyNS(vnode, ns, force) {
1727 vnode.ns = ns;
1728 if (vnode.tag === 'foreignObject') {
1729 // use default namespace inside foreignObject
1730 ns = undefined;
1731 force = true;
1732 }
1733 if (isDef(vnode.children)) {
1734 for (var i = 0, l = vnode.children.length; i < l; i++) {
1735 var child = vnode.children[i];
1736 if (isDef(child.tag) &&
1737 (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
1738 applyNS(child, ns, force);
1739 }
1740 }
1741 }
1742 }
1743 // ref #5318
1744 // necessary to ensure parent re-render when deep bindings like :style and
1745 // :class are used on slot nodes
1746 function registerDeepBindings(data) {
1747 if (isObject(data.style)) {
1748 traverse(data.style);
1749 }
1750 if (isObject(data.class)) {
1751 traverse(data.class);
1752 }
1753 }
1754
1755 /**
1756 * Runtime helper for rendering v-for lists.
1757 */
1758 function renderList(val, render) {
1759 var ret = null, i, l, keys, key;
1760 if (isArray(val) || typeof val === 'string') {
1761 ret = new Array(val.length);
1762 for (i = 0, l = val.length; i < l; i++) {
1763 ret[i] = render(val[i], i);
1764 }
1765 }
1766 else if (typeof val === 'number') {
1767 ret = new Array(val);
1768 for (i = 0; i < val; i++) {
1769 ret[i] = render(i + 1, i);
1770 }
1771 }
1772 else if (isObject(val)) {
1773 if (hasSymbol && val[Symbol.iterator]) {
1774 ret = [];
1775 var iterator = val[Symbol.iterator]();
1776 var result = iterator.next();
1777 while (!result.done) {
1778 ret.push(render(result.value, ret.length));
1779 result = iterator.next();
1780 }
1781 }
1782 else {
1783 keys = Object.keys(val);
1784 ret = new Array(keys.length);
1785 for (i = 0, l = keys.length; i < l; i++) {
1786 key = keys[i];
1787 ret[i] = render(val[key], key, i);
1788 }
1789 }
1790 }
1791 if (!isDef(ret)) {
1792 ret = [];
1793 }
1794 ret._isVList = true;
1795 return ret;
1796 }
1797
1798 /**
1799 * Runtime helper for rendering <slot>
1800 */
1801 function renderSlot(name, fallbackRender, props, bindObject) {
1802 var scopedSlotFn = this.$scopedSlots[name];
1803 var nodes;
1804 if (scopedSlotFn) {
1805 // scoped slot
1806 props = props || {};
1807 if (bindObject) {
1808 if (!isObject(bindObject)) {
1809 warn$2('slot v-bind without argument expects an Object', this);
1810 }
1811 props = extend(extend({}, bindObject), props);
1812 }
1813 nodes =
1814 scopedSlotFn(props) ||
1815 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
1816 }
1817 else {
1818 nodes =
1819 this.$slots[name] ||
1820 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
1821 }
1822 var target = props && props.slot;
1823 if (target) {
1824 return this.$createElement('template', { slot: target }, nodes);
1825 }
1826 else {
1827 return nodes;
1828 }
1829 }
1830
1831 /**
1832 * Runtime helper for resolving filters
1833 */
1834 function resolveFilter(id) {
1835 return resolveAsset(this.$options, 'filters', id, true) || identity;
1836 }
1837
1838 function isKeyNotMatch(expect, actual) {
1839 if (isArray(expect)) {
1840 return expect.indexOf(actual) === -1;
1841 }
1842 else {
1843 return expect !== actual;
1844 }
1845 }
1846 /**
1847 * Runtime helper for checking keyCodes from config.
1848 * exposed as Vue.prototype._k
1849 * passing in eventKeyName as last argument separately for backwards compat
1850 */
1851 function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
1852 var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
1853 if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
1854 return isKeyNotMatch(builtInKeyName, eventKeyName);
1855 }
1856 else if (mappedKeyCode) {
1857 return isKeyNotMatch(mappedKeyCode, eventKeyCode);
1858 }
1859 else if (eventKeyName) {
1860 return hyphenate(eventKeyName) !== key;
1861 }
1862 return eventKeyCode === undefined;
1863 }
1864
1865 /**
1866 * Runtime helper for merging v-bind="object" into a VNode's data.
1867 */
1868 function bindObjectProps(data, tag, value, asProp, isSync) {
1869 if (value) {
1870 if (!isObject(value)) {
1871 warn$2('v-bind without argument expects an Object or Array value', this);
1872 }
1873 else {
1874 if (isArray(value)) {
1875 value = toObject(value);
1876 }
1877 var hash = void 0;
1878 var _loop_1 = function (key) {
1879 if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
1880 hash = data;
1881 }
1882 else {
1883 var type = data.attrs && data.attrs.type;
1884 hash =
1885 asProp || config.mustUseProp(tag, type, key)
1886 ? data.domProps || (data.domProps = {})
1887 : data.attrs || (data.attrs = {});
1888 }
1889 var camelizedKey = camelize(key);
1890 var hyphenatedKey = hyphenate(key);
1891 if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
1892 hash[key] = value[key];
1893 if (isSync) {
1894 var on = data.on || (data.on = {});
1895 on["update:".concat(key)] = function ($event) {
1896 value[key] = $event;
1897 };
1898 }
1899 }
1900 };
1901 for (var key in value) {
1902 _loop_1(key);
1903 }
1904 }
1905 }
1906 return data;
1907 }
1908
1909 /**
1910 * Runtime helper for rendering static trees.
1911 */
1912 function renderStatic(index, isInFor) {
1913 var cached = this._staticTrees || (this._staticTrees = []);
1914 var tree = cached[index];
1915 // if has already-rendered static tree and not inside v-for,
1916 // we can reuse the same tree.
1917 if (tree && !isInFor) {
1918 return tree;
1919 }
1920 // otherwise, render a fresh tree.
1921 tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
1922 );
1923 markStatic$1(tree, "__static__".concat(index), false);
1924 return tree;
1925 }
1926 /**
1927 * Runtime helper for v-once.
1928 * Effectively it means marking the node as static with a unique key.
1929 */
1930 function markOnce(tree, index, key) {
1931 markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true);
1932 return tree;
1933 }
1934 function markStatic$1(tree, key, isOnce) {
1935 if (isArray(tree)) {
1936 for (var i = 0; i < tree.length; i++) {
1937 if (tree[i] && typeof tree[i] !== 'string') {
1938 markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce);
1939 }
1940 }
1941 }
1942 else {
1943 markStaticNode(tree, key, isOnce);
1944 }
1945 }
1946 function markStaticNode(node, key, isOnce) {
1947 node.isStatic = true;
1948 node.key = key;
1949 node.isOnce = isOnce;
1950 }
1951
1952 function bindObjectListeners(data, value) {
1953 if (value) {
1954 if (!isPlainObject(value)) {
1955 warn$2('v-on without argument expects an Object value', this);
1956 }
1957 else {
1958 var on = (data.on = data.on ? extend({}, data.on) : {});
1959 for (var key in value) {
1960 var existing = on[key];
1961 var ours = value[key];
1962 on[key] = existing ? [].concat(existing, ours) : ours;
1963 }
1964 }
1965 }
1966 return data;
1967 }
1968
1969 function resolveScopedSlots(fns, res,
1970 // the following are added in 2.6
1971 hasDynamicKeys, contentHashKey) {
1972 res = res || { $stable: !hasDynamicKeys };
1973 for (var i = 0; i < fns.length; i++) {
1974 var slot = fns[i];
1975 if (isArray(slot)) {
1976 resolveScopedSlots(slot, res, hasDynamicKeys);
1977 }
1978 else if (slot) {
1979 // marker for reverse proxying v-slot without scope on this.$slots
1980 // @ts-expect-error
1981 if (slot.proxy) {
1982 // @ts-expect-error
1983 slot.fn.proxy = true;
1984 }
1985 res[slot.key] = slot.fn;
1986 }
1987 }
1988 if (contentHashKey) {
1989 res.$key = contentHashKey;
1990 }
1991 return res;
1992 }
1993
1994 // helper to process dynamic keys for dynamic arguments in v-bind and v-on.
1995 function bindDynamicKeys(baseObj, values) {
1996 for (var i = 0; i < values.length; i += 2) {
1997 var key = values[i];
1998 if (typeof key === 'string' && key) {
1999 baseObj[values[i]] = values[i + 1];
2000 }
2001 else if (key !== '' && key !== null) {
2002 // null is a special value for explicitly removing a binding
2003 warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this);
2004 }
2005 }
2006 return baseObj;
2007 }
2008 // helper to dynamically append modifier runtime markers to event names.
2009 // ensure only append when value is already string, otherwise it will be cast
2010 // to string and cause the type check to miss.
2011 function prependModifier(value, symbol) {
2012 return typeof value === 'string' ? symbol + value : value;
2013 }
2014
2015 function installRenderHelpers(target) {
2016 target._o = markOnce;
2017 target._n = toNumber;
2018 target._s = toString;
2019 target._l = renderList;
2020 target._t = renderSlot;
2021 target._q = looseEqual;
2022 target._i = looseIndexOf;
2023 target._m = renderStatic;
2024 target._f = resolveFilter;
2025 target._k = checkKeyCodes;
2026 target._b = bindObjectProps;
2027 target._v = createTextVNode;
2028 target._e = createEmptyVNode;
2029 target._u = resolveScopedSlots;
2030 target._g = bindObjectListeners;
2031 target._d = bindDynamicKeys;
2032 target._p = prependModifier;
2033 }
2034
2035 /**
2036 * Runtime helper for resolving raw children VNodes into a slot object.
2037 */
2038 function resolveSlots(children, context) {
2039 if (!children || !children.length) {
2040 return {};
2041 }
2042 var slots = {};
2043 for (var i = 0, l = children.length; i < l; i++) {
2044 var child = children[i];
2045 var data = child.data;
2046 // remove slot attribute if the node is resolved as a Vue slot node
2047 if (data && data.attrs && data.attrs.slot) {
2048 delete data.attrs.slot;
2049 }
2050 // named slots should only be respected if the vnode was rendered in the
2051 // same context.
2052 if ((child.context === context || child.fnContext === context) &&
2053 data &&
2054 data.slot != null) {
2055 var name_1 = data.slot;
2056 var slot = slots[name_1] || (slots[name_1] = []);
2057 if (child.tag === 'template') {
2058 slot.push.apply(slot, child.children || []);
2059 }
2060 else {
2061 slot.push(child);
2062 }
2063 }
2064 else {
2065 (slots.default || (slots.default = [])).push(child);
2066 }
2067 }
2068 // ignore slots that contains only whitespace
2069 for (var name_2 in slots) {
2070 if (slots[name_2].every(isWhitespace)) {
2071 delete slots[name_2];
2072 }
2073 }
2074 return slots;
2075 }
2076 function isWhitespace(node) {
2077 return (node.isComment && !node.asyncFactory) || node.text === ' ';
2078 }
2079
2080 function isAsyncPlaceholder(node) {
2081 // @ts-expect-error not really boolean type
2082 return node.isComment && node.asyncFactory;
2083 }
2084
2085 function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {
2086 var res;
2087 var hasNormalSlots = Object.keys(normalSlots).length > 0;
2088 var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;
2089 var key = scopedSlots && scopedSlots.$key;
2090 if (!scopedSlots) {
2091 res = {};
2092 }
2093 else if (scopedSlots._normalized) {
2094 // fast path 1: child component re-render only, parent did not change
2095 return scopedSlots._normalized;
2096 }
2097 else if (isStable &&
2098 prevScopedSlots &&
2099 prevScopedSlots !== emptyObject &&
2100 key === prevScopedSlots.$key &&
2101 !hasNormalSlots &&
2102 !prevScopedSlots.$hasNormal) {
2103 // fast path 2: stable scoped slots w/ no normal slots to proxy,
2104 // only need to normalize once
2105 return prevScopedSlots;
2106 }
2107 else {
2108 res = {};
2109 for (var key_1 in scopedSlots) {
2110 if (scopedSlots[key_1] && key_1[0] !== '$') {
2111 res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);
2112 }
2113 }
2114 }
2115 // expose normal slots on scopedSlots
2116 for (var key_2 in normalSlots) {
2117 if (!(key_2 in res)) {
2118 res[key_2] = proxyNormalSlot(normalSlots, key_2);
2119 }
2120 }
2121 // avoriaz seems to mock a non-extensible $scopedSlots object
2122 // and when that is passed down this would cause an error
2123 if (scopedSlots && Object.isExtensible(scopedSlots)) {
2124 scopedSlots._normalized = res;
2125 }
2126 def(res, '$stable', isStable);
2127 def(res, '$key', key);
2128 def(res, '$hasNormal', hasNormalSlots);
2129 return res;
2130 }
2131 function normalizeScopedSlot(vm, normalSlots, key, fn) {
2132 var normalized = function () {
2133 var cur = currentInstance;
2134 setCurrentInstance(vm);
2135 var res = arguments.length ? fn.apply(null, arguments) : fn({});
2136 res =
2137 res && typeof res === 'object' && !isArray(res)
2138 ? [res] // single vnode
2139 : normalizeChildren(res);
2140 var vnode = res && res[0];
2141 setCurrentInstance(cur);
2142 return res &&
2143 (!vnode ||
2144 (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
2145 ? undefined
2146 : res;
2147 };
2148 // this is a slot using the new v-slot syntax without scope. although it is
2149 // compiled as a scoped slot, render fn users would expect it to be present
2150 // on this.$slots because the usage is semantically a normal slot.
2151 if (fn.proxy) {
2152 Object.defineProperty(normalSlots, key, {
2153 get: normalized,
2154 enumerable: true,
2155 configurable: true
2156 });
2157 }
2158 return normalized;
2159 }
2160 function proxyNormalSlot(slots, key) {
2161 return function () { return slots[key]; };
2162 }
2163
2164 function syncSetupProxy(to, from, prev, instance, type) {
2165 var changed = false;
2166 for (var key in from) {
2167 if (!(key in to)) {
2168 changed = true;
2169 defineProxyAttr(to, key, instance, type);
2170 }
2171 else if (from[key] !== prev[key]) {
2172 changed = true;
2173 }
2174 }
2175 for (var key in to) {
2176 if (!(key in from)) {
2177 changed = true;
2178 delete to[key];
2179 }
2180 }
2181 return changed;
2182 }
2183 function defineProxyAttr(proxy, key, instance, type) {
2184 Object.defineProperty(proxy, key, {
2185 enumerable: true,
2186 configurable: true,
2187 get: function () {
2188 return instance[type][key];
2189 }
2190 });
2191 }
2192
2193 function createAsyncPlaceholder(factory, data, context, children, tag) {
2194 var node = createEmptyVNode();
2195 node.asyncFactory = factory;
2196 node.asyncMeta = { data: data, context: context, children: children, tag: tag };
2197 return node;
2198 }
2199 function resolveAsyncComponent(factory, baseCtor) {
2200 if (isTrue(factory.error) && isDef(factory.errorComp)) {
2201 return factory.errorComp;
2202 }
2203 if (isDef(factory.resolved)) {
2204 return factory.resolved;
2205 }
2206 if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
2207 return factory.loadingComp;
2208 }
2209 }
2210
2211 var target;
2212 function add(event, fn) {
2213 target.$on(event, fn);
2214 }
2215 function remove(event, fn) {
2216 target.$off(event, fn);
2217 }
2218 function createOnceHandler(event, fn) {
2219 var _target = target;
2220 return function onceHandler() {
2221 var res = fn.apply(null, arguments);
2222 if (res !== null) {
2223 _target.$off(event, onceHandler);
2224 }
2225 };
2226 }
2227 function updateComponentListeners(vm, listeners, oldListeners) {
2228 target = vm;
2229 updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm);
2230 target = undefined;
2231 }
2232
2233 var activeInstance = null;
2234 function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {
2235 // determine whether component has slot children
2236 // we need to do this before overwriting $options._renderChildren.
2237 // check if there are dynamic scopedSlots (hand-written or compiled but with
2238 // dynamic slot names). Static scoped slots compiled from template has the
2239 // "$stable" marker.
2240 var newScopedSlots = parentVnode.data.scopedSlots;
2241 var oldScopedSlots = vm.$scopedSlots;
2242 var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||
2243 (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
2244 (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||
2245 (!newScopedSlots && vm.$scopedSlots.$key));
2246 // Any static slot children from the parent may have changed during parent's
2247 // update. Dynamic scoped slots may also have changed. In such cases, a forced
2248 // update is necessary to ensure correctness.
2249 var needsForceUpdate = !!(renderChildren || // has new static slots
2250 vm.$options._renderChildren || // has old static slots
2251 hasDynamicScopedSlot);
2252 var prevVNode = vm.$vnode;
2253 vm.$options._parentVnode = parentVnode;
2254 vm.$vnode = parentVnode; // update vm's placeholder node without re-render
2255 if (vm._vnode) {
2256 // update child tree's parent
2257 vm._vnode.parent = parentVnode;
2258 }
2259 vm.$options._renderChildren = renderChildren;
2260 // update $attrs and $listeners hash
2261 // these are also reactive so they may trigger child update if the child
2262 // used them during render
2263 var attrs = parentVnode.data.attrs || emptyObject;
2264 if (vm._attrsProxy) {
2265 // force update if attrs are accessed and has changed since it may be
2266 // passed to a child component.
2267 if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {
2268 needsForceUpdate = true;
2269 }
2270 }
2271 vm.$attrs = attrs;
2272 // update listeners
2273 listeners = listeners || emptyObject;
2274 var prevListeners = vm.$options._parentListeners;
2275 if (vm._listenersProxy) {
2276 syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');
2277 }
2278 vm.$listeners = vm.$options._parentListeners = listeners;
2279 updateComponentListeners(vm, listeners, prevListeners);
2280 // update props
2281 if (propsData && vm.$options.props) {
2282 toggleObserving(false);
2283 var props = vm._props;
2284 var propKeys = vm.$options._propKeys || [];
2285 for (var i = 0; i < propKeys.length; i++) {
2286 var key = propKeys[i];
2287 var propOptions = vm.$options.props; // wtf flow?
2288 props[key] = validateProp(key, propOptions, propsData, vm);
2289 }
2290 toggleObserving(true);
2291 // keep a copy of raw propsData
2292 vm.$options.propsData = propsData;
2293 }
2294 // resolve slots + force update if has children
2295 if (needsForceUpdate) {
2296 vm.$slots = resolveSlots(renderChildren, parentVnode.context);
2297 vm.$forceUpdate();
2298 }
2299 }
2300 function isInInactiveTree(vm) {
2301 while (vm && (vm = vm.$parent)) {
2302 if (vm._inactive)
2303 return true;
2304 }
2305 return false;
2306 }
2307 function activateChildComponent(vm, direct) {
2308 if (direct) {
2309 vm._directInactive = false;
2310 if (isInInactiveTree(vm)) {
2311 return;
2312 }
2313 }
2314 else if (vm._directInactive) {
2315 return;
2316 }
2317 if (vm._inactive || vm._inactive === null) {
2318 vm._inactive = false;
2319 for (var i = 0; i < vm.$children.length; i++) {
2320 activateChildComponent(vm.$children[i]);
2321 }
2322 callHook(vm, 'activated');
2323 }
2324 }
2325 function deactivateChildComponent(vm, direct) {
2326 if (direct) {
2327 vm._directInactive = true;
2328 if (isInInactiveTree(vm)) {
2329 return;
2330 }
2331 }
2332 if (!vm._inactive) {
2333 vm._inactive = true;
2334 for (var i = 0; i < vm.$children.length; i++) {
2335 deactivateChildComponent(vm.$children[i]);
2336 }
2337 callHook(vm, 'deactivated');
2338 }
2339 }
2340 function callHook(vm, hook, args, setContext) {
2341 if (setContext === void 0) { setContext = true; }
2342 // #7573 disable dep collection when invoking lifecycle hooks
2343 pushTarget();
2344 var prevInst = currentInstance;
2345 setContext && setCurrentInstance(vm);
2346 var handlers = vm.$options[hook];
2347 var info = "".concat(hook, " hook");
2348 if (handlers) {
2349 for (var i = 0, j = handlers.length; i < j; i++) {
2350 invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);
2351 }
2352 }
2353 if (vm._hasHookEvent) {
2354 vm.$emit('hook:' + hook);
2355 }
2356 if (setContext) {
2357 setCurrentInstance(prevInst);
2358 }
2359 popTarget();
2360 }
2361
2362 // Async edge case fix requires storing an event listener's attach timestamp.
2363 var getNow = Date.now;
2364 // Determine what event timestamp the browser is using. Annoyingly, the
2365 // timestamp can either be hi-res (relative to page load) or low-res
2366 // (relative to UNIX epoch), so in order to compare time we have to use the
2367 // same timestamp type when saving the flush timestamp.
2368 // All IE versions use low-res event timestamps, and have problematic clock
2369 // implementations (#9632)
2370 if (inBrowser && !isIE) {
2371 var performance_1 = window.performance;
2372 if (performance_1 &&
2373 typeof performance_1.now === 'function' &&
2374 getNow() > document.createEvent('Event').timeStamp) {
2375 // if the event timestamp, although evaluated AFTER the Date.now(), is
2376 // smaller than it, it means the event is using a hi-res timestamp,
2377 // and we need to use the hi-res version for event listener timestamps as
2378 // well.
2379 getNow = function () { return performance_1.now(); };
2380 }
2381 }
2382 /**
2383 * Queue a kept-alive component that was activated during patch.
2384 * The queue will be processed after the entire tree has been patched.
2385 */
2386 function queueActivatedComponent(vm) {
2387 // setting _inactive to false here so that a render function can
2388 // rely on checking whether it's in an inactive tree (e.g. router-view)
2389 vm._inactive = false;
2390 }
2391
2392 function handleError(err, vm, info) {
2393 // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
2394 // See: https://github.com/vuejs/vuex/issues/1505
2395 pushTarget();
2396 try {
2397 if (vm) {
2398 var cur = vm;
2399 while ((cur = cur.$parent)) {
2400 var hooks = cur.$options.errorCaptured;
2401 if (hooks) {
2402 for (var i = 0; i < hooks.length; i++) {
2403 try {
2404 var capture = hooks[i].call(cur, err, vm, info) === false;
2405 if (capture)
2406 return;
2407 }
2408 catch (e) {
2409 globalHandleError(e, cur, 'errorCaptured hook');
2410 }
2411 }
2412 }
2413 }
2414 }
2415 globalHandleError(err, vm, info);
2416 }
2417 finally {
2418 popTarget();
2419 }
2420 }
2421 function invokeWithErrorHandling(handler, context, args, vm, info) {
2422 var res;
2423 try {
2424 res = args ? handler.apply(context, args) : handler.call(context);
2425 if (res && !res._isVue && isPromise(res) && !res._handled) {
2426 res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
2427 res._handled = true;
2428 }
2429 }
2430 catch (e) {
2431 handleError(e, vm, info);
2432 }
2433 return res;
2434 }
2435 function globalHandleError(err, vm, info) {
2436 logError(err, vm, info);
2437 }
2438 function logError(err, vm, info) {
2439 {
2440 warn$2("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm);
2441 }
2442 /* istanbul ignore else */
2443 if (inBrowser && typeof console !== 'undefined') {
2444 console.error(err);
2445 }
2446 else {
2447 throw err;
2448 }
2449 }
2450
2451 /* globals MutationObserver */
2452 var callbacks = [];
2453 function flushCallbacks() {
2454 var copies = callbacks.slice(0);
2455 callbacks.length = 0;
2456 for (var i = 0; i < copies.length; i++) {
2457 copies[i]();
2458 }
2459 }
2460 // The nextTick behavior leverages the microtask queue, which can be accessed
2461 // via either native Promise.then or MutationObserver.
2462 // MutationObserver has wider support, however it is seriously bugged in
2463 // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
2464 // completely stops working after triggering a few times... so, if native
2465 // Promise is available, we will use it:
2466 /* istanbul ignore next, $flow-disable-line */
2467 if (typeof Promise !== 'undefined' && isNative(Promise)) {
2468 Promise.resolve();
2469 }
2470 else if (!isIE &&
2471 typeof MutationObserver !== 'undefined' &&
2472 (isNative(MutationObserver) ||
2473 // PhantomJS and iOS 7.x
2474 MutationObserver.toString() === '[object MutationObserverConstructor]')) {
2475 // Use MutationObserver where native Promise is not available,
2476 // e.g. PhantomJS, iOS7, Android 4.4
2477 // (#6466 MutationObserver is unreliable in IE11)
2478 var counter_1 = 1;
2479 var observer = new MutationObserver(flushCallbacks);
2480 var textNode_1 = document.createTextNode(String(counter_1));
2481 observer.observe(textNode_1, {
2482 characterData: true
2483 });
2484 }
2485 else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) ;
2486 else ;
2487
2488 var seenObjects = new _Set();
2489 /**
2490 * Recursively traverse an object to evoke all converted
2491 * getters, so that every nested property inside the object
2492 * is collected as a "deep" dependency.
2493 */
2494 function traverse(val) {
2495 _traverse(val, seenObjects);
2496 seenObjects.clear();
2497 return val;
2498 }
2499 function _traverse(val, seen) {
2500 var i, keys;
2501 var isA = isArray(val);
2502 if ((!isA && !isObject(val)) ||
2503 val.__v_skip /* ReactiveFlags.SKIP */ ||
2504 Object.isFrozen(val) ||
2505 val instanceof VNode) {
2506 return;
2507 }
2508 if (val.__ob__) {
2509 var depId = val.__ob__.dep.id;
2510 if (seen.has(depId)) {
2511 return;
2512 }
2513 seen.add(depId);
2514 }
2515 if (isA) {
2516 i = val.length;
2517 while (i--)
2518 _traverse(val[i], seen);
2519 }
2520 else if (isRef(val)) {
2521 _traverse(val.value, seen);
2522 }
2523 else {
2524 keys = Object.keys(val);
2525 i = keys.length;
2526 while (i--)
2527 _traverse(val[keys[i]], seen);
2528 }
2529 }
2530
2531 function resolveInject(inject, vm) {
2532 if (inject) {
2533 // inject is :any because flow is not smart enough to figure out cached
2534 var result = Object.create(null);
2535 var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);
2536 for (var i = 0; i < keys.length; i++) {
2537 var key = keys[i];
2538 // #6574 in case the inject object is observed...
2539 if (key === '__ob__')
2540 continue;
2541 var provideKey = inject[key].from;
2542 if (provideKey in vm._provided) {
2543 result[key] = vm._provided[provideKey];
2544 }
2545 else if ('default' in inject[key]) {
2546 var provideDefault = inject[key].default;
2547 result[key] = isFunction(provideDefault)
2548 ? provideDefault.call(vm)
2549 : provideDefault;
2550 }
2551 else {
2552 warn$2("Injection \"".concat(key, "\" not found"), vm);
2553 }
2554 }
2555 return result;
2556 }
2557 }
2558
2559 function resolveConstructorOptions(Ctor) {
2560 var options = Ctor.options;
2561 if (Ctor.super) {
2562 var superOptions = resolveConstructorOptions(Ctor.super);
2563 var cachedSuperOptions = Ctor.superOptions;
2564 if (superOptions !== cachedSuperOptions) {
2565 // super option changed,
2566 // need to resolve new options.
2567 Ctor.superOptions = superOptions;
2568 // check if there are any late-modified/attached options (#4976)
2569 var modifiedOptions = resolveModifiedOptions(Ctor);
2570 // update base extend options
2571 if (modifiedOptions) {
2572 extend(Ctor.extendOptions, modifiedOptions);
2573 }
2574 options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
2575 if (options.name) {
2576 options.components[options.name] = Ctor;
2577 }
2578 }
2579 }
2580 return options;
2581 }
2582 function resolveModifiedOptions(Ctor) {
2583 var modified;
2584 var latest = Ctor.options;
2585 var sealed = Ctor.sealedOptions;
2586 for (var key in latest) {
2587 if (latest[key] !== sealed[key]) {
2588 if (!modified)
2589 modified = {};
2590 modified[key] = latest[key];
2591 }
2592 }
2593 return modified;
2594 }
2595
2596 function FunctionalRenderContext(data, props, children, parent, Ctor) {
2597 var _this = this;
2598 var options = Ctor.options;
2599 // ensure the createElement function in functional components
2600 // gets a unique context - this is necessary for correct named slot check
2601 var contextVm;
2602 if (hasOwn(parent, '_uid')) {
2603 contextVm = Object.create(parent);
2604 contextVm._original = parent;
2605 }
2606 else {
2607 // the context vm passed in is a functional context as well.
2608 // in this case we want to make sure we are able to get a hold to the
2609 // real context instance.
2610 contextVm = parent;
2611 // @ts-ignore
2612 parent = parent._original;
2613 }
2614 var isCompiled = isTrue(options._compiled);
2615 var needNormalization = !isCompiled;
2616 this.data = data;
2617 this.props = props;
2618 this.children = children;
2619 this.parent = parent;
2620 this.listeners = data.on || emptyObject;
2621 this.injections = resolveInject(options.inject, parent);
2622 this.slots = function () {
2623 if (!_this.$slots) {
2624 normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));
2625 }
2626 return _this.$slots;
2627 };
2628 Object.defineProperty(this, 'scopedSlots', {
2629 enumerable: true,
2630 get: function () {
2631 return normalizeScopedSlots(parent, data.scopedSlots, this.slots());
2632 }
2633 });
2634 // support for compiled functional template
2635 if (isCompiled) {
2636 // exposing $options for renderStatic()
2637 this.$options = options;
2638 // pre-resolve slots for renderSlot()
2639 this.$slots = this.slots();
2640 this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);
2641 }
2642 if (options._scopeId) {
2643 this._c = function (a, b, c, d) {
2644 var vnode = createElement(contextVm, a, b, c, d, needNormalization);
2645 if (vnode && !isArray(vnode)) {
2646 vnode.fnScopeId = options._scopeId;
2647 vnode.fnContext = parent;
2648 }
2649 return vnode;
2650 };
2651 }
2652 else {
2653 this._c = function (a, b, c, d) {
2654 return createElement(contextVm, a, b, c, d, needNormalization);
2655 };
2656 }
2657 }
2658 installRenderHelpers(FunctionalRenderContext.prototype);
2659 function createFunctionalComponent(Ctor, propsData, data, contextVm, children) {
2660 var options = Ctor.options;
2661 var props = {};
2662 var propOptions = options.props;
2663 if (isDef(propOptions)) {
2664 for (var key in propOptions) {
2665 props[key] = validateProp(key, propOptions, propsData || emptyObject);
2666 }
2667 }
2668 else {
2669 if (isDef(data.attrs))
2670 mergeProps(props, data.attrs);
2671 if (isDef(data.props))
2672 mergeProps(props, data.props);
2673 }
2674 var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);
2675 var vnode = options.render.call(null, renderContext._c, renderContext);
2676 if (vnode instanceof VNode) {
2677 return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
2678 }
2679 else if (isArray(vnode)) {
2680 var vnodes = normalizeChildren(vnode) || [];
2681 var res = new Array(vnodes.length);
2682 for (var i = 0; i < vnodes.length; i++) {
2683 res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
2684 }
2685 return res;
2686 }
2687 }
2688 function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
2689 // #7817 clone node before setting fnContext, otherwise if the node is reused
2690 // (e.g. it was from a cached normal slot) the fnContext causes named slots
2691 // that should not be matched to match.
2692 var clone = cloneVNode(vnode);
2693 clone.fnContext = contextVm;
2694 clone.fnOptions = options;
2695 {
2696 (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =
2697 renderContext;
2698 }
2699 if (data.slot) {
2700 (clone.data || (clone.data = {})).slot = data.slot;
2701 }
2702 return clone;
2703 }
2704 function mergeProps(to, from) {
2705 for (var key in from) {
2706 to[camelize(key)] = from[key];
2707 }
2708 }
2709
2710 function getComponentName(options) {
2711 return options.name || options.__name || options._componentTag;
2712 }
2713 // inline hooks to be invoked on component VNodes during patch
2714 var componentVNodeHooks = {
2715 init: function (vnode, hydrating) {
2716 if (vnode.componentInstance &&
2717 !vnode.componentInstance._isDestroyed &&
2718 vnode.data.keepAlive) {
2719 // kept-alive components, treat as a patch
2720 var mountedNode = vnode; // work around flow
2721 componentVNodeHooks.prepatch(mountedNode, mountedNode);
2722 }
2723 else {
2724 var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));
2725 child.$mount(hydrating ? vnode.elm : undefined, hydrating);
2726 }
2727 },
2728 prepatch: function (oldVnode, vnode) {
2729 var options = vnode.componentOptions;
2730 var child = (vnode.componentInstance = oldVnode.componentInstance);
2731 updateChildComponent(child, options.propsData, // updated props
2732 options.listeners, // updated listeners
2733 vnode, // new parent vnode
2734 options.children // new children
2735 );
2736 },
2737 insert: function (vnode) {
2738 var context = vnode.context, componentInstance = vnode.componentInstance;
2739 if (!componentInstance._isMounted) {
2740 componentInstance._isMounted = true;
2741 callHook(componentInstance, 'mounted');
2742 }
2743 if (vnode.data.keepAlive) {
2744 if (context._isMounted) {
2745 // vue-router#1212
2746 // During updates, a kept-alive component's child components may
2747 // change, so directly walking the tree here may call activated hooks
2748 // on incorrect children. Instead we push them into a queue which will
2749 // be processed after the whole patch process ended.
2750 queueActivatedComponent(componentInstance);
2751 }
2752 else {
2753 activateChildComponent(componentInstance, true /* direct */);
2754 }
2755 }
2756 },
2757 destroy: function (vnode) {
2758 var componentInstance = vnode.componentInstance;
2759 if (!componentInstance._isDestroyed) {
2760 if (!vnode.data.keepAlive) {
2761 componentInstance.$destroy();
2762 }
2763 else {
2764 deactivateChildComponent(componentInstance, true /* direct */);
2765 }
2766 }
2767 }
2768 };
2769 var hooksToMerge = Object.keys(componentVNodeHooks);
2770 function createComponent(Ctor, data, context, children, tag) {
2771 if (isUndef(Ctor)) {
2772 return;
2773 }
2774 var baseCtor = context.$options._base;
2775 // plain options object: turn it into a constructor
2776 if (isObject(Ctor)) {
2777 Ctor = baseCtor.extend(Ctor);
2778 }
2779 // if at this stage it's not a constructor or an async component factory,
2780 // reject.
2781 if (typeof Ctor !== 'function') {
2782 {
2783 warn$2("Invalid Component definition: ".concat(String(Ctor)), context);
2784 }
2785 return;
2786 }
2787 // async component
2788 var asyncFactory;
2789 // @ts-expect-error
2790 if (isUndef(Ctor.cid)) {
2791 asyncFactory = Ctor;
2792 Ctor = resolveAsyncComponent(asyncFactory);
2793 if (Ctor === undefined) {
2794 // return a placeholder node for async component, which is rendered
2795 // as a comment node but preserves all the raw information for the node.
2796 // the information will be used for async server-rendering and hydration.
2797 return createAsyncPlaceholder(asyncFactory, data, context, children, tag);
2798 }
2799 }
2800 data = data || {};
2801 // resolve constructor options in case global mixins are applied after
2802 // component constructor creation
2803 resolveConstructorOptions(Ctor);
2804 // transform component v-model data into props & events
2805 if (isDef(data.model)) {
2806 // @ts-expect-error
2807 transformModel(Ctor.options, data);
2808 }
2809 // extract props
2810 // @ts-expect-error
2811 var propsData = extractPropsFromVNodeData(data, Ctor, tag);
2812 // functional component
2813 // @ts-expect-error
2814 if (isTrue(Ctor.options.functional)) {
2815 return createFunctionalComponent(Ctor, propsData, data, context, children);
2816 }
2817 // extract listeners, since these needs to be treated as
2818 // child component listeners instead of DOM listeners
2819 var listeners = data.on;
2820 // replace with listeners with .native modifier
2821 // so it gets processed during parent component patch.
2822 data.on = data.nativeOn;
2823 // @ts-expect-error
2824 if (isTrue(Ctor.options.abstract)) {
2825 // abstract components do not keep anything
2826 // other than props & listeners & slot
2827 // work around flow
2828 var slot = data.slot;
2829 data = {};
2830 if (slot) {
2831 data.slot = slot;
2832 }
2833 }
2834 // install component management hooks onto the placeholder node
2835 installComponentHooks(data);
2836 // return a placeholder vnode
2837 // @ts-expect-error
2838 var name = getComponentName(Ctor.options) || tag;
2839 var vnode = new VNode(
2840 // @ts-expect-error
2841 "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context,
2842 // @ts-expect-error
2843 { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);
2844 return vnode;
2845 }
2846 function createComponentInstanceForVnode(
2847 // we know it's MountedComponentVNode but flow doesn't
2848 vnode,
2849 // activeInstance in lifecycle state
2850 parent) {
2851 var options = {
2852 _isComponent: true,
2853 _parentVnode: vnode,
2854 parent: parent
2855 };
2856 // check inline-template render functions
2857 var inlineTemplate = vnode.data.inlineTemplate;
2858 if (isDef(inlineTemplate)) {
2859 options.render = inlineTemplate.render;
2860 options.staticRenderFns = inlineTemplate.staticRenderFns;
2861 }
2862 return new vnode.componentOptions.Ctor(options);
2863 }
2864 function installComponentHooks(data) {
2865 var hooks = data.hook || (data.hook = {});
2866 for (var i = 0; i < hooksToMerge.length; i++) {
2867 var key = hooksToMerge[i];
2868 var existing = hooks[key];
2869 var toMerge = componentVNodeHooks[key];
2870 // @ts-expect-error
2871 if (existing !== toMerge && !(existing && existing._merged)) {
2872 hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;
2873 }
2874 }
2875 }
2876 function mergeHook(f1, f2) {
2877 var merged = function (a, b) {
2878 // flow complains about extra args which is why we use any
2879 f1(a, b);
2880 f2(a, b);
2881 };
2882 merged._merged = true;
2883 return merged;
2884 }
2885 // transform component v-model info (value and callback) into
2886 // prop and event handler respectively.
2887 function transformModel(options, data) {
2888 var prop = (options.model && options.model.prop) || 'value';
2889 var event = (options.model && options.model.event) || 'input';
2890 (data.attrs || (data.attrs = {}))[prop] = data.model.value;
2891 var on = data.on || (data.on = {});
2892 var existing = on[event];
2893 var callback = data.model.callback;
2894 if (isDef(existing)) {
2895 if (isArray(existing)
2896 ? existing.indexOf(callback) === -1
2897 : existing !== callback) {
2898 on[event] = [callback].concat(existing);
2899 }
2900 }
2901 else {
2902 on[event] = callback;
2903 }
2904 }
2905
2906 var warn$2 = noop;
2907 var tip = noop;
2908 var generateComponentTrace; // work around flow check
2909 var formatComponentName;
2910 {
2911 var hasConsole_1 = typeof console !== 'undefined';
2912 var classifyRE_1 = /(?:^|[-_])(\w)/g;
2913 var classify_1 = function (str) {
2914 return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');
2915 };
2916 warn$2 = function (msg, vm) {
2917 if (vm === void 0) { vm = currentInstance; }
2918 var trace = vm ? generateComponentTrace(vm) : '';
2919 if (hasConsole_1 && !config.silent) {
2920 console.error("[Vue warn]: ".concat(msg).concat(trace));
2921 }
2922 };
2923 tip = function (msg, vm) {
2924 if (hasConsole_1 && !config.silent) {
2925 console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : ''));
2926 }
2927 };
2928 formatComponentName = function (vm, includeFile) {
2929 if (vm.$root === vm) {
2930 return '<Root>';
2931 }
2932 var options = isFunction(vm) && vm.cid != null
2933 ? vm.options
2934 : vm._isVue
2935 ? vm.$options || vm.constructor.options
2936 : vm;
2937 var name = getComponentName(options);
2938 var file = options.__file;
2939 if (!name && file) {
2940 var match = file.match(/([^/\\]+)\.vue$/);
2941 name = match && match[1];
2942 }
2943 return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") +
2944 (file && includeFile !== false ? " at ".concat(file) : ''));
2945 };
2946 var repeat_1 = function (str, n) {
2947 var res = '';
2948 while (n) {
2949 if (n % 2 === 1)
2950 res += str;
2951 if (n > 1)
2952 str += str;
2953 n >>= 1;
2954 }
2955 return res;
2956 };
2957 generateComponentTrace = function (vm) {
2958 if (vm._isVue && vm.$parent) {
2959 var tree = [];
2960 var currentRecursiveSequence = 0;
2961 while (vm) {
2962 if (tree.length > 0) {
2963 var last = tree[tree.length - 1];
2964 if (last.constructor === vm.constructor) {
2965 currentRecursiveSequence++;
2966 vm = vm.$parent;
2967 continue;
2968 }
2969 else if (currentRecursiveSequence > 0) {
2970 tree[tree.length - 1] = [last, currentRecursiveSequence];
2971 currentRecursiveSequence = 0;
2972 }
2973 }
2974 tree.push(vm);
2975 vm = vm.$parent;
2976 }
2977 return ('\n\nfound in\n\n' +
2978 tree
2979 .map(function (vm, i) {
2980 return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)
2981 ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)")
2982 : formatComponentName(vm));
2983 })
2984 .join('\n'));
2985 }
2986 else {
2987 return "\n\n(found in ".concat(formatComponentName(vm), ")");
2988 }
2989 };
2990 }
2991
2992 /**
2993 * Option overwriting strategies are functions that handle
2994 * how to merge a parent option value and a child option
2995 * value into the final value.
2996 */
2997 var strats = config.optionMergeStrategies;
2998 /**
2999 * Options with restrictions
3000 */
3001 {
3002 strats.el = strats.propsData = function (parent, child, vm, key) {
3003 if (!vm) {
3004 warn$2("option \"".concat(key, "\" can only be used during instance ") +
3005 'creation with the `new` keyword.');
3006 }
3007 return defaultStrat(parent, child);
3008 };
3009 }
3010 /**
3011 * Helper that recursively merges two data objects together.
3012 */
3013 function mergeData(to, from, recursive) {
3014 if (recursive === void 0) { recursive = true; }
3015 if (!from)
3016 return to;
3017 var key, toVal, fromVal;
3018 var keys = hasSymbol
3019 ? Reflect.ownKeys(from)
3020 : Object.keys(from);
3021 for (var i = 0; i < keys.length; i++) {
3022 key = keys[i];
3023 // in case the object is already observed...
3024 if (key === '__ob__')
3025 continue;
3026 toVal = to[key];
3027 fromVal = from[key];
3028 if (!recursive || !hasOwn(to, key)) {
3029 set(to, key, fromVal);
3030 }
3031 else if (toVal !== fromVal &&
3032 isPlainObject(toVal) &&
3033 isPlainObject(fromVal)) {
3034 mergeData(toVal, fromVal);
3035 }
3036 }
3037 return to;
3038 }
3039 /**
3040 * Data
3041 */
3042 function mergeDataOrFn(parentVal, childVal, vm) {
3043 if (!vm) {
3044 // in a Vue.extend merge, both should be functions
3045 if (!childVal) {
3046 return parentVal;
3047 }
3048 if (!parentVal) {
3049 return childVal;
3050 }
3051 // when parentVal & childVal are both present,
3052 // we need to return a function that returns the
3053 // merged result of both functions... no need to
3054 // check if parentVal is a function here because
3055 // it has to be a function to pass previous merges.
3056 return function mergedDataFn() {
3057 return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);
3058 };
3059 }
3060 else {
3061 return function mergedInstanceDataFn() {
3062 // instance merge
3063 var instanceData = isFunction(childVal)
3064 ? childVal.call(vm, vm)
3065 : childVal;
3066 var defaultData = isFunction(parentVal)
3067 ? parentVal.call(vm, vm)
3068 : parentVal;
3069 if (instanceData) {
3070 return mergeData(instanceData, defaultData);
3071 }
3072 else {
3073 return defaultData;
3074 }
3075 };
3076 }
3077 }
3078 strats.data = function (parentVal, childVal, vm) {
3079 if (!vm) {
3080 if (childVal && typeof childVal !== 'function') {
3081 warn$2('The "data" option should be a function ' +
3082 'that returns a per-instance value in component ' +
3083 'definitions.', vm);
3084 return parentVal;
3085 }
3086 return mergeDataOrFn(parentVal, childVal);
3087 }
3088 return mergeDataOrFn(parentVal, childVal, vm);
3089 };
3090 /**
3091 * Hooks and props are merged as arrays.
3092 */
3093 function mergeLifecycleHook(parentVal, childVal) {
3094 var res = childVal
3095 ? parentVal
3096 ? parentVal.concat(childVal)
3097 : isArray(childVal)
3098 ? childVal
3099 : [childVal]
3100 : parentVal;
3101 return res ? dedupeHooks(res) : res;
3102 }
3103 function dedupeHooks(hooks) {
3104 var res = [];
3105 for (var i = 0; i < hooks.length; i++) {
3106 if (res.indexOf(hooks[i]) === -1) {
3107 res.push(hooks[i]);
3108 }
3109 }
3110 return res;
3111 }
3112 LIFECYCLE_HOOKS.forEach(function (hook) {
3113 strats[hook] = mergeLifecycleHook;
3114 });
3115 /**
3116 * Assets
3117 *
3118 * When a vm is present (instance creation), we need to do
3119 * a three-way merge between constructor options, instance
3120 * options and parent options.
3121 */
3122 function mergeAssets(parentVal, childVal, vm, key) {
3123 var res = Object.create(parentVal || null);
3124 if (childVal) {
3125 assertObjectType(key, childVal, vm);
3126 return extend(res, childVal);
3127 }
3128 else {
3129 return res;
3130 }
3131 }
3132 ASSET_TYPES.forEach(function (type) {
3133 strats[type + 's'] = mergeAssets;
3134 });
3135 /**
3136 * Watchers.
3137 *
3138 * Watchers hashes should not overwrite one
3139 * another, so we merge them as arrays.
3140 */
3141 strats.watch = function (parentVal, childVal, vm, key) {
3142 // work around Firefox's Object.prototype.watch...
3143 //@ts-expect-error work around
3144 if (parentVal === nativeWatch)
3145 parentVal = undefined;
3146 //@ts-expect-error work around
3147 if (childVal === nativeWatch)
3148 childVal = undefined;
3149 /* istanbul ignore if */
3150 if (!childVal)
3151 return Object.create(parentVal || null);
3152 {
3153 assertObjectType(key, childVal, vm);
3154 }
3155 if (!parentVal)
3156 return childVal;
3157 var ret = {};
3158 extend(ret, parentVal);
3159 for (var key_1 in childVal) {
3160 var parent_1 = ret[key_1];
3161 var child = childVal[key_1];
3162 if (parent_1 && !isArray(parent_1)) {
3163 parent_1 = [parent_1];
3164 }
3165 ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];
3166 }
3167 return ret;
3168 };
3169 /**
3170 * Other object hashes.
3171 */
3172 strats.props =
3173 strats.methods =
3174 strats.inject =
3175 strats.computed =
3176 function (parentVal, childVal, vm, key) {
3177 if (childVal && true) {
3178 assertObjectType(key, childVal, vm);
3179 }
3180 if (!parentVal)
3181 return childVal;
3182 var ret = Object.create(null);
3183 extend(ret, parentVal);
3184 if (childVal)
3185 extend(ret, childVal);
3186 return ret;
3187 };
3188 strats.provide = function (parentVal, childVal) {
3189 if (!parentVal)
3190 return childVal;
3191 return function () {
3192 var ret = Object.create(null);
3193 mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal);
3194 if (childVal) {
3195 mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive
3196 );
3197 }
3198 return ret;
3199 };
3200 };
3201 /**
3202 * Default strategy.
3203 */
3204 var defaultStrat = function (parentVal, childVal) {
3205 return childVal === undefined ? parentVal : childVal;
3206 };
3207 /**
3208 * Validate component names
3209 */
3210 function checkComponents(options) {
3211 for (var key in options.components) {
3212 validateComponentName(key);
3213 }
3214 }
3215 function validateComponentName(name) {
3216 if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) {
3217 warn$2('Invalid component name: "' +
3218 name +
3219 '". Component names ' +
3220 'should conform to valid custom element name in html5 specification.');
3221 }
3222 if (isBuiltInTag(name) || config.isReservedTag(name)) {
3223 warn$2('Do not use built-in or reserved HTML elements as component ' +
3224 'id: ' +
3225 name);
3226 }
3227 }
3228 /**
3229 * Ensure all props option syntax are normalized into the
3230 * Object-based format.
3231 */
3232 function normalizeProps(options, vm) {
3233 var props = options.props;
3234 if (!props)
3235 return;
3236 var res = {};
3237 var i, val, name;
3238 if (isArray(props)) {
3239 i = props.length;
3240 while (i--) {
3241 val = props[i];
3242 if (typeof val === 'string') {
3243 name = camelize(val);
3244 res[name] = { type: null };
3245 }
3246 else {
3247 warn$2('props must be strings when using array syntax.');
3248 }
3249 }
3250 }
3251 else if (isPlainObject(props)) {
3252 for (var key in props) {
3253 val = props[key];
3254 name = camelize(key);
3255 res[name] = isPlainObject(val) ? val : { type: val };
3256 }
3257 }
3258 else {
3259 warn$2("Invalid value for option \"props\": expected an Array or an Object, " +
3260 "but got ".concat(toRawType(props), "."), vm);
3261 }
3262 options.props = res;
3263 }
3264 /**
3265 * Normalize all injections into Object-based format
3266 */
3267 function normalizeInject(options, vm) {
3268 var inject = options.inject;
3269 if (!inject)
3270 return;
3271 var normalized = (options.inject = {});
3272 if (isArray(inject)) {
3273 for (var i = 0; i < inject.length; i++) {
3274 normalized[inject[i]] = { from: inject[i] };
3275 }
3276 }
3277 else if (isPlainObject(inject)) {
3278 for (var key in inject) {
3279 var val = inject[key];
3280 normalized[key] = isPlainObject(val)
3281 ? extend({ from: key }, val)
3282 : { from: val };
3283 }
3284 }
3285 else {
3286 warn$2("Invalid value for option \"inject\": expected an Array or an Object, " +
3287 "but got ".concat(toRawType(inject), "."), vm);
3288 }
3289 }
3290 /**
3291 * Normalize raw function directives into object format.
3292 */
3293 function normalizeDirectives(options) {
3294 var dirs = options.directives;
3295 if (dirs) {
3296 for (var key in dirs) {
3297 var def = dirs[key];
3298 if (isFunction(def)) {
3299 dirs[key] = { bind: def, update: def };
3300 }
3301 }
3302 }
3303 }
3304 function assertObjectType(name, value, vm) {
3305 if (!isPlainObject(value)) {
3306 warn$2("Invalid value for option \"".concat(name, "\": expected an Object, ") +
3307 "but got ".concat(toRawType(value), "."), vm);
3308 }
3309 }
3310 /**
3311 * Merge two option objects into a new one.
3312 * Core utility used in both instantiation and inheritance.
3313 */
3314 function mergeOptions(parent, child, vm) {
3315 {
3316 checkComponents(child);
3317 }
3318 if (isFunction(child)) {
3319 // @ts-expect-error
3320 child = child.options;
3321 }
3322 normalizeProps(child, vm);
3323 normalizeInject(child, vm);
3324 normalizeDirectives(child);
3325 // Apply extends and mixins on the child options,
3326 // but only if it is a raw options object that isn't
3327 // the result of another mergeOptions call.
3328 // Only merged options has the _base property.
3329 if (!child._base) {
3330 if (child.extends) {
3331 parent = mergeOptions(parent, child.extends, vm);
3332 }
3333 if (child.mixins) {
3334 for (var i = 0, l = child.mixins.length; i < l; i++) {
3335 parent = mergeOptions(parent, child.mixins[i], vm);
3336 }
3337 }
3338 }
3339 var options = {};
3340 var key;
3341 for (key in parent) {
3342 mergeField(key);
3343 }
3344 for (key in child) {
3345 if (!hasOwn(parent, key)) {
3346 mergeField(key);
3347 }
3348 }
3349 function mergeField(key) {
3350 var strat = strats[key] || defaultStrat;
3351 options[key] = strat(parent[key], child[key], vm, key);
3352 }
3353 return options;
3354 }
3355 /**
3356 * Resolve an asset.
3357 * This function is used because child instances need access
3358 * to assets defined in its ancestor chain.
3359 */
3360 function resolveAsset(options, type, id, warnMissing) {
3361 /* istanbul ignore if */
3362 if (typeof id !== 'string') {
3363 return;
3364 }
3365 var assets = options[type];
3366 // check local registration variations first
3367 if (hasOwn(assets, id))
3368 return assets[id];
3369 var camelizedId = camelize(id);
3370 if (hasOwn(assets, camelizedId))
3371 return assets[camelizedId];
3372 var PascalCaseId = capitalize(camelizedId);
3373 if (hasOwn(assets, PascalCaseId))
3374 return assets[PascalCaseId];
3375 // fallback to prototype chain
3376 var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
3377 if (warnMissing && !res) {
3378 warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id);
3379 }
3380 return res;
3381 }
3382
3383 function validateProp(key, propOptions, propsData, vm) {
3384 var prop = propOptions[key];
3385 var absent = !hasOwn(propsData, key);
3386 var value = propsData[key];
3387 // boolean casting
3388 var booleanIndex = getTypeIndex(Boolean, prop.type);
3389 if (booleanIndex > -1) {
3390 if (absent && !hasOwn(prop, 'default')) {
3391 value = false;
3392 }
3393 else if (value === '' || value === hyphenate(key)) {
3394 // only cast empty string / same name to boolean if
3395 // boolean has higher priority
3396 var stringIndex = getTypeIndex(String, prop.type);
3397 if (stringIndex < 0 || booleanIndex < stringIndex) {
3398 value = true;
3399 }
3400 }
3401 }
3402 // check default value
3403 if (value === undefined) {
3404 value = getPropDefaultValue(vm, prop, key);
3405 // since the default value is a fresh copy,
3406 // make sure to observe it.
3407 var prevShouldObserve = shouldObserve;
3408 toggleObserving(true);
3409 observe(value);
3410 toggleObserving(prevShouldObserve);
3411 }
3412 {
3413 assertProp(prop, key, value, vm, absent);
3414 }
3415 return value;
3416 }
3417 /**
3418 * Get the default value of a prop.
3419 */
3420 function getPropDefaultValue(vm, prop, key) {
3421 // no default, return undefined
3422 if (!hasOwn(prop, 'default')) {
3423 return undefined;
3424 }
3425 var def = prop.default;
3426 // warn against non-factory defaults for Object & Array
3427 if (isObject(def)) {
3428 warn$2('Invalid default value for prop "' +
3429 key +
3430 '": ' +
3431 'Props with type Object/Array must use a factory function ' +
3432 'to return the default value.', vm);
3433 }
3434 // the raw prop value was also undefined from previous render,
3435 // return previous default value to avoid unnecessary watcher trigger
3436 if (vm &&
3437 vm.$options.propsData &&
3438 vm.$options.propsData[key] === undefined &&
3439 vm._props[key] !== undefined) {
3440 return vm._props[key];
3441 }
3442 // call factory function for non-Function types
3443 // a value is Function if its prototype is function even across different execution context
3444 return isFunction(def) && getType(prop.type) !== 'Function'
3445 ? def.call(vm)
3446 : def;
3447 }
3448 /**
3449 * Assert whether a prop is valid.
3450 */
3451 function assertProp(prop, name, value, vm, absent) {
3452 if (prop.required && absent) {
3453 warn$2('Missing required prop: "' + name + '"', vm);
3454 return;
3455 }
3456 if (value == null && !prop.required) {
3457 return;
3458 }
3459 var type = prop.type;
3460 var valid = !type || type === true;
3461 var expectedTypes = [];
3462 if (type) {
3463 if (!isArray(type)) {
3464 type = [type];
3465 }
3466 for (var i = 0; i < type.length && !valid; i++) {
3467 var assertedType = assertType(value, type[i], vm);
3468 expectedTypes.push(assertedType.expectedType || '');
3469 valid = assertedType.valid;
3470 }
3471 }
3472 var haveExpectedTypes = expectedTypes.some(function (t) { return t; });
3473 if (!valid && haveExpectedTypes) {
3474 warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm);
3475 return;
3476 }
3477 var validator = prop.validator;
3478 if (validator) {
3479 if (!validator(value)) {
3480 warn$2('Invalid prop: custom validator check failed for prop "' + name + '".', vm);
3481 }
3482 }
3483 }
3484 var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;
3485 function assertType(value, type, vm) {
3486 var valid;
3487 var expectedType = getType(type);
3488 if (simpleCheckRE.test(expectedType)) {
3489 var t = typeof value;
3490 valid = t === expectedType.toLowerCase();
3491 // for primitive wrapper objects
3492 if (!valid && t === 'object') {
3493 valid = value instanceof type;
3494 }
3495 }
3496 else if (expectedType === 'Object') {
3497 valid = isPlainObject(value);
3498 }
3499 else if (expectedType === 'Array') {
3500 valid = isArray(value);
3501 }
3502 else {
3503 try {
3504 valid = value instanceof type;
3505 }
3506 catch (e) {
3507 warn$2('Invalid prop type: "' + String(type) + '" is not a constructor', vm);
3508 valid = false;
3509 }
3510 }
3511 return {
3512 valid: valid,
3513 expectedType: expectedType
3514 };
3515 }
3516 var functionTypeCheckRE = /^\s*function (\w+)/;
3517 /**
3518 * Use function string name to check built-in types,
3519 * because a simple equality check will fail when running
3520 * across different vms / iframes.
3521 */
3522 function getType(fn) {
3523 var match = fn && fn.toString().match(functionTypeCheckRE);
3524 return match ? match[1] : '';
3525 }
3526 function isSameType(a, b) {
3527 return getType(a) === getType(b);
3528 }
3529 function getTypeIndex(type, expectedTypes) {
3530 if (!isArray(expectedTypes)) {
3531 return isSameType(expectedTypes, type) ? 0 : -1;
3532 }
3533 for (var i = 0, len = expectedTypes.length; i < len; i++) {
3534 if (isSameType(expectedTypes[i], type)) {
3535 return i;
3536 }
3537 }
3538 return -1;
3539 }
3540 function getInvalidTypeMessage(name, value, expectedTypes) {
3541 var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") +
3542 " Expected ".concat(expectedTypes.map(capitalize).join(', '));
3543 var expectedType = expectedTypes[0];
3544 var receivedType = toRawType(value);
3545 // check if we need to specify expected value
3546 if (expectedTypes.length === 1 &&
3547 isExplicable(expectedType) &&
3548 isExplicable(typeof value) &&
3549 !isBoolean(expectedType, receivedType)) {
3550 message += " with value ".concat(styleValue(value, expectedType));
3551 }
3552 message += ", got ".concat(receivedType, " ");
3553 // check if we need to specify received value
3554 if (isExplicable(receivedType)) {
3555 message += "with value ".concat(styleValue(value, receivedType), ".");
3556 }
3557 return message;
3558 }
3559 function styleValue(value, type) {
3560 if (type === 'String') {
3561 return "\"".concat(value, "\"");
3562 }
3563 else if (type === 'Number') {
3564 return "".concat(Number(value));
3565 }
3566 else {
3567 return "".concat(value);
3568 }
3569 }
3570 var EXPLICABLE_TYPES = ['string', 'number', 'boolean'];
3571 function isExplicable(value) {
3572 return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });
3573 }
3574 function isBoolean() {
3575 var args = [];
3576 for (var _i = 0; _i < arguments.length; _i++) {
3577 args[_i] = arguments[_i];
3578 }
3579 return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });
3580 }
3581
3582 // these are reserved for web because they are directly compiled away
3583 // during template compilation
3584 makeMap('style,class');
3585 // attributes that should be using props for binding
3586 var acceptValue = makeMap('input,textarea,option,select,progress');
3587 var mustUseProp = function (tag, type, attr) {
3588 return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||
3589 (attr === 'selected' && tag === 'option') ||
3590 (attr === 'checked' && tag === 'input') ||
3591 (attr === 'muted' && tag === 'video'));
3592 };
3593 var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
3594 makeMap('events,caret,typing,plaintext-only');
3595 var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
3596 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
3597 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
3598 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
3599 'required,reversed,scoped,seamless,selected,sortable,' +
3600 'truespeed,typemustmatch,visible');
3601
3602 var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +
3603 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
3604 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
3605 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
3606 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
3607 'embed,object,param,source,canvas,script,noscript,del,ins,' +
3608 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
3609 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
3610 'output,progress,select,textarea,' +
3611 'details,dialog,menu,menuitem,summary,' +
3612 'content,element,shadow,template,blockquote,iframe,tfoot');
3613 // this map is intentionally selective, only covering SVG elements that may
3614 // contain child elements.
3615 var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
3616 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
3617 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);
3618 var isPreTag = function (tag) { return tag === 'pre'; };
3619 var isReservedTag = function (tag) {
3620 return isHTMLTag(tag) || isSVG(tag);
3621 };
3622 function getTagNamespace(tag) {
3623 if (isSVG(tag)) {
3624 return 'svg';
3625 }
3626 // basic support for MathML
3627 // note it doesn't support other MathML elements being component roots
3628 if (tag === 'math') {
3629 return 'math';
3630 }
3631 }
3632 makeMap('text,number,password,search,email,tel,url');
3633
3634 var validDivisionCharRE = /[\w).+\-_$\]]/;
3635 function parseFilters(exp) {
3636 var inSingle = false;
3637 var inDouble = false;
3638 var inTemplateString = false;
3639 var inRegex = false;
3640 var curly = 0;
3641 var square = 0;
3642 var paren = 0;
3643 var lastFilterIndex = 0;
3644 var c, prev, i, expression, filters;
3645 for (i = 0; i < exp.length; i++) {
3646 prev = c;
3647 c = exp.charCodeAt(i);
3648 if (inSingle) {
3649 if (c === 0x27 && prev !== 0x5c)
3650 inSingle = false;
3651 }
3652 else if (inDouble) {
3653 if (c === 0x22 && prev !== 0x5c)
3654 inDouble = false;
3655 }
3656 else if (inTemplateString) {
3657 if (c === 0x60 && prev !== 0x5c)
3658 inTemplateString = false;
3659 }
3660 else if (inRegex) {
3661 if (c === 0x2f && prev !== 0x5c)
3662 inRegex = false;
3663 }
3664 else if (c === 0x7c && // pipe
3665 exp.charCodeAt(i + 1) !== 0x7c &&
3666 exp.charCodeAt(i - 1) !== 0x7c &&
3667 !curly &&
3668 !square &&
3669 !paren) {
3670 if (expression === undefined) {
3671 // first filter, end of expression
3672 lastFilterIndex = i + 1;
3673 expression = exp.slice(0, i).trim();
3674 }
3675 else {
3676 pushFilter();
3677 }
3678 }
3679 else {
3680 switch (c) {
3681 case 0x22:
3682 inDouble = true;
3683 break; // "
3684 case 0x27:
3685 inSingle = true;
3686 break; // '
3687 case 0x60:
3688 inTemplateString = true;
3689 break; // `
3690 case 0x28:
3691 paren++;
3692 break; // (
3693 case 0x29:
3694 paren--;
3695 break; // )
3696 case 0x5b:
3697 square++;
3698 break; // [
3699 case 0x5d:
3700 square--;
3701 break; // ]
3702 case 0x7b:
3703 curly++;
3704 break; // {
3705 case 0x7d:
3706 curly--;
3707 break; // }
3708 }
3709 if (c === 0x2f) {
3710 // /
3711 var j = i - 1;
3712 var p
3713 // find first non-whitespace prev char
3714 = void 0;
3715 // find first non-whitespace prev char
3716 for (; j >= 0; j--) {
3717 p = exp.charAt(j);
3718 if (p !== ' ')
3719 break;
3720 }
3721 if (!p || !validDivisionCharRE.test(p)) {
3722 inRegex = true;
3723 }
3724 }
3725 }
3726 }
3727 if (expression === undefined) {
3728 expression = exp.slice(0, i).trim();
3729 }
3730 else if (lastFilterIndex !== 0) {
3731 pushFilter();
3732 }
3733 function pushFilter() {
3734 (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
3735 lastFilterIndex = i + 1;
3736 }
3737 if (filters) {
3738 for (i = 0; i < filters.length; i++) {
3739 expression = wrapFilter(expression, filters[i]);
3740 }
3741 }
3742 return expression;
3743 }
3744 function wrapFilter(exp, filter) {
3745 var i = filter.indexOf('(');
3746 if (i < 0) {
3747 // _f: resolveFilter
3748 return "_f(\"".concat(filter, "\")(").concat(exp, ")");
3749 }
3750 else {
3751 var name_1 = filter.slice(0, i);
3752 var args = filter.slice(i + 1);
3753 return "_f(\"".concat(name_1, "\")(").concat(exp).concat(args !== ')' ? ',' + args : args);
3754 }
3755 }
3756
3757 var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;
3758 var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
3759 var buildRegex = cached(function (delimiters) {
3760 var open = delimiters[0].replace(regexEscapeRE, '\\$&');
3761 var close = delimiters[1].replace(regexEscapeRE, '\\$&');
3762 return new RegExp(open + '((?:.|\\n)+?)' + close, 'g');
3763 });
3764 function parseText(text, delimiters) {
3765 //@ts-expect-error
3766 var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
3767 if (!tagRE.test(text)) {
3768 return;
3769 }
3770 var tokens = [];
3771 var rawTokens = [];
3772 var lastIndex = (tagRE.lastIndex = 0);
3773 var match, index, tokenValue;
3774 while ((match = tagRE.exec(text))) {
3775 index = match.index;
3776 // push text token
3777 if (index > lastIndex) {
3778 rawTokens.push((tokenValue = text.slice(lastIndex, index)));
3779 tokens.push(JSON.stringify(tokenValue));
3780 }
3781 // tag token
3782 var exp = parseFilters(match[1].trim());
3783 tokens.push("_s(".concat(exp, ")"));
3784 rawTokens.push({ '@binding': exp });
3785 lastIndex = index + match[0].length;
3786 }
3787 if (lastIndex < text.length) {
3788 rawTokens.push((tokenValue = text.slice(lastIndex)));
3789 tokens.push(JSON.stringify(tokenValue));
3790 }
3791 return {
3792 expression: tokens.join('+'),
3793 tokens: rawTokens
3794 };
3795 }
3796
3797 /* eslint-disable no-unused-vars */
3798 function baseWarn(msg, range) {
3799 console.error("[Vue compiler]: ".concat(msg));
3800 }
3801 /* eslint-enable no-unused-vars */
3802 function pluckModuleFunction(modules, key) {
3803 return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : [];
3804 }
3805 function addProp(el, name, value, range, dynamic) {
3806 (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
3807 el.plain = false;
3808 }
3809 function addAttr(el, name, value, range, dynamic) {
3810 var attrs = dynamic
3811 ? el.dynamicAttrs || (el.dynamicAttrs = [])
3812 : el.attrs || (el.attrs = []);
3813 attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
3814 el.plain = false;
3815 }
3816 // add a raw attr (use this in preTransforms)
3817 function addRawAttr(el, name, value, range) {
3818 el.attrsMap[name] = value;
3819 el.attrsList.push(rangeSetItem({ name: name, value: value }, range));
3820 }
3821 function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {
3822 (el.directives || (el.directives = [])).push(rangeSetItem({
3823 name: name,
3824 rawName: rawName,
3825 value: value,
3826 arg: arg,
3827 isDynamicArg: isDynamicArg,
3828 modifiers: modifiers
3829 }, range));
3830 el.plain = false;
3831 }
3832 function prependModifierMarker(symbol, name, dynamic) {
3833 return dynamic ? "_p(".concat(name, ",\"").concat(symbol, "\")") : symbol + name; // mark the event as captured
3834 }
3835 function addHandler(el, name, value, modifiers, important, warn, range, dynamic) {
3836 modifiers = modifiers || emptyObject;
3837 // warn prevent and passive modifier
3838 /* istanbul ignore if */
3839 if (warn && modifiers.prevent && modifiers.passive) {
3840 warn("passive and prevent can't be used together. " +
3841 "Passive handler can't prevent default event.", range);
3842 }
3843 // normalize click.right and click.middle since they don't actually fire
3844 // this is technically browser-specific, but at least for now browsers are
3845 // the only target envs that have right/middle clicks.
3846 if (modifiers.right) {
3847 if (dynamic) {
3848 name = "(".concat(name, ")==='click'?'contextmenu':(").concat(name, ")");
3849 }
3850 else if (name === 'click') {
3851 name = 'contextmenu';
3852 delete modifiers.right;
3853 }
3854 }
3855 else if (modifiers.middle) {
3856 if (dynamic) {
3857 name = "(".concat(name, ")==='click'?'mouseup':(").concat(name, ")");
3858 }
3859 else if (name === 'click') {
3860 name = 'mouseup';
3861 }
3862 }
3863 // check capture modifier
3864 if (modifiers.capture) {
3865 delete modifiers.capture;
3866 name = prependModifierMarker('!', name, dynamic);
3867 }
3868 if (modifiers.once) {
3869 delete modifiers.once;
3870 name = prependModifierMarker('~', name, dynamic);
3871 }
3872 /* istanbul ignore if */
3873 if (modifiers.passive) {
3874 delete modifiers.passive;
3875 name = prependModifierMarker('&', name, dynamic);
3876 }
3877 var events;
3878 if (modifiers.native) {
3879 delete modifiers.native;
3880 events = el.nativeEvents || (el.nativeEvents = {});
3881 }
3882 else {
3883 events = el.events || (el.events = {});
3884 }
3885 var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);
3886 if (modifiers !== emptyObject) {
3887 newHandler.modifiers = modifiers;
3888 }
3889 var handlers = events[name];
3890 /* istanbul ignore if */
3891 if (Array.isArray(handlers)) {
3892 important ? handlers.unshift(newHandler) : handlers.push(newHandler);
3893 }
3894 else if (handlers) {
3895 events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
3896 }
3897 else {
3898 events[name] = newHandler;
3899 }
3900 el.plain = false;
3901 }
3902 function getRawBindingAttr(el, name) {
3903 return (el.rawAttrsMap[':' + name] ||
3904 el.rawAttrsMap['v-bind:' + name] ||
3905 el.rawAttrsMap[name]);
3906 }
3907 function getBindingAttr(el, name, getStatic) {
3908 var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);
3909 if (dynamicValue != null) {
3910 return parseFilters(dynamicValue);
3911 }
3912 else if (getStatic !== false) {
3913 var staticValue = getAndRemoveAttr(el, name);
3914 if (staticValue != null) {
3915 return JSON.stringify(staticValue);
3916 }
3917 }
3918 }
3919 // note: this only removes the attr from the Array (attrsList) so that it
3920 // doesn't get processed by processAttrs.
3921 // By default it does NOT remove it from the map (attrsMap) because the map is
3922 // needed during codegen.
3923 function getAndRemoveAttr(el, name, removeFromMap) {
3924 var val;
3925 if ((val = el.attrsMap[name]) != null) {
3926 var list = el.attrsList;
3927 for (var i = 0, l = list.length; i < l; i++) {
3928 if (list[i].name === name) {
3929 list.splice(i, 1);
3930 break;
3931 }
3932 }
3933 }
3934 if (removeFromMap) {
3935 delete el.attrsMap[name];
3936 }
3937 return val;
3938 }
3939 function getAndRemoveAttrByRegex(el, name) {
3940 var list = el.attrsList;
3941 for (var i = 0, l = list.length; i < l; i++) {
3942 var attr = list[i];
3943 if (name.test(attr.name)) {
3944 list.splice(i, 1);
3945 return attr;
3946 }
3947 }
3948 }
3949 function rangeSetItem(item, range) {
3950 if (range) {
3951 if (range.start != null) {
3952 item.start = range.start;
3953 }
3954 if (range.end != null) {
3955 item.end = range.end;
3956 }
3957 }
3958 return item;
3959 }
3960
3961 function transformNode$1(el, options) {
3962 var warn = options.warn || baseWarn;
3963 var staticClass = getAndRemoveAttr(el, 'class');
3964 if (staticClass) {
3965 var res = parseText(staticClass, options.delimiters);
3966 if (res) {
3967 warn("class=\"".concat(staticClass, "\": ") +
3968 'Interpolation inside attributes has been removed. ' +
3969 'Use v-bind or the colon shorthand instead. For example, ' +
3970 'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']);
3971 }
3972 }
3973 if (staticClass) {
3974 el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim());
3975 }
3976 var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
3977 if (classBinding) {
3978 el.classBinding = classBinding;
3979 }
3980 }
3981 function genData$2(el) {
3982 var data = '';
3983 if (el.staticClass) {
3984 data += "staticClass:".concat(el.staticClass, ",");
3985 }
3986 if (el.classBinding) {
3987 data += "class:".concat(el.classBinding, ",");
3988 }
3989 return data;
3990 }
3991 var klass = {
3992 staticKeys: ['staticClass'],
3993 transformNode: transformNode$1,
3994 genData: genData$2
3995 };
3996
3997 var parseStyleText = cached(function (cssText) {
3998 var res = {};
3999 var listDelimiter = /;(?![^(]*\))/g;
4000 var propertyDelimiter = /:(.+)/;
4001 cssText.split(listDelimiter).forEach(function (item) {
4002 if (item) {
4003 var tmp = item.split(propertyDelimiter);
4004 tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
4005 }
4006 });
4007 return res;
4008 });
4009
4010 function transformNode(el, options) {
4011 var warn = options.warn || baseWarn;
4012 var staticStyle = getAndRemoveAttr(el, 'style');
4013 if (staticStyle) {
4014 /* istanbul ignore if */
4015 {
4016 var res = parseText(staticStyle, options.delimiters);
4017 if (res) {
4018 warn("style=\"".concat(staticStyle, "\": ") +
4019 'Interpolation inside attributes has been removed. ' +
4020 'Use v-bind or the colon shorthand instead. For example, ' +
4021 'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']);
4022 }
4023 }
4024 el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
4025 }
4026 var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
4027 if (styleBinding) {
4028 el.styleBinding = styleBinding;
4029 }
4030 }
4031 function genData$1(el) {
4032 var data = '';
4033 if (el.staticStyle) {
4034 data += "staticStyle:".concat(el.staticStyle, ",");
4035 }
4036 if (el.styleBinding) {
4037 data += "style:(".concat(el.styleBinding, "),");
4038 }
4039 return data;
4040 }
4041 var style = {
4042 staticKeys: ['staticStyle'],
4043 transformNode: transformNode,
4044 genData: genData$1
4045 };
4046
4047 var he$1 = {exports: {}};
4048
4049 /*! https://mths.be/he v1.2.0 by @mathias | MIT license */
4050
4051 (function (module, exports) {
4052 (function(root) {
4053
4054 // Detect free variables `exports`.
4055 var freeExports = exports;
4056
4057 // Detect free variable `module`.
4058 var freeModule = module &&
4059 module.exports == freeExports && module;
4060
4061 // Detect free variable `global`, from Node.js or Browserified code,
4062 // and use it as `root`.
4063 var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
4064 if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
4065 root = freeGlobal;
4066 }
4067
4068 /*--------------------------------------------------------------------------*/
4069
4070 // All astral symbols.
4071 var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
4072 // All ASCII symbols (not just printable ASCII) except those listed in the
4073 // first column of the overrides table.
4074 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
4075 var regexAsciiWhitelist = /[\x01-\x7F]/g;
4076 // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
4077 // code points listed in the first column of the overrides table on
4078 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
4079 var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
4080
4081 var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
4082 var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};
4083
4084 var regexEscape = /["&'<>`]/g;
4085 var escapeMap = {
4086 '"': '&quot;',
4087 '&': '&amp;',
4088 '\'': '&#x27;',
4089 '<': '&lt;',
4090 // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
4091 // following is not strictly necessary unless it’s part of a tag or an
4092 // unquoted attribute value. We’re only escaping it to support those
4093 // situations, and for XML support.
4094 '>': '&gt;',
4095 // In Internet Explorer ≤ 8, the backtick character can be used
4096 // to break out of (un)quoted attribute values or HTML comments.
4097 // See http://html5sec.org/#102, http://html5sec.org/#108, and
4098 // http://html5sec.org/#133.
4099 '`': '&#x60;'
4100 };
4101
4102 var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
4103 var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
4104 var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
4105 var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
4106 var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
4107 var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
4108 var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
4109
4110 /*--------------------------------------------------------------------------*/
4111
4112 var stringFromCharCode = String.fromCharCode;
4113
4114 var object = {};
4115 var hasOwnProperty = object.hasOwnProperty;
4116 var has = function(object, propertyName) {
4117 return hasOwnProperty.call(object, propertyName);
4118 };
4119
4120 var contains = function(array, value) {
4121 var index = -1;
4122 var length = array.length;
4123 while (++index < length) {
4124 if (array[index] == value) {
4125 return true;
4126 }
4127 }
4128 return false;
4129 };
4130
4131 var merge = function(options, defaults) {
4132 if (!options) {
4133 return defaults;
4134 }
4135 var result = {};
4136 var key;
4137 for (key in defaults) {
4138 // A `hasOwnProperty` check is not needed here, since only recognized
4139 // option names are used anyway. Any others are ignored.
4140 result[key] = has(options, key) ? options[key] : defaults[key];
4141 }
4142 return result;
4143 };
4144
4145 // Modified version of `ucs2encode`; see https://mths.be/punycode.
4146 var codePointToSymbol = function(codePoint, strict) {
4147 var output = '';
4148 if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
4149 // See issue #4:
4150 // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
4151 // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
4152 // REPLACEMENT CHARACTER.”
4153 if (strict) {
4154 parseError('character reference outside the permissible Unicode range');
4155 }
4156 return '\uFFFD';
4157 }
4158 if (has(decodeMapNumeric, codePoint)) {
4159 if (strict) {
4160 parseError('disallowed character reference');
4161 }
4162 return decodeMapNumeric[codePoint];
4163 }
4164 if (strict && contains(invalidReferenceCodePoints, codePoint)) {
4165 parseError('disallowed character reference');
4166 }
4167 if (codePoint > 0xFFFF) {
4168 codePoint -= 0x10000;
4169 output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
4170 codePoint = 0xDC00 | codePoint & 0x3FF;
4171 }
4172 output += stringFromCharCode(codePoint);
4173 return output;
4174 };
4175
4176 var hexEscape = function(codePoint) {
4177 return '&#x' + codePoint.toString(16).toUpperCase() + ';';
4178 };
4179
4180 var decEscape = function(codePoint) {
4181 return '&#' + codePoint + ';';
4182 };
4183
4184 var parseError = function(message) {
4185 throw Error('Parse error: ' + message);
4186 };
4187
4188 /*--------------------------------------------------------------------------*/
4189
4190 var encode = function(string, options) {
4191 options = merge(options, encode.options);
4192 var strict = options.strict;
4193 if (strict && regexInvalidRawCodePoint.test(string)) {
4194 parseError('forbidden code point');
4195 }
4196 var encodeEverything = options.encodeEverything;
4197 var useNamedReferences = options.useNamedReferences;
4198 var allowUnsafeSymbols = options.allowUnsafeSymbols;
4199 var escapeCodePoint = options.decimal ? decEscape : hexEscape;
4200
4201 var escapeBmpSymbol = function(symbol) {
4202 return escapeCodePoint(symbol.charCodeAt(0));
4203 };
4204
4205 if (encodeEverything) {
4206 // Encode ASCII symbols.
4207 string = string.replace(regexAsciiWhitelist, function(symbol) {
4208 // Use named references if requested & possible.
4209 if (useNamedReferences && has(encodeMap, symbol)) {
4210 return '&' + encodeMap[symbol] + ';';
4211 }
4212 return escapeBmpSymbol(symbol);
4213 });
4214 // Shorten a few escapes that represent two symbols, of which at least one
4215 // is within the ASCII range.
4216 if (useNamedReferences) {
4217 string = string
4218 .replace(/&gt;\u20D2/g, '&nvgt;')
4219 .replace(/&lt;\u20D2/g, '&nvlt;')
4220 .replace(/&#x66;&#x6A;/g, '&fjlig;');
4221 }
4222 // Encode non-ASCII symbols.
4223 if (useNamedReferences) {
4224 // Encode non-ASCII symbols that can be replaced with a named reference.
4225 string = string.replace(regexEncodeNonAscii, function(string) {
4226 // Note: there is no need to check `has(encodeMap, string)` here.
4227 return '&' + encodeMap[string] + ';';
4228 });
4229 }
4230 // Note: any remaining non-ASCII symbols are handled outside of the `if`.
4231 } else if (useNamedReferences) {
4232 // Apply named character references.
4233 // Encode `<>"'&` using named character references.
4234 if (!allowUnsafeSymbols) {
4235 string = string.replace(regexEscape, function(string) {
4236 return '&' + encodeMap[string] + ';'; // no need to check `has()` here
4237 });
4238 }
4239 // Shorten escapes that represent two symbols, of which at least one is
4240 // `<>"'&`.
4241 string = string
4242 .replace(/&gt;\u20D2/g, '&nvgt;')
4243 .replace(/&lt;\u20D2/g, '&nvlt;');
4244 // Encode non-ASCII symbols that can be replaced with a named reference.
4245 string = string.replace(regexEncodeNonAscii, function(string) {
4246 // Note: there is no need to check `has(encodeMap, string)` here.
4247 return '&' + encodeMap[string] + ';';
4248 });
4249 } else if (!allowUnsafeSymbols) {
4250 // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
4251 // using named character references.
4252 string = string.replace(regexEscape, escapeBmpSymbol);
4253 }
4254 return string
4255 // Encode astral symbols.
4256 .replace(regexAstralSymbols, function($0) {
4257 // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
4258 var high = $0.charCodeAt(0);
4259 var low = $0.charCodeAt(1);
4260 var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
4261 return escapeCodePoint(codePoint);
4262 })
4263 // Encode any remaining BMP symbols that are not printable ASCII symbols
4264 // using a hexadecimal escape.
4265 .replace(regexBmpWhitelist, escapeBmpSymbol);
4266 };
4267 // Expose default options (so they can be overridden globally).
4268 encode.options = {
4269 'allowUnsafeSymbols': false,
4270 'encodeEverything': false,
4271 'strict': false,
4272 'useNamedReferences': false,
4273 'decimal' : false
4274 };
4275
4276 var decode = function(html, options) {
4277 options = merge(options, decode.options);
4278 var strict = options.strict;
4279 if (strict && regexInvalidEntity.test(html)) {
4280 parseError('malformed character reference');
4281 }
4282 return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {
4283 var codePoint;
4284 var semicolon;
4285 var decDigits;
4286 var hexDigits;
4287 var reference;
4288 var next;
4289
4290 if ($1) {
4291 reference = $1;
4292 // Note: there is no need to check `has(decodeMap, reference)`.
4293 return decodeMap[reference];
4294 }
4295
4296 if ($2) {
4297 // Decode named character references without trailing `;`, e.g. `&amp`.
4298 // This is only a parse error if it gets converted to `&`, or if it is
4299 // followed by `=` in an attribute context.
4300 reference = $2;
4301 next = $3;
4302 if (next && options.isAttributeValue) {
4303 if (strict && next == '=') {
4304 parseError('`&` did not start a character reference');
4305 }
4306 return $0;
4307 } else {
4308 if (strict) {
4309 parseError(
4310 'named character reference was not terminated by a semicolon'
4311 );
4312 }
4313 // Note: there is no need to check `has(decodeMapLegacy, reference)`.
4314 return decodeMapLegacy[reference] + (next || '');
4315 }
4316 }
4317
4318 if ($4) {
4319 // Decode decimal escapes, e.g. `&#119558;`.
4320 decDigits = $4;
4321 semicolon = $5;
4322 if (strict && !semicolon) {
4323 parseError('character reference was not terminated by a semicolon');
4324 }
4325 codePoint = parseInt(decDigits, 10);
4326 return codePointToSymbol(codePoint, strict);
4327 }
4328
4329 if ($6) {
4330 // Decode hexadecimal escapes, e.g. `&#x1D306;`.
4331 hexDigits = $6;
4332 semicolon = $7;
4333 if (strict && !semicolon) {
4334 parseError('character reference was not terminated by a semicolon');
4335 }
4336 codePoint = parseInt(hexDigits, 16);
4337 return codePointToSymbol(codePoint, strict);
4338 }
4339
4340 // If we’re still here, `if ($7)` is implied; it’s an ambiguous
4341 // ampersand for sure. https://mths.be/notes/ambiguous-ampersands
4342 if (strict) {
4343 parseError(
4344 'named character reference was not terminated by a semicolon'
4345 );
4346 }
4347 return $0;
4348 });
4349 };
4350 // Expose default options (so they can be overridden globally).
4351 decode.options = {
4352 'isAttributeValue': false,
4353 'strict': false
4354 };
4355
4356 var escape = function(string) {
4357 return string.replace(regexEscape, function($0) {
4358 // Note: there is no need to check `has(escapeMap, $0)` here.
4359 return escapeMap[$0];
4360 });
4361 };
4362
4363 /*--------------------------------------------------------------------------*/
4364
4365 var he = {
4366 'version': '1.2.0',
4367 'encode': encode,
4368 'decode': decode,
4369 'escape': escape,
4370 'unescape': decode
4371 };
4372
4373 // Some AMD build optimizers, like r.js, check for specific condition patterns
4374 // like the following:
4375 if (freeExports && !freeExports.nodeType) {
4376 if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
4377 freeModule.exports = he;
4378 } else { // in Narwhal or RingoJS v0.7.0-
4379 for (var key in he) {
4380 has(he, key) && (freeExports[key] = he[key]);
4381 }
4382 }
4383 } else { // in Rhino or a web browser
4384 root.he = he;
4385 }
4386
4387 }(commonjsGlobal));
4388 } (he$1, he$1.exports));
4389
4390 var he = he$1.exports;
4391
4392 /**
4393 * Cross-platform code generation for component v-model
4394 */
4395 function genComponentModel(el, value, modifiers) {
4396 var _a = modifiers || {}, number = _a.number, trim = _a.trim;
4397 var baseValueExpression = '$$v';
4398 var valueExpression = baseValueExpression;
4399 if (trim) {
4400 valueExpression =
4401 "(typeof ".concat(baseValueExpression, " === 'string'") +
4402 "? ".concat(baseValueExpression, ".trim()") +
4403 ": ".concat(baseValueExpression, ")");
4404 }
4405 if (number) {
4406 valueExpression = "_n(".concat(valueExpression, ")");
4407 }
4408 var assignment = genAssignmentCode(value, valueExpression);
4409 el.model = {
4410 value: "(".concat(value, ")"),
4411 expression: JSON.stringify(value),
4412 callback: "function (".concat(baseValueExpression, ") {").concat(assignment, "}")
4413 };
4414 }
4415 /**
4416 * Cross-platform codegen helper for generating v-model value assignment code.
4417 */
4418 function genAssignmentCode(value, assignment) {
4419 var res = parseModel(value);
4420 if (res.key === null) {
4421 return "".concat(value, "=").concat(assignment);
4422 }
4423 else {
4424 return "$set(".concat(res.exp, ", ").concat(res.key, ", ").concat(assignment, ")");
4425 }
4426 }
4427 /**
4428 * Parse a v-model expression into a base path and a final key segment.
4429 * Handles both dot-path and possible square brackets.
4430 *
4431 * Possible cases:
4432 *
4433 * - test
4434 * - test[key]
4435 * - test[test1[key]]
4436 * - test["a"][key]
4437 * - xxx.test[a[a].test1[key]]
4438 * - test.xxx.a["asa"][test1[key]]
4439 *
4440 */
4441 var len, str, chr, index, expressionPos, expressionEndPos;
4442 function parseModel(val) {
4443 // Fix https://github.com/vuejs/vue/pull/7730
4444 // allow v-model="obj.val " (trailing whitespace)
4445 val = val.trim();
4446 len = val.length;
4447 if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
4448 index = val.lastIndexOf('.');
4449 if (index > -1) {
4450 return {
4451 exp: val.slice(0, index),
4452 key: '"' + val.slice(index + 1) + '"'
4453 };
4454 }
4455 else {
4456 return {
4457 exp: val,
4458 key: null
4459 };
4460 }
4461 }
4462 str = val;
4463 index = expressionPos = expressionEndPos = 0;
4464 while (!eof()) {
4465 chr = next();
4466 /* istanbul ignore if */
4467 if (isStringStart(chr)) {
4468 parseString(chr);
4469 }
4470 else if (chr === 0x5b) {
4471 parseBracket(chr);
4472 }
4473 }
4474 return {
4475 exp: val.slice(0, expressionPos),
4476 key: val.slice(expressionPos + 1, expressionEndPos)
4477 };
4478 }
4479 function next() {
4480 return str.charCodeAt(++index);
4481 }
4482 function eof() {
4483 return index >= len;
4484 }
4485 function isStringStart(chr) {
4486 return chr === 0x22 || chr === 0x27;
4487 }
4488 function parseBracket(chr) {
4489 var inBracket = 1;
4490 expressionPos = index;
4491 while (!eof()) {
4492 chr = next();
4493 if (isStringStart(chr)) {
4494 parseString(chr);
4495 continue;
4496 }
4497 if (chr === 0x5b)
4498 inBracket++;
4499 if (chr === 0x5d)
4500 inBracket--;
4501 if (inBracket === 0) {
4502 expressionEndPos = index;
4503 break;
4504 }
4505 }
4506 }
4507 function parseString(chr) {
4508 var stringQuote = chr;
4509 while (!eof()) {
4510 chr = next();
4511 if (chr === stringQuote) {
4512 break;
4513 }
4514 }
4515 }
4516
4517 var onRE = /^@|^v-on:/;
4518 var dirRE = /^v-|^@|^:|^#/;
4519 var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
4520 var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
4521 var stripParensRE = /^\(|\)$/g;
4522 var dynamicArgRE = /^\[.*\]$/;
4523 var argRE = /:(.*)$/;
4524 var bindRE = /^:|^\.|^v-bind:/;
4525 var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g;
4526 var slotRE = /^v-slot(:|$)|^#/;
4527 var lineBreakRE = /[\r\n]/;
4528 var whitespaceRE = /[ \f\t\r\n]+/g;
4529 var invalidAttributeRE = /[\s"'<>\/=]/;
4530 var decodeHTMLCached = cached(he.decode);
4531 var emptySlotScopeToken = "_empty_";
4532 // configurable state
4533 var warn$1;
4534 var delimiters;
4535 var transforms;
4536 var preTransforms;
4537 var postTransforms;
4538 var platformIsPreTag;
4539 var platformMustUseProp;
4540 var platformGetTagNamespace;
4541 var maybeComponent;
4542 function createASTElement(tag, attrs, parent) {
4543 return {
4544 type: 1,
4545 tag: tag,
4546 attrsList: attrs,
4547 attrsMap: makeAttrsMap(attrs),
4548 rawAttrsMap: {},
4549 parent: parent,
4550 children: []
4551 };
4552 }
4553 /**
4554 * Convert HTML string to AST.
4555 */
4556 function parse(template, options) {
4557 warn$1 = options.warn || baseWarn;
4558 platformIsPreTag = options.isPreTag || no;
4559 platformMustUseProp = options.mustUseProp || no;
4560 platformGetTagNamespace = options.getTagNamespace || no;
4561 var isReservedTag = options.isReservedTag || no;
4562 maybeComponent = function (el) {
4563 return !!(el.component ||
4564 el.attrsMap[':is'] ||
4565 el.attrsMap['v-bind:is'] ||
4566 !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)));
4567 };
4568 transforms = pluckModuleFunction(options.modules, 'transformNode');
4569 preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
4570 postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
4571 delimiters = options.delimiters;
4572 var stack = [];
4573 var preserveWhitespace = options.preserveWhitespace !== false;
4574 var whitespaceOption = options.whitespace;
4575 var root;
4576 var currentParent;
4577 var inVPre = false;
4578 var inPre = false;
4579 var warned = false;
4580 function warnOnce(msg, range) {
4581 if (!warned) {
4582 warned = true;
4583 warn$1(msg, range);
4584 }
4585 }
4586 function closeElement(element) {
4587 trimEndingWhitespace(element);
4588 if (!inVPre && !element.processed) {
4589 element = processElement(element, options);
4590 }
4591 // tree management
4592 if (!stack.length && element !== root) {
4593 // allow root elements with v-if, v-else-if and v-else
4594 if (root.if && (element.elseif || element.else)) {
4595 {
4596 checkRootConstraints(element);
4597 }
4598 addIfCondition(root, {
4599 exp: element.elseif,
4600 block: element
4601 });
4602 }
4603 else {
4604 warnOnce("Component template should contain exactly one root element. " +
4605 "If you are using v-if on multiple elements, " +
4606 "use v-else-if to chain them instead.", { start: element.start });
4607 }
4608 }
4609 if (currentParent && !element.forbidden) {
4610 if (element.elseif || element.else) {
4611 processIfConditions(element, currentParent);
4612 }
4613 else {
4614 if (element.slotScope) {
4615 // scoped slot
4616 // keep it in the children list so that v-else(-if) conditions can
4617 // find it as the prev node.
4618 var name_1 = element.slotTarget || '"default"';
4619 (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element;
4620 }
4621 currentParent.children.push(element);
4622 element.parent = currentParent;
4623 }
4624 }
4625 // final children cleanup
4626 // filter out scoped slots
4627 element.children = element.children.filter(function (c) { return !c.slotScope; });
4628 // remove trailing whitespace node again
4629 trimEndingWhitespace(element);
4630 // check pre state
4631 if (element.pre) {
4632 inVPre = false;
4633 }
4634 if (platformIsPreTag(element.tag)) {
4635 inPre = false;
4636 }
4637 // apply post-transforms
4638 for (var i = 0; i < postTransforms.length; i++) {
4639 postTransforms[i](element, options);
4640 }
4641 }
4642 function trimEndingWhitespace(el) {
4643 // remove trailing whitespace node
4644 if (!inPre) {
4645 var lastNode = void 0;
4646 while ((lastNode = el.children[el.children.length - 1]) &&
4647 lastNode.type === 3 &&
4648 lastNode.text === ' ') {
4649 el.children.pop();
4650 }
4651 }
4652 }
4653 function checkRootConstraints(el) {
4654 if (el.tag === 'slot' || el.tag === 'template') {
4655 warnOnce("Cannot use <".concat(el.tag, "> as component root element because it may ") +
4656 'contain multiple nodes.', { start: el.start });
4657 }
4658 if (el.attrsMap.hasOwnProperty('v-for')) {
4659 warnOnce('Cannot use v-for on stateful component root element because ' +
4660 'it renders multiple elements.', el.rawAttrsMap['v-for']);
4661 }
4662 }
4663 parseHTML(template, {
4664 warn: warn$1,
4665 expectHTML: options.expectHTML,
4666 isUnaryTag: options.isUnaryTag,
4667 canBeLeftOpenTag: options.canBeLeftOpenTag,
4668 shouldDecodeNewlines: options.shouldDecodeNewlines,
4669 shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
4670 shouldKeepComment: options.comments,
4671 outputSourceRange: options.outputSourceRange,
4672 start: function (tag, attrs, unary, start, end) {
4673 // check namespace.
4674 // inherit parent ns if there is one
4675 var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
4676 // handle IE svg bug
4677 /* istanbul ignore if */
4678 if (isIE && ns === 'svg') {
4679 attrs = guardIESVGBug(attrs);
4680 }
4681 var element = createASTElement(tag, attrs, currentParent);
4682 if (ns) {
4683 element.ns = ns;
4684 }
4685 {
4686 if (options.outputSourceRange) {
4687 element.start = start;
4688 element.end = end;
4689 element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
4690 cumulated[attr.name] = attr;
4691 return cumulated;
4692 }, {});
4693 }
4694 attrs.forEach(function (attr) {
4695 if (invalidAttributeRE.test(attr.name)) {
4696 warn$1("Invalid dynamic argument expression: attribute names cannot contain " +
4697 "spaces, quotes, <, >, / or =.", options.outputSourceRange
4698 ? {
4699 start: attr.start + attr.name.indexOf("["),
4700 end: attr.start + attr.name.length
4701 }
4702 : undefined);
4703 }
4704 });
4705 }
4706 if (isForbiddenTag(element) && !isServerRendering()) {
4707 element.forbidden = true;
4708 warn$1('Templates should only be responsible for mapping the state to the ' +
4709 'UI. Avoid placing tags with side-effects in your templates, such as ' +
4710 "<".concat(tag, ">") +
4711 ', as they will not be parsed.', { start: element.start });
4712 }
4713 // apply pre-transforms
4714 for (var i = 0; i < preTransforms.length; i++) {
4715 element = preTransforms[i](element, options) || element;
4716 }
4717 if (!inVPre) {
4718 processPre(element);
4719 if (element.pre) {
4720 inVPre = true;
4721 }
4722 }
4723 if (platformIsPreTag(element.tag)) {
4724 inPre = true;
4725 }
4726 if (inVPre) {
4727 processRawAttrs(element);
4728 }
4729 else if (!element.processed) {
4730 // structural directives
4731 processFor(element);
4732 processIf(element);
4733 processOnce(element);
4734 }
4735 if (!root) {
4736 root = element;
4737 {
4738 checkRootConstraints(root);
4739 }
4740 }
4741 if (!unary) {
4742 currentParent = element;
4743 stack.push(element);
4744 }
4745 else {
4746 closeElement(element);
4747 }
4748 },
4749 end: function (tag, start, end) {
4750 var element = stack[stack.length - 1];
4751 // pop stack
4752 stack.length -= 1;
4753 currentParent = stack[stack.length - 1];
4754 if (options.outputSourceRange) {
4755 element.end = end;
4756 }
4757 closeElement(element);
4758 },
4759 chars: function (text, start, end) {
4760 if (!currentParent) {
4761 {
4762 if (text === template) {
4763 warnOnce('Component template requires a root element, rather than just text.', { start: start });
4764 }
4765 else if ((text = text.trim())) {
4766 warnOnce("text \"".concat(text, "\" outside root element will be ignored."), {
4767 start: start
4768 });
4769 }
4770 }
4771 return;
4772 }
4773 // IE textarea placeholder bug
4774 /* istanbul ignore if */
4775 if (isIE &&
4776 currentParent.tag === 'textarea' &&
4777 currentParent.attrsMap.placeholder === text) {
4778 return;
4779 }
4780 var children = currentParent.children;
4781 if (inPre || text.trim()) {
4782 text = isTextTag(currentParent)
4783 ? text
4784 : decodeHTMLCached(text);
4785 }
4786 else if (!children.length) {
4787 // remove the whitespace-only node right after an opening tag
4788 text = '';
4789 }
4790 else if (whitespaceOption) {
4791 if (whitespaceOption === 'condense') {
4792 // in condense mode, remove the whitespace node if it contains
4793 // line break, otherwise condense to a single space
4794 text = lineBreakRE.test(text) ? '' : ' ';
4795 }
4796 else {
4797 text = ' ';
4798 }
4799 }
4800 else {
4801 text = preserveWhitespace ? ' ' : '';
4802 }
4803 if (text) {
4804 if (!inPre && whitespaceOption === 'condense') {
4805 // condense consecutive whitespaces into single space
4806 text = text.replace(whitespaceRE, ' ');
4807 }
4808 var res = void 0;
4809 var child = void 0;
4810 if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
4811 child = {
4812 type: 2,
4813 expression: res.expression,
4814 tokens: res.tokens,
4815 text: text
4816 };
4817 }
4818 else if (text !== ' ' ||
4819 !children.length ||
4820 children[children.length - 1].text !== ' ') {
4821 child = {
4822 type: 3,
4823 text: text
4824 };
4825 }
4826 if (child) {
4827 if (options.outputSourceRange) {
4828 child.start = start;
4829 child.end = end;
4830 }
4831 children.push(child);
4832 }
4833 }
4834 },
4835 comment: function (text, start, end) {
4836 // adding anything as a sibling to the root node is forbidden
4837 // comments should still be allowed, but ignored
4838 if (currentParent) {
4839 var child = {
4840 type: 3,
4841 text: text,
4842 isComment: true
4843 };
4844 if (options.outputSourceRange) {
4845 child.start = start;
4846 child.end = end;
4847 }
4848 currentParent.children.push(child);
4849 }
4850 }
4851 });
4852 return root;
4853 }
4854 function processPre(el) {
4855 if (getAndRemoveAttr(el, 'v-pre') != null) {
4856 el.pre = true;
4857 }
4858 }
4859 function processRawAttrs(el) {
4860 var list = el.attrsList;
4861 var len = list.length;
4862 if (len) {
4863 var attrs = (el.attrs = new Array(len));
4864 for (var i = 0; i < len; i++) {
4865 attrs[i] = {
4866 name: list[i].name,
4867 value: JSON.stringify(list[i].value)
4868 };
4869 if (list[i].start != null) {
4870 attrs[i].start = list[i].start;
4871 attrs[i].end = list[i].end;
4872 }
4873 }
4874 }
4875 else if (!el.pre) {
4876 // non root node in pre blocks with no attributes
4877 el.plain = true;
4878 }
4879 }
4880 function processElement(element, options) {
4881 processKey(element);
4882 // determine whether this is a plain element after
4883 // removing structural attributes
4884 element.plain =
4885 !element.key && !element.scopedSlots && !element.attrsList.length;
4886 processRef(element);
4887 processSlotContent(element);
4888 processSlotOutlet(element);
4889 processComponent(element);
4890 for (var i = 0; i < transforms.length; i++) {
4891 element = transforms[i](element, options) || element;
4892 }
4893 processAttrs(element);
4894 return element;
4895 }
4896 function processKey(el) {
4897 var exp = getBindingAttr(el, 'key');
4898 if (exp) {
4899 {
4900 if (el.tag === 'template') {
4901 warn$1("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key'));
4902 }
4903 if (el.for) {
4904 var iterator = el.iterator2 || el.iterator1;
4905 var parent_1 = el.parent;
4906 if (iterator &&
4907 iterator === exp &&
4908 parent_1 &&
4909 parent_1.tag === 'transition-group') {
4910 warn$1("Do not use v-for index as key on <transition-group> children, " +
4911 "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true /* tip */);
4912 }
4913 }
4914 }
4915 el.key = exp;
4916 }
4917 }
4918 function processRef(el) {
4919 var ref = getBindingAttr(el, 'ref');
4920 if (ref) {
4921 el.ref = ref;
4922 el.refInFor = checkInFor(el);
4923 }
4924 }
4925 function processFor(el) {
4926 var exp;
4927 if ((exp = getAndRemoveAttr(el, 'v-for'))) {
4928 var res = parseFor(exp);
4929 if (res) {
4930 extend(el, res);
4931 }
4932 else {
4933 warn$1("Invalid v-for expression: ".concat(exp), el.rawAttrsMap['v-for']);
4934 }
4935 }
4936 }
4937 function parseFor(exp) {
4938 var inMatch = exp.match(forAliasRE);
4939 if (!inMatch)
4940 return;
4941 var res = {};
4942 res.for = inMatch[2].trim();
4943 var alias = inMatch[1].trim().replace(stripParensRE, '');
4944 var iteratorMatch = alias.match(forIteratorRE);
4945 if (iteratorMatch) {
4946 res.alias = alias.replace(forIteratorRE, '').trim();
4947 res.iterator1 = iteratorMatch[1].trim();
4948 if (iteratorMatch[2]) {
4949 res.iterator2 = iteratorMatch[2].trim();
4950 }
4951 }
4952 else {
4953 res.alias = alias;
4954 }
4955 return res;
4956 }
4957 function processIf(el) {
4958 var exp = getAndRemoveAttr(el, 'v-if');
4959 if (exp) {
4960 el.if = exp;
4961 addIfCondition(el, {
4962 exp: exp,
4963 block: el
4964 });
4965 }
4966 else {
4967 if (getAndRemoveAttr(el, 'v-else') != null) {
4968 el.else = true;
4969 }
4970 var elseif = getAndRemoveAttr(el, 'v-else-if');
4971 if (elseif) {
4972 el.elseif = elseif;
4973 }
4974 }
4975 }
4976 function processIfConditions(el, parent) {
4977 var prev = findPrevElement(parent.children);
4978 if (prev && prev.if) {
4979 addIfCondition(prev, {
4980 exp: el.elseif,
4981 block: el
4982 });
4983 }
4984 else {
4985 warn$1("v-".concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', " ") +
4986 "used on element <".concat(el.tag, "> without corresponding v-if."), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);
4987 }
4988 }
4989 function findPrevElement(children) {
4990 var i = children.length;
4991 while (i--) {
4992 if (children[i].type === 1) {
4993 return children[i];
4994 }
4995 else {
4996 if (children[i].text !== ' ') {
4997 warn$1("text \"".concat(children[i].text.trim(), "\" between v-if and v-else(-if) ") +
4998 "will be ignored.", children[i]);
4999 }
5000 children.pop();
5001 }
5002 }
5003 }
5004 function addIfCondition(el, condition) {
5005 if (!el.ifConditions) {
5006 el.ifConditions = [];
5007 }
5008 el.ifConditions.push(condition);
5009 }
5010 function processOnce(el) {
5011 var once = getAndRemoveAttr(el, 'v-once');
5012 if (once != null) {
5013 el.once = true;
5014 }
5015 }
5016 // handle content being passed to a component as slot,
5017 // e.g. <template slot="xxx">, <div slot-scope="xxx">
5018 function processSlotContent(el) {
5019 var slotScope;
5020 if (el.tag === 'template') {
5021 slotScope = getAndRemoveAttr(el, 'scope');
5022 /* istanbul ignore if */
5023 if (slotScope) {
5024 warn$1("the \"scope\" attribute for scoped slots have been deprecated and " +
5025 "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
5026 "can also be used on plain elements in addition to <template> to " +
5027 "denote scoped slots.", el.rawAttrsMap['scope'], true);
5028 }
5029 el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
5030 }
5031 else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
5032 /* istanbul ignore if */
5033 if (el.attrsMap['v-for']) {
5034 warn$1("Ambiguous combined usage of slot-scope and v-for on <".concat(el.tag, "> ") +
5035 "(v-for takes higher priority). Use a wrapper <template> for the " +
5036 "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true);
5037 }
5038 el.slotScope = slotScope;
5039 }
5040 // slot="xxx"
5041 var slotTarget = getBindingAttr(el, 'slot');
5042 if (slotTarget) {
5043 el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
5044 el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);
5045 // preserve slot as an attribute for native shadow DOM compat
5046 // only for non-scoped slots.
5047 if (el.tag !== 'template' && !el.slotScope) {
5048 addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));
5049 }
5050 }
5051 // 2.6 v-slot syntax
5052 {
5053 if (el.tag === 'template') {
5054 // v-slot on <template>
5055 var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
5056 if (slotBinding) {
5057 {
5058 if (el.slotTarget || el.slotScope) {
5059 warn$1("Unexpected mixed usage of different slot syntaxes.", el);
5060 }
5061 if (el.parent && !maybeComponent(el.parent)) {
5062 warn$1("<template v-slot> can only appear at the root level inside " +
5063 "the receiving component", el);
5064 }
5065 }
5066 var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic;
5067 el.slotTarget = name_2;
5068 el.slotTargetDynamic = dynamic;
5069 el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf
5070 }
5071 }
5072 else {
5073 // v-slot on component, denotes default slot
5074 var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
5075 if (slotBinding) {
5076 {
5077 if (!maybeComponent(el)) {
5078 warn$1("v-slot can only be used on components or <template>.", slotBinding);
5079 }
5080 if (el.slotScope || el.slotTarget) {
5081 warn$1("Unexpected mixed usage of different slot syntaxes.", el);
5082 }
5083 if (el.scopedSlots) {
5084 warn$1("To avoid scope ambiguity, the default slot should also use " +
5085 "<template> syntax when there are other named slots.", slotBinding);
5086 }
5087 }
5088 // add the component's children to its default slot
5089 var slots = el.scopedSlots || (el.scopedSlots = {});
5090 var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic;
5091 var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el));
5092 slotContainer_1.slotTarget = name_3;
5093 slotContainer_1.slotTargetDynamic = dynamic;
5094 slotContainer_1.children = el.children.filter(function (c) {
5095 if (!c.slotScope) {
5096 c.parent = slotContainer_1;
5097 return true;
5098 }
5099 });
5100 slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken;
5101 // remove children as they are returned from scopedSlots now
5102 el.children = [];
5103 // mark el non-plain so data gets generated
5104 el.plain = false;
5105 }
5106 }
5107 }
5108 }
5109 function getSlotName(binding) {
5110 var name = binding.name.replace(slotRE, '');
5111 if (!name) {
5112 if (binding.name[0] !== '#') {
5113 name = 'default';
5114 }
5115 else {
5116 warn$1("v-slot shorthand syntax requires a slot name.", binding);
5117 }
5118 }
5119 return dynamicArgRE.test(name)
5120 ? // dynamic [name]
5121 { name: name.slice(1, -1), dynamic: true }
5122 : // static name
5123 { name: "\"".concat(name, "\""), dynamic: false };
5124 }
5125 // handle <slot/> outlets
5126 function processSlotOutlet(el) {
5127 if (el.tag === 'slot') {
5128 el.slotName = getBindingAttr(el, 'name');
5129 if (el.key) {
5130 warn$1("`key` does not work on <slot> because slots are abstract outlets " +
5131 "and can possibly expand into multiple elements. " +
5132 "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key'));
5133 }
5134 }
5135 }
5136 function processComponent(el) {
5137 var binding;
5138 if ((binding = getBindingAttr(el, 'is'))) {
5139 el.component = binding;
5140 }
5141 if (getAndRemoveAttr(el, 'inline-template') != null) {
5142 el.inlineTemplate = true;
5143 }
5144 }
5145 function processAttrs(el) {
5146 var list = el.attrsList;
5147 var i, l, name, rawName, value, modifiers, syncGen, isDynamic;
5148 for (i = 0, l = list.length; i < l; i++) {
5149 name = rawName = list[i].name;
5150 value = list[i].value;
5151 if (dirRE.test(name)) {
5152 // mark element as dynamic
5153 el.hasBindings = true;
5154 // modifiers
5155 modifiers = parseModifiers(name.replace(dirRE, ''));
5156 // support .foo shorthand syntax for the .prop modifier
5157 if (modifiers) {
5158 name = name.replace(modifierRE, '');
5159 }
5160 if (bindRE.test(name)) {
5161 // v-bind
5162 name = name.replace(bindRE, '');
5163 value = parseFilters(value);
5164 isDynamic = dynamicArgRE.test(name);
5165 if (isDynamic) {
5166 name = name.slice(1, -1);
5167 }
5168 if (value.trim().length === 0) {
5169 warn$1("The value for a v-bind expression cannot be empty. Found in \"v-bind:".concat(name, "\""));
5170 }
5171 if (modifiers) {
5172 if (modifiers.prop && !isDynamic) {
5173 name = camelize(name);
5174 if (name === 'innerHtml')
5175 name = 'innerHTML';
5176 }
5177 if (modifiers.camel && !isDynamic) {
5178 name = camelize(name);
5179 }
5180 if (modifiers.sync) {
5181 syncGen = genAssignmentCode(value, "$event");
5182 if (!isDynamic) {
5183 addHandler(el, "update:".concat(camelize(name)), syncGen, null, false, warn$1, list[i]);
5184 if (hyphenate(name) !== camelize(name)) {
5185 addHandler(el, "update:".concat(hyphenate(name)), syncGen, null, false, warn$1, list[i]);
5186 }
5187 }
5188 else {
5189 // handler w/ dynamic event name
5190 addHandler(el, "\"update:\"+(".concat(name, ")"), syncGen, null, false, warn$1, list[i], true // dynamic
5191 );
5192 }
5193 }
5194 }
5195 if ((modifiers && modifiers.prop) ||
5196 (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) {
5197 addProp(el, name, value, list[i], isDynamic);
5198 }
5199 else {
5200 addAttr(el, name, value, list[i], isDynamic);
5201 }
5202 }
5203 else if (onRE.test(name)) {
5204 // v-on
5205 name = name.replace(onRE, '');
5206 isDynamic = dynamicArgRE.test(name);
5207 if (isDynamic) {
5208 name = name.slice(1, -1);
5209 }
5210 addHandler(el, name, value, modifiers, false, warn$1, list[i], isDynamic);
5211 }
5212 else {
5213 // normal directives
5214 name = name.replace(dirRE, '');
5215 // parse arg
5216 var argMatch = name.match(argRE);
5217 var arg = argMatch && argMatch[1];
5218 isDynamic = false;
5219 if (arg) {
5220 name = name.slice(0, -(arg.length + 1));
5221 if (dynamicArgRE.test(arg)) {
5222 arg = arg.slice(1, -1);
5223 isDynamic = true;
5224 }
5225 }
5226 addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
5227 if (name === 'model') {
5228 checkForAliasModel(el, value);
5229 }
5230 }
5231 }
5232 else {
5233 // literal attribute
5234 {
5235 var res = parseText(value, delimiters);
5236 if (res) {
5237 warn$1("".concat(name, "=\"").concat(value, "\": ") +
5238 'Interpolation inside attributes has been removed. ' +
5239 'Use v-bind or the colon shorthand instead. For example, ' +
5240 'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]);
5241 }
5242 }
5243 addAttr(el, name, JSON.stringify(value), list[i]);
5244 // #6887 firefox doesn't update muted state if set via attribute
5245 // even immediately after element creation
5246 if (!el.component &&
5247 name === 'muted' &&
5248 platformMustUseProp(el.tag, el.attrsMap.type, name)) {
5249 addProp(el, name, 'true', list[i]);
5250 }
5251 }
5252 }
5253 }
5254 function checkInFor(el) {
5255 var parent = el;
5256 while (parent) {
5257 if (parent.for !== undefined) {
5258 return true;
5259 }
5260 parent = parent.parent;
5261 }
5262 return false;
5263 }
5264 function parseModifiers(name) {
5265 var match = name.match(modifierRE);
5266 if (match) {
5267 var ret_1 = {};
5268 match.forEach(function (m) {
5269 ret_1[m.slice(1)] = true;
5270 });
5271 return ret_1;
5272 }
5273 }
5274 function makeAttrsMap(attrs) {
5275 var map = {};
5276 for (var i = 0, l = attrs.length; i < l; i++) {
5277 if (map[attrs[i].name] && !isIE && !isEdge) {
5278 warn$1('duplicate attribute: ' + attrs[i].name, attrs[i]);
5279 }
5280 map[attrs[i].name] = attrs[i].value;
5281 }
5282 return map;
5283 }
5284 // for script (e.g. type="x/template") or style, do not decode content
5285 function isTextTag(el) {
5286 return el.tag === 'script' || el.tag === 'style';
5287 }
5288 function isForbiddenTag(el) {
5289 return (el.tag === 'style' ||
5290 (el.tag === 'script' &&
5291 (!el.attrsMap.type || el.attrsMap.type === 'text/javascript')));
5292 }
5293 var ieNSBug = /^xmlns:NS\d+/;
5294 var ieNSPrefix = /^NS\d+:/;
5295 /* istanbul ignore next */
5296 function guardIESVGBug(attrs) {
5297 var res = [];
5298 for (var i = 0; i < attrs.length; i++) {
5299 var attr = attrs[i];
5300 if (!ieNSBug.test(attr.name)) {
5301 attr.name = attr.name.replace(ieNSPrefix, '');
5302 res.push(attr);
5303 }
5304 }
5305 return res;
5306 }
5307 function checkForAliasModel(el, value) {
5308 var _el = el;
5309 while (_el) {
5310 if (_el.for && _el.alias === value) {
5311 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") +
5312 "You are binding v-model directly to a v-for iteration alias. " +
5313 "This will not be able to modify the v-for source array because " +
5314 "writing to the alias is like modifying a function local variable. " +
5315 "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']);
5316 }
5317 _el = _el.parent;
5318 }
5319 }
5320
5321 /**
5322 * Expand input[v-model] with dynamic type bindings into v-if-else chains
5323 * Turn this:
5324 * <input v-model="data[type]" :type="type">
5325 * into this:
5326 * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
5327 * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
5328 * <input v-else :type="type" v-model="data[type]">
5329 */
5330 function preTransformNode(el, options) {
5331 if (el.tag === 'input') {
5332 var map = el.attrsMap;
5333 if (!map['v-model']) {
5334 return;
5335 }
5336 var typeBinding = void 0;
5337 if (map[':type'] || map['v-bind:type']) {
5338 typeBinding = getBindingAttr(el, 'type');
5339 }
5340 if (!map.type && !typeBinding && map['v-bind']) {
5341 typeBinding = "(".concat(map['v-bind'], ").type");
5342 }
5343 if (typeBinding) {
5344 var ifCondition = getAndRemoveAttr(el, 'v-if', true);
5345 var ifConditionExtra = ifCondition ? "&&(".concat(ifCondition, ")") : "";
5346 var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
5347 var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
5348 // 1. checkbox
5349 var branch0 = cloneASTElement(el);
5350 // process for on the main node
5351 processFor(branch0);
5352 addRawAttr(branch0, 'type', 'checkbox');
5353 processElement(branch0, options);
5354 branch0.processed = true; // prevent it from double-processed
5355 branch0.if = "(".concat(typeBinding, ")==='checkbox'") + ifConditionExtra;
5356 addIfCondition(branch0, {
5357 exp: branch0.if,
5358 block: branch0
5359 });
5360 // 2. add radio else-if condition
5361 var branch1 = cloneASTElement(el);
5362 getAndRemoveAttr(branch1, 'v-for', true);
5363 addRawAttr(branch1, 'type', 'radio');
5364 processElement(branch1, options);
5365 addIfCondition(branch0, {
5366 exp: "(".concat(typeBinding, ")==='radio'") + ifConditionExtra,
5367 block: branch1
5368 });
5369 // 3. other
5370 var branch2 = cloneASTElement(el);
5371 getAndRemoveAttr(branch2, 'v-for', true);
5372 addRawAttr(branch2, ':type', typeBinding);
5373 processElement(branch2, options);
5374 addIfCondition(branch0, {
5375 exp: ifCondition,
5376 block: branch2
5377 });
5378 if (hasElse) {
5379 branch0.else = true;
5380 }
5381 else if (elseIfCondition) {
5382 branch0.elseif = elseIfCondition;
5383 }
5384 return branch0;
5385 }
5386 }
5387 }
5388 function cloneASTElement(el) {
5389 return createASTElement(el.tag, el.attrsList.slice(), el.parent);
5390 }
5391 var model$1 = {
5392 preTransformNode: preTransformNode
5393 };
5394
5395 var modules = [klass, style, model$1];
5396
5397 var warn;
5398 // in some cases, the event used has to be determined at runtime
5399 // so we used some reserved tokens during compile.
5400 var RANGE_TOKEN = '__r';
5401 function model(el, dir, _warn) {
5402 warn = _warn;
5403 var value = dir.value;
5404 var modifiers = dir.modifiers;
5405 var tag = el.tag;
5406 var type = el.attrsMap.type;
5407 {
5408 // inputs with type="file" are read only and setting the input's
5409 // value will throw an error.
5410 if (tag === 'input' && type === 'file') {
5411 warn("<".concat(el.tag, " v-model=\"").concat(value, "\" type=\"file\">:\n") +
5412 "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']);
5413 }
5414 }
5415 if (el.component) {
5416 genComponentModel(el, value, modifiers);
5417 // component v-model doesn't need extra runtime
5418 return false;
5419 }
5420 else if (tag === 'select') {
5421 genSelect(el, value, modifiers);
5422 }
5423 else if (tag === 'input' && type === 'checkbox') {
5424 genCheckboxModel(el, value, modifiers);
5425 }
5426 else if (tag === 'input' && type === 'radio') {
5427 genRadioModel(el, value, modifiers);
5428 }
5429 else if (tag === 'input' || tag === 'textarea') {
5430 genDefaultModel(el, value, modifiers);
5431 }
5432 else {
5433 genComponentModel(el, value, modifiers);
5434 // component v-model doesn't need extra runtime
5435 return false;
5436 }
5437 // ensure runtime directive metadata
5438 return true;
5439 }
5440 function genCheckboxModel(el, value, modifiers) {
5441 var number = modifiers && modifiers.number;
5442 var valueBinding = getBindingAttr(el, 'value') || 'null';
5443 var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
5444 var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
5445 addProp(el, 'checked', "Array.isArray(".concat(value, ")") +
5446 "?_i(".concat(value, ",").concat(valueBinding, ")>-1") +
5447 (trueValueBinding === 'true'
5448 ? ":(".concat(value, ")")
5449 : ":_q(".concat(value, ",").concat(trueValueBinding, ")")));
5450 addHandler(el, 'change', "var $$a=".concat(value, ",") +
5451 '$$el=$event.target,' +
5452 "$$c=$$el.checked?(".concat(trueValueBinding, "):(").concat(falseValueBinding, ");") +
5453 'if(Array.isArray($$a)){' +
5454 "var $$v=".concat(number ? '_n(' + valueBinding + ')' : valueBinding, ",") +
5455 '$$i=_i($$a,$$v);' +
5456 "if($$el.checked){$$i<0&&(".concat(genAssignmentCode(value, '$$a.concat([$$v])'), ")}") +
5457 "else{$$i>-1&&(".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), ")}") +
5458 "}else{".concat(genAssignmentCode(value, '$$c'), "}"), null, true);
5459 }
5460 function genRadioModel(el, value, modifiers) {
5461 var number = modifiers && modifiers.number;
5462 var valueBinding = getBindingAttr(el, 'value') || 'null';
5463 valueBinding = number ? "_n(".concat(valueBinding, ")") : valueBinding;
5464 addProp(el, 'checked', "_q(".concat(value, ",").concat(valueBinding, ")"));
5465 addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
5466 }
5467 function genSelect(el, value, modifiers) {
5468 var number = modifiers && modifiers.number;
5469 var selectedVal = "Array.prototype.filter" +
5470 ".call($event.target.options,function(o){return o.selected})" +
5471 ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
5472 "return ".concat(number ? '_n(val)' : 'val', "})");
5473 var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
5474 var code = "var $$selectedVal = ".concat(selectedVal, ";");
5475 code = "".concat(code, " ").concat(genAssignmentCode(value, assignment));
5476 addHandler(el, 'change', code, null, true);
5477 }
5478 function genDefaultModel(el, value, modifiers) {
5479 var type = el.attrsMap.type;
5480 // warn if v-bind:value conflicts with v-model
5481 // except for inputs with v-bind:type
5482 {
5483 var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
5484 var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
5485 if (value_1 && !typeBinding) {
5486 var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
5487 warn("".concat(binding, "=\"").concat(value_1, "\" conflicts with v-model on the same element ") +
5488 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);
5489 }
5490 }
5491 var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim;
5492 var needCompositionGuard = !lazy && type !== 'range';
5493 var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';
5494 var valueExpression = '$event.target.value';
5495 if (trim) {
5496 valueExpression = "$event.target.value.trim()";
5497 }
5498 if (number) {
5499 valueExpression = "_n(".concat(valueExpression, ")");
5500 }
5501 var code = genAssignmentCode(value, valueExpression);
5502 if (needCompositionGuard) {
5503 code = "if($event.target.composing)return;".concat(code);
5504 }
5505 addProp(el, 'value', "(".concat(value, ")"));
5506 addHandler(el, event, code, null, true);
5507 if (trim || number) {
5508 addHandler(el, 'blur', '$forceUpdate()');
5509 }
5510 }
5511
5512 function text(el, dir) {
5513 if (dir.value) {
5514 addProp(el, 'textContent', "_s(".concat(dir.value, ")"), dir);
5515 }
5516 }
5517
5518 function html(el, dir) {
5519 if (dir.value) {
5520 addProp(el, 'innerHTML', "_s(".concat(dir.value, ")"), dir);
5521 }
5522 }
5523
5524 var directives = {
5525 model: model,
5526 text: text,
5527 html: html
5528 };
5529
5530 var baseOptions = {
5531 expectHTML: true,
5532 modules: modules,
5533 directives: directives,
5534 isPreTag: isPreTag,
5535 isUnaryTag: isUnaryTag,
5536 mustUseProp: mustUseProp,
5537 canBeLeftOpenTag: canBeLeftOpenTag,
5538 isReservedTag: isReservedTag,
5539 getTagNamespace: getTagNamespace,
5540 staticKeys: genStaticKeys$1(modules)
5541 };
5542
5543 var isStaticKey;
5544 var isPlatformReservedTag$1;
5545 var genStaticKeysCached = cached(genStaticKeys);
5546 /**
5547 * Goal of the optimizer: walk the generated template AST tree
5548 * and detect sub-trees that are purely static, i.e. parts of
5549 * the DOM that never needs to change.
5550 *
5551 * Once we detect these sub-trees, we can:
5552 *
5553 * 1. Hoist them into constants, so that we no longer need to
5554 * create fresh nodes for them on each re-render;
5555 * 2. Completely skip them in the patching process.
5556 */
5557 function optimize$1(root, options) {
5558 if (!root)
5559 return;
5560 isStaticKey = genStaticKeysCached(options.staticKeys || '');
5561 isPlatformReservedTag$1 = options.isReservedTag || no;
5562 // first pass: mark all non-static nodes.
5563 markStatic(root);
5564 // second pass: mark static roots.
5565 markStaticRoots(root, false);
5566 }
5567 function genStaticKeys(keys) {
5568 return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
5569 (keys ? ',' + keys : ''));
5570 }
5571 function markStatic(node) {
5572 node.static = isStatic(node);
5573 if (node.type === 1) {
5574 // do not make component slot content static. this avoids
5575 // 1. components not able to mutate slot nodes
5576 // 2. static slot content fails for hot-reloading
5577 if (!isPlatformReservedTag$1(node.tag) &&
5578 node.tag !== 'slot' &&
5579 node.attrsMap['inline-template'] == null) {
5580 return;
5581 }
5582 for (var i = 0, l = node.children.length; i < l; i++) {
5583 var child = node.children[i];
5584 markStatic(child);
5585 if (!child.static) {
5586 node.static = false;
5587 }
5588 }
5589 if (node.ifConditions) {
5590 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
5591 var block = node.ifConditions[i].block;
5592 markStatic(block);
5593 if (!block.static) {
5594 node.static = false;
5595 }
5596 }
5597 }
5598 }
5599 }
5600 function markStaticRoots(node, isInFor) {
5601 if (node.type === 1) {
5602 if (node.static || node.once) {
5603 node.staticInFor = isInFor;
5604 }
5605 // For a node to qualify as a static root, it should have children that
5606 // are not just static text. Otherwise the cost of hoisting out will
5607 // outweigh the benefits and it's better off to just always render it fresh.
5608 if (node.static &&
5609 node.children.length &&
5610 !(node.children.length === 1 && node.children[0].type === 3)) {
5611 node.staticRoot = true;
5612 return;
5613 }
5614 else {
5615 node.staticRoot = false;
5616 }
5617 if (node.children) {
5618 for (var i = 0, l = node.children.length; i < l; i++) {
5619 markStaticRoots(node.children[i], isInFor || !!node.for);
5620 }
5621 }
5622 if (node.ifConditions) {
5623 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
5624 markStaticRoots(node.ifConditions[i].block, isInFor);
5625 }
5626 }
5627 }
5628 }
5629 function isStatic(node) {
5630 if (node.type === 2) {
5631 // expression
5632 return false;
5633 }
5634 if (node.type === 3) {
5635 // text
5636 return true;
5637 }
5638 return !!(node.pre ||
5639 (!node.hasBindings && // no dynamic bindings
5640 !node.if &&
5641 !node.for && // not v-if or v-for or v-else
5642 !isBuiltInTag(node.tag) && // not a built-in
5643 isPlatformReservedTag$1(node.tag) && // not a component
5644 !isDirectChildOfTemplateFor(node) &&
5645 Object.keys(node).every(isStaticKey)));
5646 }
5647 function isDirectChildOfTemplateFor(node) {
5648 while (node.parent) {
5649 node = node.parent;
5650 if (node.tag !== 'template') {
5651 return false;
5652 }
5653 if (node.for) {
5654 return true;
5655 }
5656 }
5657 return false;
5658 }
5659
5660 var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
5661 var fnInvokeRE = /\([^)]*?\);*$/;
5662 var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
5663 // KeyboardEvent.keyCode aliases
5664 var keyCodes = {
5665 esc: 27,
5666 tab: 9,
5667 enter: 13,
5668 space: 32,
5669 up: 38,
5670 left: 37,
5671 right: 39,
5672 down: 40,
5673 delete: [8, 46]
5674 };
5675 // KeyboardEvent.key aliases
5676 var keyNames = {
5677 // #7880: IE11 and Edge use `Esc` for Escape key name.
5678 esc: ['Esc', 'Escape'],
5679 tab: 'Tab',
5680 enter: 'Enter',
5681 // #9112: IE11 uses `Spacebar` for Space key name.
5682 space: [' ', 'Spacebar'],
5683 // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
5684 up: ['Up', 'ArrowUp'],
5685 left: ['Left', 'ArrowLeft'],
5686 right: ['Right', 'ArrowRight'],
5687 down: ['Down', 'ArrowDown'],
5688 // #9112: IE11 uses `Del` for Delete key name.
5689 delete: ['Backspace', 'Delete', 'Del']
5690 };
5691 // #4868: modifiers that prevent the execution of the listener
5692 // need to explicitly return null so that we can determine whether to remove
5693 // the listener for .once
5694 var genGuard = function (condition) { return "if(".concat(condition, ")return null;"); };
5695 var modifierCode = {
5696 stop: '$event.stopPropagation();',
5697 prevent: '$event.preventDefault();',
5698 self: genGuard("$event.target !== $event.currentTarget"),
5699 ctrl: genGuard("!$event.ctrlKey"),
5700 shift: genGuard("!$event.shiftKey"),
5701 alt: genGuard("!$event.altKey"),
5702 meta: genGuard("!$event.metaKey"),
5703 left: genGuard("'button' in $event && $event.button !== 0"),
5704 middle: genGuard("'button' in $event && $event.button !== 1"),
5705 right: genGuard("'button' in $event && $event.button !== 2")
5706 };
5707 function genHandlers(events, isNative) {
5708 var prefix = isNative ? 'nativeOn:' : 'on:';
5709 var staticHandlers = "";
5710 var dynamicHandlers = "";
5711 for (var name_1 in events) {
5712 var handlerCode = genHandler(events[name_1]);
5713 //@ts-expect-error
5714 if (events[name_1] && events[name_1].dynamic) {
5715 dynamicHandlers += "".concat(name_1, ",").concat(handlerCode, ",");
5716 }
5717 else {
5718 staticHandlers += "\"".concat(name_1, "\":").concat(handlerCode, ",");
5719 }
5720 }
5721 staticHandlers = "{".concat(staticHandlers.slice(0, -1), "}");
5722 if (dynamicHandlers) {
5723 return prefix + "_d(".concat(staticHandlers, ",[").concat(dynamicHandlers.slice(0, -1), "])");
5724 }
5725 else {
5726 return prefix + staticHandlers;
5727 }
5728 }
5729 function genHandler(handler) {
5730 if (!handler) {
5731 return 'function(){}';
5732 }
5733 if (Array.isArray(handler)) {
5734 return "[".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), "]");
5735 }
5736 var isMethodPath = simplePathRE.test(handler.value);
5737 var isFunctionExpression = fnExpRE.test(handler.value);
5738 var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
5739 if (!handler.modifiers) {
5740 if (isMethodPath || isFunctionExpression) {
5741 return handler.value;
5742 }
5743 return "function($event){".concat(isFunctionInvocation ? "return ".concat(handler.value) : handler.value, "}"); // inline statement
5744 }
5745 else {
5746 var code = '';
5747 var genModifierCode = '';
5748 var keys = [];
5749 var _loop_1 = function (key) {
5750 if (modifierCode[key]) {
5751 genModifierCode += modifierCode[key];
5752 // left/right
5753 if (keyCodes[key]) {
5754 keys.push(key);
5755 }
5756 }
5757 else if (key === 'exact') {
5758 var modifiers_1 = handler.modifiers;
5759 genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta']
5760 .filter(function (keyModifier) { return !modifiers_1[keyModifier]; })
5761 .map(function (keyModifier) { return "$event.".concat(keyModifier, "Key"); })
5762 .join('||'));
5763 }
5764 else {
5765 keys.push(key);
5766 }
5767 };
5768 for (var key in handler.modifiers) {
5769 _loop_1(key);
5770 }
5771 if (keys.length) {
5772 code += genKeyFilter(keys);
5773 }
5774 // Make sure modifiers like prevent and stop get executed after key filtering
5775 if (genModifierCode) {
5776 code += genModifierCode;
5777 }
5778 var handlerCode = isMethodPath
5779 ? "return ".concat(handler.value, ".apply(null, arguments)")
5780 : isFunctionExpression
5781 ? "return (".concat(handler.value, ").apply(null, arguments)")
5782 : isFunctionInvocation
5783 ? "return ".concat(handler.value)
5784 : handler.value;
5785 return "function($event){".concat(code).concat(handlerCode, "}");
5786 }
5787 }
5788 function genKeyFilter(keys) {
5789 return (
5790 // make sure the key filters only apply to KeyboardEvents
5791 // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
5792 // key events that do not have keyCode property...
5793 "if(!$event.type.indexOf('key')&&" +
5794 "".concat(keys.map(genFilterCode).join('&&'), ")return null;"));
5795 }
5796 function genFilterCode(key) {
5797 var keyVal = parseInt(key, 10);
5798 if (keyVal) {
5799 return "$event.keyCode!==".concat(keyVal);
5800 }
5801 var keyCode = keyCodes[key];
5802 var keyName = keyNames[key];
5803 return ("_k($event.keyCode," +
5804 "".concat(JSON.stringify(key), ",") +
5805 "".concat(JSON.stringify(keyCode), ",") +
5806 "$event.key," +
5807 "".concat(JSON.stringify(keyName)) +
5808 ")");
5809 }
5810
5811 function on(el, dir) {
5812 if (dir.modifiers) {
5813 warn$2("v-on without argument does not support modifiers.");
5814 }
5815 el.wrapListeners = function (code) { return "_g(".concat(code, ",").concat(dir.value, ")"); };
5816 }
5817
5818 function bind(el, dir) {
5819 el.wrapData = function (code) {
5820 return "_b(".concat(code, ",'").concat(el.tag, "',").concat(dir.value, ",").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', ")");
5821 };
5822 }
5823
5824 var baseDirectives = {
5825 on: on,
5826 bind: bind,
5827 cloak: noop
5828 };
5829
5830 var CodegenState = /** @class */ (function () {
5831 function CodegenState(options) {
5832 this.options = options;
5833 this.warn = options.warn || baseWarn;
5834 this.transforms = pluckModuleFunction(options.modules, 'transformCode');
5835 this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
5836 this.directives = extend(extend({}, baseDirectives), options.directives);
5837 var isReservedTag = options.isReservedTag || no;
5838 this.maybeComponent = function (el) {
5839 return !!el.component || !isReservedTag(el.tag);
5840 };
5841 this.onceId = 0;
5842 this.staticRenderFns = [];
5843 this.pre = false;
5844 }
5845 return CodegenState;
5846 }());
5847 function generate$1(ast, options) {
5848 var state = new CodegenState(options);
5849 // fix #11483, Root level <script> tags should not be rendered.
5850 var code = ast
5851 ? ast.tag === 'script'
5852 ? 'null'
5853 : genElement(ast, state)
5854 : '_c("div")';
5855 return {
5856 render: "with(this){return ".concat(code, "}"),
5857 staticRenderFns: state.staticRenderFns
5858 };
5859 }
5860 function genElement(el, state) {
5861 if (el.parent) {
5862 el.pre = el.pre || el.parent.pre;
5863 }
5864 if (el.staticRoot && !el.staticProcessed) {
5865 return genStatic(el, state);
5866 }
5867 else if (el.once && !el.onceProcessed) {
5868 return genOnce(el, state);
5869 }
5870 else if (el.for && !el.forProcessed) {
5871 return genFor(el, state);
5872 }
5873 else if (el.if && !el.ifProcessed) {
5874 return genIf(el, state);
5875 }
5876 else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
5877 return genChildren(el, state) || 'void 0';
5878 }
5879 else if (el.tag === 'slot') {
5880 return genSlot(el, state);
5881 }
5882 else {
5883 // component or element
5884 var code = void 0;
5885 if (el.component) {
5886 code = genComponent(el.component, el, state);
5887 }
5888 else {
5889 var data = void 0;
5890 var maybeComponent = state.maybeComponent(el);
5891 if (!el.plain || (el.pre && maybeComponent)) {
5892 data = genData(el, state);
5893 }
5894 var tag
5895 // check if this is a component in <script setup>
5896 = void 0;
5897 // check if this is a component in <script setup>
5898 var bindings = state.options.bindings;
5899 if (maybeComponent && bindings && bindings.__isScriptSetup !== false) {
5900 tag = checkBindingType(bindings, el.tag);
5901 }
5902 if (!tag)
5903 tag = "'".concat(el.tag, "'");
5904 var children = el.inlineTemplate ? null : genChildren(el, state, true);
5905 code = "_c(".concat(tag).concat(data ? ",".concat(data) : '' // data
5906 ).concat(children ? ",".concat(children) : '' // children
5907 , ")");
5908 }
5909 // module transforms
5910 for (var i = 0; i < state.transforms.length; i++) {
5911 code = state.transforms[i](el, code);
5912 }
5913 return code;
5914 }
5915 }
5916 function checkBindingType(bindings, key) {
5917 var camelName = camelize(key);
5918 var PascalName = capitalize(camelName);
5919 var checkType = function (type) {
5920 if (bindings[key] === type) {
5921 return key;
5922 }
5923 if (bindings[camelName] === type) {
5924 return camelName;
5925 }
5926 if (bindings[PascalName] === type) {
5927 return PascalName;
5928 }
5929 };
5930 var fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) ||
5931 checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */);
5932 if (fromConst) {
5933 return fromConst;
5934 }
5935 var fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) ||
5936 checkType("setup-ref" /* BindingTypes.SETUP_REF */) ||
5937 checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */);
5938 if (fromMaybeRef) {
5939 return fromMaybeRef;
5940 }
5941 }
5942 // hoist static sub-trees out
5943 function genStatic(el, state) {
5944 el.staticProcessed = true;
5945 // Some elements (templates) need to behave differently inside of a v-pre
5946 // node. All pre nodes are static roots, so we can use this as a location to
5947 // wrap a state change and reset it upon exiting the pre node.
5948 var originalPreState = state.pre;
5949 if (el.pre) {
5950 state.pre = el.pre;
5951 }
5952 state.staticRenderFns.push("with(this){return ".concat(genElement(el, state), "}"));
5953 state.pre = originalPreState;
5954 return "_m(".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', ")");
5955 }
5956 // v-once
5957 function genOnce(el, state) {
5958 el.onceProcessed = true;
5959 if (el.if && !el.ifProcessed) {
5960 return genIf(el, state);
5961 }
5962 else if (el.staticInFor) {
5963 var key = '';
5964 var parent_1 = el.parent;
5965 while (parent_1) {
5966 if (parent_1.for) {
5967 key = parent_1.key;
5968 break;
5969 }
5970 parent_1 = parent_1.parent;
5971 }
5972 if (!key) {
5973 state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']);
5974 return genElement(el, state);
5975 }
5976 return "_o(".concat(genElement(el, state), ",").concat(state.onceId++, ",").concat(key, ")");
5977 }
5978 else {
5979 return genStatic(el, state);
5980 }
5981 }
5982 function genIf(el, state, altGen, altEmpty) {
5983 el.ifProcessed = true; // avoid recursion
5984 return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);
5985 }
5986 function genIfConditions(conditions, state, altGen, altEmpty) {
5987 if (!conditions.length) {
5988 return altEmpty || '_e()';
5989 }
5990 var condition = conditions.shift();
5991 if (condition.exp) {
5992 return "(".concat(condition.exp, ")?").concat(genTernaryExp(condition.block), ":").concat(genIfConditions(conditions, state, altGen, altEmpty));
5993 }
5994 else {
5995 return "".concat(genTernaryExp(condition.block));
5996 }
5997 // v-if with v-once should generate code like (a)?_m(0):_m(1)
5998 function genTernaryExp(el) {
5999 return altGen
6000 ? altGen(el, state)
6001 : el.once
6002 ? genOnce(el, state)
6003 : genElement(el, state);
6004 }
6005 }
6006 function genFor(el, state, altGen, altHelper) {
6007 var exp = el.for;
6008 var alias = el.alias;
6009 var iterator1 = el.iterator1 ? ",".concat(el.iterator1) : '';
6010 var iterator2 = el.iterator2 ? ",".concat(el.iterator2) : '';
6011 if (state.maybeComponent(el) &&
6012 el.tag !== 'slot' &&
6013 el.tag !== 'template' &&
6014 !el.key) {
6015 state.warn("<".concat(el.tag, " v-for=\"").concat(alias, " in ").concat(exp, "\">: component lists rendered with ") +
6016 "v-for should have explicit keys. " +
6017 "See https://v2.vuejs.org/v2/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true /* tip */);
6018 }
6019 el.forProcessed = true; // avoid recursion
6020 return ("".concat(altHelper || '_l', "((").concat(exp, "),") +
6021 "function(".concat(alias).concat(iterator1).concat(iterator2, "){") +
6022 "return ".concat((altGen || genElement)(el, state)) +
6023 '})');
6024 }
6025 function genData(el, state) {
6026 var data = '{';
6027 // directives first.
6028 // directives may mutate the el's other properties before they are generated.
6029 var dirs = genDirectives(el, state);
6030 if (dirs)
6031 data += dirs + ',';
6032 // key
6033 if (el.key) {
6034 data += "key:".concat(el.key, ",");
6035 }
6036 // ref
6037 if (el.ref) {
6038 data += "ref:".concat(el.ref, ",");
6039 }
6040 if (el.refInFor) {
6041 data += "refInFor:true,";
6042 }
6043 // pre
6044 if (el.pre) {
6045 data += "pre:true,";
6046 }
6047 // record original tag name for components using "is" attribute
6048 if (el.component) {
6049 data += "tag:\"".concat(el.tag, "\",");
6050 }
6051 // module data generation functions
6052 for (var i = 0; i < state.dataGenFns.length; i++) {
6053 data += state.dataGenFns[i](el);
6054 }
6055 // attributes
6056 if (el.attrs) {
6057 data += "attrs:".concat(genProps(el.attrs), ",");
6058 }
6059 // DOM props
6060 if (el.props) {
6061 data += "domProps:".concat(genProps(el.props), ",");
6062 }
6063 // event handlers
6064 if (el.events) {
6065 data += "".concat(genHandlers(el.events, false), ",");
6066 }
6067 if (el.nativeEvents) {
6068 data += "".concat(genHandlers(el.nativeEvents, true), ",");
6069 }
6070 // slot target
6071 // only for non-scoped slots
6072 if (el.slotTarget && !el.slotScope) {
6073 data += "slot:".concat(el.slotTarget, ",");
6074 }
6075 // scoped slots
6076 if (el.scopedSlots) {
6077 data += "".concat(genScopedSlots(el, el.scopedSlots, state), ",");
6078 }
6079 // component v-model
6080 if (el.model) {
6081 data += "model:{value:".concat(el.model.value, ",callback:").concat(el.model.callback, ",expression:").concat(el.model.expression, "},");
6082 }
6083 // inline-template
6084 if (el.inlineTemplate) {
6085 var inlineTemplate = genInlineTemplate(el, state);
6086 if (inlineTemplate) {
6087 data += "".concat(inlineTemplate, ",");
6088 }
6089 }
6090 data = data.replace(/,$/, '') + '}';
6091 // v-bind dynamic argument wrap
6092 // v-bind with dynamic arguments must be applied using the same v-bind object
6093 // merge helper so that class/style/mustUseProp attrs are handled correctly.
6094 if (el.dynamicAttrs) {
6095 data = "_b(".concat(data, ",\"").concat(el.tag, "\",").concat(genProps(el.dynamicAttrs), ")");
6096 }
6097 // v-bind data wrap
6098 if (el.wrapData) {
6099 data = el.wrapData(data);
6100 }
6101 // v-on data wrap
6102 if (el.wrapListeners) {
6103 data = el.wrapListeners(data);
6104 }
6105 return data;
6106 }
6107 function genDirectives(el, state) {
6108 var dirs = el.directives;
6109 if (!dirs)
6110 return;
6111 var res = 'directives:[';
6112 var hasRuntime = false;
6113 var i, l, dir, needRuntime;
6114 for (i = 0, l = dirs.length; i < l; i++) {
6115 dir = dirs[i];
6116 needRuntime = true;
6117 var gen = state.directives[dir.name];
6118 if (gen) {
6119 // compile-time directive that manipulates AST.
6120 // returns true if it also needs a runtime counterpart.
6121 needRuntime = !!gen(el, dir, state.warn);
6122 }
6123 if (needRuntime) {
6124 hasRuntime = true;
6125 res += "{name:\"".concat(dir.name, "\",rawName:\"").concat(dir.rawName, "\"").concat(dir.value
6126 ? ",value:(".concat(dir.value, "),expression:").concat(JSON.stringify(dir.value))
6127 : '').concat(dir.arg ? ",arg:".concat(dir.isDynamicArg ? dir.arg : "\"".concat(dir.arg, "\"")) : '').concat(dir.modifiers ? ",modifiers:".concat(JSON.stringify(dir.modifiers)) : '', "},");
6128 }
6129 }
6130 if (hasRuntime) {
6131 return res.slice(0, -1) + ']';
6132 }
6133 }
6134 function genInlineTemplate(el, state) {
6135 var ast = el.children[0];
6136 if ((el.children.length !== 1 || ast.type !== 1)) {
6137 state.warn('Inline-template components must have exactly one child element.', { start: el.start });
6138 }
6139 if (ast && ast.type === 1) {
6140 var inlineRenderFns = generate$1(ast, state.options);
6141 return "inlineTemplate:{render:function(){".concat(inlineRenderFns.render, "},staticRenderFns:[").concat(inlineRenderFns.staticRenderFns
6142 .map(function (code) { return "function(){".concat(code, "}"); })
6143 .join(','), "]}");
6144 }
6145 }
6146 function genScopedSlots(el, slots, state) {
6147 // by default scoped slots are considered "stable", this allows child
6148 // components with only scoped slots to skip forced updates from parent.
6149 // but in some cases we have to bail-out of this optimization
6150 // for example if the slot contains dynamic names, has v-if or v-for on them...
6151 var needsForceUpdate = el.for ||
6152 Object.keys(slots).some(function (key) {
6153 var slot = slots[key];
6154 return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic
6155 );
6156 });
6157 // #9534: if a component with scoped slots is inside a conditional branch,
6158 // it's possible for the same component to be reused but with different
6159 // compiled slot content. To avoid that, we generate a unique key based on
6160 // the generated code of all the slot contents.
6161 var needsKey = !!el.if;
6162 // OR when it is inside another scoped slot or v-for (the reactivity may be
6163 // disconnected due to the intermediate scope variable)
6164 // #9438, #9506
6165 // TODO: this can be further optimized by properly analyzing in-scope bindings
6166 // and skip force updating ones that do not actually use scope variables.
6167 if (!needsForceUpdate) {
6168 var parent_2 = el.parent;
6169 while (parent_2) {
6170 if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||
6171 parent_2.for) {
6172 needsForceUpdate = true;
6173 break;
6174 }
6175 if (parent_2.if) {
6176 needsKey = true;
6177 }
6178 parent_2 = parent_2.parent;
6179 }
6180 }
6181 var generatedSlots = Object.keys(slots)
6182 .map(function (key) { return genScopedSlot(slots[key], state); })
6183 .join(',');
6184 return "scopedSlots:_u([".concat(generatedSlots, "]").concat(needsForceUpdate ? ",null,true" : "").concat(!needsForceUpdate && needsKey ? ",null,false,".concat(hash(generatedSlots)) : "", ")");
6185 }
6186 function hash(str) {
6187 var hash = 5381;
6188 var i = str.length;
6189 while (i) {
6190 hash = (hash * 33) ^ str.charCodeAt(--i);
6191 }
6192 return hash >>> 0;
6193 }
6194 function containsSlotChild(el) {
6195 if (el.type === 1) {
6196 if (el.tag === 'slot') {
6197 return true;
6198 }
6199 return el.children.some(containsSlotChild);
6200 }
6201 return false;
6202 }
6203 function genScopedSlot(el, state) {
6204 var isLegacySyntax = el.attrsMap['slot-scope'];
6205 if (el.if && !el.ifProcessed && !isLegacySyntax) {
6206 return genIf(el, state, genScopedSlot, "null");
6207 }
6208 if (el.for && !el.forProcessed) {
6209 return genFor(el, state, genScopedSlot);
6210 }
6211 var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope);
6212 var fn = "function(".concat(slotScope, "){") +
6213 "return ".concat(el.tag === 'template'
6214 ? el.if && isLegacySyntax
6215 ? "(".concat(el.if, ")?").concat(genChildren(el, state) || 'undefined', ":undefined")
6216 : genChildren(el, state) || 'undefined'
6217 : genElement(el, state), "}");
6218 // reverse proxy v-slot without scope on this.$slots
6219 var reverseProxy = slotScope ? "" : ",proxy:true";
6220 return "{key:".concat(el.slotTarget || "\"default\"", ",fn:").concat(fn).concat(reverseProxy, "}");
6221 }
6222 function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
6223 var children = el.children;
6224 if (children.length) {
6225 var el_1 = children[0];
6226 // optimize single v-for
6227 if (children.length === 1 &&
6228 el_1.for &&
6229 el_1.tag !== 'template' &&
6230 el_1.tag !== 'slot') {
6231 var normalizationType_1 = checkSkip
6232 ? state.maybeComponent(el_1)
6233 ? ",1"
6234 : ",0"
6235 : "";
6236 return "".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1);
6237 }
6238 var normalizationType = checkSkip
6239 ? getNormalizationType(children, state.maybeComponent)
6240 : 0;
6241 var gen_1 = altGenNode || genNode;
6242 return "[".concat(children.map(function (c) { return gen_1(c, state); }).join(','), "]").concat(normalizationType ? ",".concat(normalizationType) : '');
6243 }
6244 }
6245 // determine the normalization needed for the children array.
6246 // 0: no normalization needed
6247 // 1: simple normalization needed (possible 1-level deep nested array)
6248 // 2: full normalization needed
6249 function getNormalizationType(children, maybeComponent) {
6250 var res = 0;
6251 for (var i = 0; i < children.length; i++) {
6252 var el = children[i];
6253 if (el.type !== 1) {
6254 continue;
6255 }
6256 if (needsNormalization(el) ||
6257 (el.ifConditions &&
6258 el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
6259 res = 2;
6260 break;
6261 }
6262 if (maybeComponent(el) ||
6263 (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
6264 res = 1;
6265 }
6266 }
6267 return res;
6268 }
6269 function needsNormalization(el) {
6270 return el.for !== undefined || el.tag === 'template' || el.tag === 'slot';
6271 }
6272 function genNode(node, state) {
6273 if (node.type === 1) {
6274 return genElement(node, state);
6275 }
6276 else if (node.type === 3 && node.isComment) {
6277 return genComment(node);
6278 }
6279 else {
6280 return genText(node);
6281 }
6282 }
6283 function genText(text) {
6284 return "_v(".concat(text.type === 2
6285 ? text.expression // no need for () because already wrapped in _s()
6286 : transformSpecialNewlines(JSON.stringify(text.text)), ")");
6287 }
6288 function genComment(comment) {
6289 return "_e(".concat(JSON.stringify(comment.text), ")");
6290 }
6291 function genSlot(el, state) {
6292 var slotName = el.slotName || '"default"';
6293 var children = genChildren(el, state);
6294 var res = "_t(".concat(slotName).concat(children ? ",function(){return ".concat(children, "}") : '');
6295 var attrs = el.attrs || el.dynamicAttrs
6296 ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({
6297 // slot props are camelized
6298 name: camelize(attr.name),
6299 value: attr.value,
6300 dynamic: attr.dynamic
6301 }); }))
6302 : null;
6303 var bind = el.attrsMap['v-bind'];
6304 if ((attrs || bind) && !children) {
6305 res += ",null";
6306 }
6307 if (attrs) {
6308 res += ",".concat(attrs);
6309 }
6310 if (bind) {
6311 res += "".concat(attrs ? '' : ',null', ",").concat(bind);
6312 }
6313 return res + ')';
6314 }
6315 // componentName is el.component, take it as argument to shun flow's pessimistic refinement
6316 function genComponent(componentName, el, state) {
6317 var children = el.inlineTemplate ? null : genChildren(el, state, true);
6318 return "_c(".concat(componentName, ",").concat(genData(el, state)).concat(children ? ",".concat(children) : '', ")");
6319 }
6320 function genProps(props) {
6321 var staticProps = "";
6322 var dynamicProps = "";
6323 for (var i = 0; i < props.length; i++) {
6324 var prop = props[i];
6325 var value = transformSpecialNewlines(prop.value);
6326 if (prop.dynamic) {
6327 dynamicProps += "".concat(prop.name, ",").concat(value, ",");
6328 }
6329 else {
6330 staticProps += "\"".concat(prop.name, "\":").concat(value, ",");
6331 }
6332 }
6333 staticProps = "{".concat(staticProps.slice(0, -1), "}");
6334 if (dynamicProps) {
6335 return "_d(".concat(staticProps, ",[").concat(dynamicProps.slice(0, -1), "])");
6336 }
6337 else {
6338 return staticProps;
6339 }
6340 }
6341 // #3895, #4268
6342 function transformSpecialNewlines(text) {
6343 return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
6344 }
6345
6346 // these keywords should not appear inside expressions, but operators like
6347 // typeof, instanceof and in are allowed
6348 var prohibitedKeywordRE = new RegExp('\\b' +
6349 ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
6350 'super,throw,while,yield,delete,export,import,return,switch,default,' +
6351 'extends,finally,continue,debugger,function,arguments')
6352 .split(',')
6353 .join('\\b|\\b') +
6354 '\\b');
6355 // these unary operators should not be used as property/method names
6356 var unaryOperatorsRE = new RegExp('\\b' +
6357 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') +
6358 '\\s*\\([^\\)]*\\)');
6359 // strip strings in expressions
6360 var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
6361 // detect problematic expressions in a template
6362 function detectErrors(ast, warn) {
6363 if (ast) {
6364 checkNode(ast, warn);
6365 }
6366 }
6367 function checkNode(node, warn) {
6368 if (node.type === 1) {
6369 for (var name_1 in node.attrsMap) {
6370 if (dirRE.test(name_1)) {
6371 var value = node.attrsMap[name_1];
6372 if (value) {
6373 var range = node.rawAttrsMap[name_1];
6374 if (name_1 === 'v-for') {
6375 checkFor(node, "v-for=\"".concat(value, "\""), warn, range);
6376 }
6377 else if (name_1 === 'v-slot' || name_1[0] === '#') {
6378 checkFunctionParameterExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6379 }
6380 else if (onRE.test(name_1)) {
6381 checkEvent(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6382 }
6383 else {
6384 checkExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6385 }
6386 }
6387 }
6388 }
6389 if (node.children) {
6390 for (var i = 0; i < node.children.length; i++) {
6391 checkNode(node.children[i], warn);
6392 }
6393 }
6394 }
6395 else if (node.type === 2) {
6396 checkExpression(node.expression, node.text, warn, node);
6397 }
6398 }
6399 function checkEvent(exp, text, warn, range) {
6400 var stripped = exp.replace(stripStringRE, '');
6401 var keywordMatch = stripped.match(unaryOperatorsRE);
6402 if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
6403 warn("avoid using JavaScript unary operator as property name: " +
6404 "\"".concat(keywordMatch[0], "\" in expression ").concat(text.trim()), range);
6405 }
6406 checkExpression(exp, text, warn, range);
6407 }
6408 function checkFor(node, text, warn, range) {
6409 checkExpression(node.for || '', text, warn, range);
6410 checkIdentifier(node.alias, 'v-for alias', text, warn, range);
6411 checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);
6412 checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);
6413 }
6414 function checkIdentifier(ident, type, text, warn, range) {
6415 if (typeof ident === 'string') {
6416 try {
6417 new Function("var ".concat(ident, "=_"));
6418 }
6419 catch (e) {
6420 warn("invalid ".concat(type, " \"").concat(ident, "\" in expression: ").concat(text.trim()), range);
6421 }
6422 }
6423 }
6424 function checkExpression(exp, text, warn, range) {
6425 try {
6426 new Function("return ".concat(exp));
6427 }
6428 catch (e) {
6429 var keywordMatch = exp
6430 .replace(stripStringRE, '')
6431 .match(prohibitedKeywordRE);
6432 if (keywordMatch) {
6433 warn("avoid using JavaScript keyword as property name: " +
6434 "\"".concat(keywordMatch[0], "\"\n Raw expression: ").concat(text.trim()), range);
6435 }
6436 else {
6437 warn("invalid expression: ".concat(e.message, " in\n\n") +
6438 " ".concat(exp, "\n\n") +
6439 " Raw expression: ".concat(text.trim(), "\n"), range);
6440 }
6441 }
6442 }
6443 function checkFunctionParameterExpression(exp, text, warn, range) {
6444 try {
6445 new Function(exp, '');
6446 }
6447 catch (e) {
6448 warn("invalid function parameter expression: ".concat(e.message, " in\n\n") +
6449 " ".concat(exp, "\n\n") +
6450 " Raw expression: ".concat(text.trim(), "\n"), range);
6451 }
6452 }
6453
6454 var range = 2;
6455 function generateCodeFrame(source, start, end) {
6456 if (start === void 0) { start = 0; }
6457 if (end === void 0) { end = source.length; }
6458 var lines = source.split(/\r?\n/);
6459 var count = 0;
6460 var res = [];
6461 for (var i = 0; i < lines.length; i++) {
6462 count += lines[i].length + 1;
6463 if (count >= start) {
6464 for (var j = i - range; j <= i + range || end > count; j++) {
6465 if (j < 0 || j >= lines.length)
6466 continue;
6467 res.push("".concat(j + 1).concat(repeat(" ", 3 - String(j + 1).length), "| ").concat(lines[j]));
6468 var lineLength = lines[j].length;
6469 if (j === i) {
6470 // push underline
6471 var pad = start - (count - lineLength) + 1;
6472 var length_1 = end > count ? lineLength - pad : end - start;
6473 res.push(" | " + repeat(" ", pad) + repeat("^", length_1));
6474 }
6475 else if (j > i) {
6476 if (end > count) {
6477 var length_2 = Math.min(end - count, lineLength);
6478 res.push(" | " + repeat("^", length_2));
6479 }
6480 count += lineLength + 1;
6481 }
6482 }
6483 break;
6484 }
6485 }
6486 return res.join('\n');
6487 }
6488 function repeat(str, n) {
6489 var result = '';
6490 if (n > 0) {
6491 // eslint-disable-next-line no-constant-condition
6492 while (true) {
6493 // eslint-disable-line
6494 if (n & 1)
6495 result += str;
6496 n >>>= 1;
6497 if (n <= 0)
6498 break;
6499 str += str;
6500 }
6501 }
6502 return result;
6503 }
6504
6505 function createFunction(code, errors) {
6506 try {
6507 return new Function(code);
6508 }
6509 catch (err) {
6510 errors.push({ err: err, code: code });
6511 return noop;
6512 }
6513 }
6514 function createCompileToFunctionFn(compile) {
6515 var cache = Object.create(null);
6516 return function compileToFunctions(template, options, vm) {
6517 options = extend({}, options);
6518 var warn = options.warn || warn$2;
6519 delete options.warn;
6520 /* istanbul ignore if */
6521 {
6522 // detect possible CSP restriction
6523 try {
6524 new Function('return 1');
6525 }
6526 catch (e) {
6527 if (e.toString().match(/unsafe-eval|CSP/)) {
6528 warn('It seems you are using the standalone build of Vue.js in an ' +
6529 'environment with Content Security Policy that prohibits unsafe-eval. ' +
6530 'The template compiler cannot work in this environment. Consider ' +
6531 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
6532 'templates into render functions.');
6533 }
6534 }
6535 }
6536 // check cache
6537 var key = options.delimiters
6538 ? String(options.delimiters) + template
6539 : template;
6540 if (cache[key]) {
6541 return cache[key];
6542 }
6543 // compile
6544 var compiled = compile(template, options);
6545 // check compilation errors/tips
6546 {
6547 if (compiled.errors && compiled.errors.length) {
6548 if (options.outputSourceRange) {
6549 compiled.errors.forEach(function (e) {
6550 warn("Error compiling template:\n\n".concat(e.msg, "\n\n") +
6551 generateCodeFrame(template, e.start, e.end), vm);
6552 });
6553 }
6554 else {
6555 warn("Error compiling template:\n\n".concat(template, "\n\n") +
6556 compiled.errors.map(function (e) { return "- ".concat(e); }).join('\n') +
6557 '\n', vm);
6558 }
6559 }
6560 if (compiled.tips && compiled.tips.length) {
6561 if (options.outputSourceRange) {
6562 compiled.tips.forEach(function (e) { return tip(e.msg, vm); });
6563 }
6564 else {
6565 compiled.tips.forEach(function (msg) { return tip(msg, vm); });
6566 }
6567 }
6568 }
6569 // turn code into functions
6570 var res = {};
6571 var fnGenErrors = [];
6572 res.render = createFunction(compiled.render, fnGenErrors);
6573 res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
6574 return createFunction(code, fnGenErrors);
6575 });
6576 // check function generation errors.
6577 // this should only happen if there is a bug in the compiler itself.
6578 // mostly for codegen development use
6579 /* istanbul ignore if */
6580 {
6581 if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
6582 warn("Failed to generate render function:\n\n" +
6583 fnGenErrors
6584 .map(function (_a) {
6585 var err = _a.err, code = _a.code;
6586 return "".concat(err.toString(), " in\n\n").concat(code, "\n");
6587 })
6588 .join('\n'), vm);
6589 }
6590 }
6591 return (cache[key] = res);
6592 };
6593 }
6594
6595 function createCompilerCreator(baseCompile) {
6596 return function createCompiler(baseOptions) {
6597 function compile(template, options) {
6598 var finalOptions = Object.create(baseOptions);
6599 var errors = [];
6600 var tips = [];
6601 var warn = function (msg, range, tip) {
6602 (tip ? tips : errors).push(msg);
6603 };
6604 if (options) {
6605 if (options.outputSourceRange) {
6606 // $flow-disable-line
6607 var leadingSpaceLength_1 = template.match(/^\s*/)[0].length;
6608 warn = function (msg, range, tip) {
6609 var data = typeof msg === 'string' ? { msg: msg } : msg;
6610 if (range) {
6611 if (range.start != null) {
6612 data.start = range.start + leadingSpaceLength_1;
6613 }
6614 if (range.end != null) {
6615 data.end = range.end + leadingSpaceLength_1;
6616 }
6617 }
6618 (tip ? tips : errors).push(data);
6619 };
6620 }
6621 // merge custom modules
6622 if (options.modules) {
6623 finalOptions.modules = (baseOptions.modules || []).concat(options.modules);
6624 }
6625 // merge custom directives
6626 if (options.directives) {
6627 finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);
6628 }
6629 // copy other options
6630 for (var key in options) {
6631 if (key !== 'modules' && key !== 'directives') {
6632 finalOptions[key] = options[key];
6633 }
6634 }
6635 }
6636 finalOptions.warn = warn;
6637 var compiled = baseCompile(template.trim(), finalOptions);
6638 {
6639 detectErrors(compiled.ast, warn);
6640 }
6641 compiled.errors = errors;
6642 compiled.tips = tips;
6643 return compiled;
6644 }
6645 return {
6646 compile: compile,
6647 compileToFunctions: createCompileToFunctionFn(compile)
6648 };
6649 };
6650 }
6651
6652 // `createCompilerCreator` allows creating compilers that use alternative
6653 // parser/optimizer/codegen, e.g the SSR optimizing compiler.
6654 // Here we just export a default compiler using the default parts.
6655 var createCompiler$1 = createCompilerCreator(function baseCompile(template, options) {
6656 var ast = parse(template.trim(), options);
6657 if (options.optimize !== false) {
6658 optimize$1(ast, options);
6659 }
6660 var code = generate$1(ast, options);
6661 return {
6662 ast: ast,
6663 render: code.render,
6664 staticRenderFns: code.staticRenderFns
6665 };
6666 });
6667
6668 var _a$1 = createCompiler$1(baseOptions), compile$1 = _a$1.compile, compileToFunctions$1 = _a$1.compileToFunctions;
6669
6670 var isAttr = makeMap('accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' +
6671 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' +
6672 'checked,cite,class,code,codebase,color,cols,colspan,content,' +
6673 'contenteditable,contextmenu,controls,coords,data,datetime,default,' +
6674 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,for,' +
6675 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' +
6676 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
6677 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
6678 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +
6679 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' +
6680 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' +
6681 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' +
6682 'target,title,usemap,value,width,wrap');
6683 /* istanbul ignore next */
6684 var isRenderableAttr = function (name) {
6685 return (isAttr(name) || name.indexOf('data-') === 0 || name.indexOf('aria-') === 0);
6686 };
6687 var propsToAttrMap = {
6688 acceptCharset: 'accept-charset',
6689 className: 'class',
6690 htmlFor: 'for',
6691 httpEquiv: 'http-equiv'
6692 };
6693 var ESC = {
6694 '<': '&lt;',
6695 '>': '&gt;',
6696 '"': '&quot;',
6697 '&': '&amp;'
6698 };
6699 function escape(s) {
6700 return s.replace(/[<>"&]/g, escapeChar);
6701 }
6702 function escapeChar(a) {
6703 return ESC[a] || a;
6704 }
6705
6706 var plainStringRE = /^"(?:[^"\\]|\\.)*"$|^'(?:[^'\\]|\\.)*'$/;
6707 // let the model AST transform translate v-model into appropriate
6708 // props bindings
6709 function applyModelTransform(el, state) {
6710 if (el.directives) {
6711 for (var i = 0; i < el.directives.length; i++) {
6712 var dir = el.directives[i];
6713 if (dir.name === 'model') {
6714 state.directives.model(el, dir, state.warn);
6715 // remove value for textarea as its converted to text
6716 if (el.tag === 'textarea' && el.props) {
6717 el.props = el.props.filter(function (p) { return p.name !== 'value'; });
6718 }
6719 break;
6720 }
6721 }
6722 }
6723 }
6724 function genAttrSegments(attrs) {
6725 return attrs.map(function (_a) {
6726 var name = _a.name, value = _a.value;
6727 return genAttrSegment(name, value);
6728 });
6729 }
6730 function genDOMPropSegments(props, attrs) {
6731 var segments = [];
6732 props.forEach(function (_a) {
6733 var name = _a.name, value = _a.value;
6734 name = propsToAttrMap[name] || name.toLowerCase();
6735 if (isRenderableAttr(name) &&
6736 !(attrs && attrs.some(function (a) { return a.name === name; }))) {
6737 segments.push(genAttrSegment(name, value));
6738 }
6739 });
6740 return segments;
6741 }
6742 function genAttrSegment(name, value) {
6743 if (plainStringRE.test(value)) {
6744 // force double quote
6745 value = value.replace(/^'|'$/g, '"');
6746 // force enumerated attr to "true"
6747 if (isEnumeratedAttr(name) && value !== "\"false\"") {
6748 value = "\"true\"";
6749 }
6750 return {
6751 type: RAW,
6752 value: isBooleanAttr(name)
6753 ? " ".concat(name, "=\"").concat(name, "\"")
6754 : value === '""'
6755 ? " ".concat(name)
6756 : " ".concat(name, "=\"").concat(JSON.parse(value), "\"")
6757 };
6758 }
6759 else {
6760 return {
6761 type: EXPRESSION,
6762 value: "_ssrAttr(".concat(JSON.stringify(name), ",").concat(value, ")")
6763 };
6764 }
6765 }
6766 function genClassSegments(staticClass, classBinding) {
6767 if (staticClass && !classBinding) {
6768 return [{ type: RAW, value: " class=\"".concat(JSON.parse(staticClass), "\"") }];
6769 }
6770 else {
6771 return [
6772 {
6773 type: EXPRESSION,
6774 value: "_ssrClass(".concat(staticClass || 'null', ",").concat(classBinding || 'null', ")")
6775 }
6776 ];
6777 }
6778 }
6779 function genStyleSegments(staticStyle, parsedStaticStyle, styleBinding, vShowExpression) {
6780 if (staticStyle && !styleBinding && !vShowExpression) {
6781 return [{ type: RAW, value: " style=".concat(JSON.stringify(staticStyle)) }];
6782 }
6783 else {
6784 return [
6785 {
6786 type: EXPRESSION,
6787 value: "_ssrStyle(".concat(parsedStaticStyle || 'null', ",").concat(styleBinding || 'null', ", ").concat(vShowExpression
6788 ? "{ display: (".concat(vShowExpression, ") ? '' : 'none' }")
6789 : 'null', ")")
6790 }
6791 ];
6792 }
6793 }
6794
6795 /**
6796 * In SSR, the vdom tree is generated only once and never patched, so
6797 * we can optimize most element / trees into plain string render functions.
6798 * The SSR optimizer walks the AST tree to detect optimizable elements and trees.
6799 *
6800 * The criteria for SSR optimizability is quite a bit looser than static tree
6801 * detection (which is designed for client re-render). In SSR we bail only for
6802 * components/slots/custom directives.
6803 */
6804 // optimizability constants
6805 var optimizability = {
6806 FALSE: 0,
6807 FULL: 1,
6808 SELF: 2,
6809 CHILDREN: 3,
6810 PARTIAL: 4 // self un-optimizable with some un-optimizable children
6811 };
6812 var isPlatformReservedTag;
6813 function optimize(root, options) {
6814 if (!root)
6815 return;
6816 isPlatformReservedTag = options.isReservedTag || no;
6817 walk(root, true);
6818 }
6819 function walk(node, isRoot) {
6820 if (isUnOptimizableTree(node)) {
6821 node.ssrOptimizability = optimizability.FALSE;
6822 return;
6823 }
6824 // root node or nodes with custom directives should always be a VNode
6825 var selfUnoptimizable = isRoot || hasCustomDirective(node);
6826 var check = function (child) {
6827 if (child.ssrOptimizability !== optimizability.FULL) {
6828 node.ssrOptimizability = selfUnoptimizable
6829 ? optimizability.PARTIAL
6830 : optimizability.SELF;
6831 }
6832 };
6833 if (selfUnoptimizable) {
6834 node.ssrOptimizability = optimizability.CHILDREN;
6835 }
6836 if (node.type === 1) {
6837 for (var i = 0, l = node.children.length; i < l; i++) {
6838 var child = node.children[i];
6839 walk(child);
6840 check(child);
6841 }
6842 if (node.ifConditions) {
6843 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
6844 var block = node.ifConditions[i].block;
6845 walk(block, isRoot);
6846 check(block);
6847 }
6848 }
6849 if (node.ssrOptimizability == null ||
6850 (!isRoot && (node.attrsMap['v-html'] || node.attrsMap['v-text']))) {
6851 node.ssrOptimizability = optimizability.FULL;
6852 }
6853 else {
6854 node.children = optimizeSiblings(node);
6855 }
6856 }
6857 else {
6858 node.ssrOptimizability = optimizability.FULL;
6859 }
6860 }
6861 function optimizeSiblings(el) {
6862 var children = el.children;
6863 var optimizedChildren = [];
6864 var currentOptimizableGroup = [];
6865 var pushGroup = function () {
6866 if (currentOptimizableGroup.length) {
6867 optimizedChildren.push({
6868 type: 1,
6869 parent: el,
6870 tag: 'template',
6871 attrsList: [],
6872 attrsMap: {},
6873 rawAttrsMap: {},
6874 children: currentOptimizableGroup,
6875 ssrOptimizability: optimizability.FULL
6876 });
6877 }
6878 currentOptimizableGroup = [];
6879 };
6880 for (var i = 0; i < children.length; i++) {
6881 var c = children[i];
6882 if (c.ssrOptimizability === optimizability.FULL) {
6883 currentOptimizableGroup.push(c);
6884 }
6885 else {
6886 // wrap fully-optimizable adjacent siblings inside a template tag
6887 // so that they can be optimized into a single ssrNode by codegen
6888 pushGroup();
6889 optimizedChildren.push(c);
6890 }
6891 }
6892 pushGroup();
6893 return optimizedChildren;
6894 }
6895 function isUnOptimizableTree(node) {
6896 if (node.type === 2 || node.type === 3) {
6897 // text or expression
6898 return false;
6899 }
6900 return (isBuiltInTag(node.tag) || // built-in (slot, component)
6901 !isPlatformReservedTag(node.tag) || // custom component
6902 !!node.component || // "is" component
6903 isSelectWithModel(node) // <select v-model> requires runtime inspection
6904 );
6905 }
6906 var isBuiltInDir = makeMap('text,html,show,on,bind,model,pre,cloak,once');
6907 function hasCustomDirective(node) {
6908 return (node.type === 1 &&
6909 node.directives &&
6910 node.directives.some(function (d) { return !isBuiltInDir(d.name); }));
6911 }
6912 // <select v-model> cannot be optimized because it requires a runtime check
6913 // to determine proper selected option
6914 function isSelectWithModel(node) {
6915 return (node.type === 1 &&
6916 node.tag === 'select' &&
6917 node.directives != null &&
6918 node.directives.some(function (d) { return d.name === 'model'; }));
6919 }
6920
6921 // The SSR codegen is essentially extending the default codegen to handle
6922 // segment types
6923 var RAW = 0;
6924 var INTERPOLATION = 1;
6925 var EXPRESSION = 2;
6926 function generate(ast, options) {
6927 var state = new CodegenState(options);
6928 var code = ast ? genSSRElement(ast, state) : '_c("div")';
6929 return {
6930 render: "with(this){return ".concat(code, "}"),
6931 staticRenderFns: state.staticRenderFns
6932 };
6933 }
6934 function genSSRElement(el, state) {
6935 if (el.for && !el.forProcessed) {
6936 return genFor(el, state, genSSRElement);
6937 }
6938 else if (el.if && !el.ifProcessed) {
6939 return genIf(el, state, genSSRElement);
6940 }
6941 else if (el.tag === 'template' && !el.slotTarget) {
6942 return el.ssrOptimizability === optimizability.FULL
6943 ? genChildrenAsStringNode(el, state)
6944 : genSSRChildren(el, state) || 'void 0';
6945 }
6946 switch (el.ssrOptimizability) {
6947 case optimizability.FULL:
6948 // stringify whole tree
6949 return genStringElement(el, state);
6950 case optimizability.SELF:
6951 // stringify self and check children
6952 return genStringElementWithChildren(el, state);
6953 case optimizability.CHILDREN:
6954 // generate self as VNode and stringify children
6955 return genNormalElement(el, state, true);
6956 case optimizability.PARTIAL:
6957 // generate self as VNode and check children
6958 return genNormalElement(el, state, false);
6959 default:
6960 // bail whole tree
6961 return genElement(el, state);
6962 }
6963 }
6964 function genNormalElement(el, state, stringifyChildren) {
6965 var data = el.plain ? undefined : genData(el, state);
6966 var children = stringifyChildren
6967 ? "[".concat(genChildrenAsStringNode(el, state), "]")
6968 : genSSRChildren(el, state, true);
6969 return "_c('".concat(el.tag, "'").concat(data ? ",".concat(data) : '').concat(children ? ",".concat(children) : '', ")");
6970 }
6971 function genSSRChildren(el, state, checkSkip) {
6972 return genChildren(el, state, checkSkip, genSSRElement, genSSRNode);
6973 }
6974 function genSSRNode(el, state) {
6975 return el.type === 1 ? genSSRElement(el, state) : genText(el);
6976 }
6977 function genChildrenAsStringNode(el, state) {
6978 return el.children.length
6979 ? "_ssrNode(".concat(flattenSegments(childrenToSegments(el, state)), ")")
6980 : '';
6981 }
6982 function genStringElement(el, state) {
6983 return "_ssrNode(".concat(elementToString(el, state), ")");
6984 }
6985 function genStringElementWithChildren(el, state) {
6986 var children = genSSRChildren(el, state, true);
6987 return "_ssrNode(".concat(flattenSegments(elementToOpenTagSegments(el, state)), ",\"</").concat(el.tag, ">\"").concat(children ? ",".concat(children) : '', ")");
6988 }
6989 function elementToString(el, state) {
6990 return "(".concat(flattenSegments(elementToSegments(el, state)), ")");
6991 }
6992 function elementToSegments(el, state) {
6993 // v-for / v-if
6994 if (el.for && !el.forProcessed) {
6995 el.forProcessed = true;
6996 return [
6997 {
6998 type: EXPRESSION,
6999 value: genFor(el, state, elementToString, '_ssrList')
7000 }
7001 ];
7002 }
7003 else if (el.if && !el.ifProcessed) {
7004 el.ifProcessed = true;
7005 return [
7006 {
7007 type: EXPRESSION,
7008 value: genIf(el, state, elementToString, '"<!---->"')
7009 }
7010 ];
7011 }
7012 else if (el.tag === 'template') {
7013 return childrenToSegments(el, state);
7014 }
7015 var openSegments = elementToOpenTagSegments(el, state);
7016 var childrenSegments = childrenToSegments(el, state);
7017 var isUnaryTag = state.options.isUnaryTag;
7018 var close = isUnaryTag && isUnaryTag(el.tag)
7019 ? []
7020 : [{ type: RAW, value: "</".concat(el.tag, ">") }];
7021 return openSegments.concat(childrenSegments, close);
7022 }
7023 function elementToOpenTagSegments(el, state) {
7024 applyModelTransform(el, state);
7025 var binding;
7026 var segments = [{ type: RAW, value: "<".concat(el.tag) }];
7027 // attrs
7028 if (el.attrs) {
7029 segments.push.apply(segments, genAttrSegments(el.attrs));
7030 }
7031 // domProps
7032 if (el.props) {
7033 segments.push.apply(segments, genDOMPropSegments(el.props, el.attrs));
7034 }
7035 // v-bind="object"
7036 if ((binding = el.attrsMap['v-bind'])) {
7037 segments.push({ type: EXPRESSION, value: "_ssrAttrs(".concat(binding, ")") });
7038 }
7039 // v-bind.prop="object"
7040 if ((binding = el.attrsMap['v-bind.prop'])) {
7041 segments.push({ type: EXPRESSION, value: "_ssrDOMProps(".concat(binding, ")") });
7042 }
7043 // class
7044 if (el.staticClass || el.classBinding) {
7045 segments.push.apply(segments, genClassSegments(el.staticClass, el.classBinding));
7046 }
7047 // style & v-show
7048 if (el.staticStyle || el.styleBinding || el.attrsMap['v-show']) {
7049 segments.push.apply(segments, genStyleSegments(el.attrsMap.style, el.staticStyle, el.styleBinding, el.attrsMap['v-show']));
7050 }
7051 // _scopedId
7052 if (state.options.scopeId) {
7053 segments.push({ type: RAW, value: " ".concat(state.options.scopeId) });
7054 }
7055 segments.push({ type: RAW, value: ">" });
7056 return segments;
7057 }
7058 function childrenToSegments(el, state) {
7059 var binding;
7060 if ((binding = el.attrsMap['v-html'])) {
7061 return [{ type: EXPRESSION, value: "_s(".concat(binding, ")") }];
7062 }
7063 if ((binding = el.attrsMap['v-text'])) {
7064 return [{ type: INTERPOLATION, value: "_s(".concat(binding, ")") }];
7065 }
7066 if (el.tag === 'textarea' && (binding = el.attrsMap['v-model'])) {
7067 return [{ type: INTERPOLATION, value: "_s(".concat(binding, ")") }];
7068 }
7069 return el.children ? nodesToSegments(el.children, state) : [];
7070 }
7071 function nodesToSegments(children, state) {
7072 var segments = [];
7073 for (var i = 0; i < children.length; i++) {
7074 var c = children[i];
7075 if (c.type === 1) {
7076 segments.push.apply(segments, elementToSegments(c, state));
7077 }
7078 else if (c.type === 2) {
7079 segments.push({ type: INTERPOLATION, value: c.expression });
7080 }
7081 else if (c.type === 3) {
7082 var text = escape(c.text);
7083 if (c.isComment) {
7084 text = '<!--' + text + '-->';
7085 }
7086 segments.push({ type: RAW, value: text });
7087 }
7088 }
7089 return segments;
7090 }
7091 function flattenSegments(segments) {
7092 var mergedSegments = [];
7093 var textBuffer = '';
7094 var pushBuffer = function () {
7095 if (textBuffer) {
7096 mergedSegments.push(JSON.stringify(textBuffer));
7097 textBuffer = '';
7098 }
7099 };
7100 for (var i = 0; i < segments.length; i++) {
7101 var s = segments[i];
7102 if (s.type === RAW) {
7103 textBuffer += s.value;
7104 }
7105 else if (s.type === INTERPOLATION) {
7106 pushBuffer();
7107 mergedSegments.push("_ssrEscape(".concat(s.value, ")"));
7108 }
7109 else if (s.type === EXPRESSION) {
7110 pushBuffer();
7111 mergedSegments.push("(".concat(s.value, ")"));
7112 }
7113 }
7114 pushBuffer();
7115 return mergedSegments.join('+');
7116 }
7117
7118 var createCompiler = createCompilerCreator(function baseCompile(template, options) {
7119 var ast = parse(template.trim(), options);
7120 optimize(ast, options);
7121 var code = generate(ast, options);
7122 return {
7123 ast: ast,
7124 render: code.render,
7125 staticRenderFns: code.staticRenderFns
7126 };
7127 });
7128
7129 var _a = createCompiler(baseOptions), compile = _a.compile, compileToFunctions = _a.compileToFunctions;
7130
7131 exports.compile = compile$1;
7132 exports.compileToFunctions = compileToFunctions$1;
7133 exports.generateCodeFrame = generateCodeFrame;
7134 exports.parseComponent = parseComponent;
7135 exports.ssrCompile = compile;
7136 exports.ssrCompileToFunctions = compileToFunctions;
7137
7138 Object.defineProperty(exports, '__esModule', { value: true });
7139
7140}));